{
  "contractName": "IdentityRegistry",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_trustedIssuersRegistry",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_claimTopicsRegistry",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_identityStorage",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "AgentAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "AgentRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "claimTopicsRegistry",
          "type": "address"
        }
      ],
      "name": "ClaimTopicsRegistrySet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "investorAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint16",
          "name": "country",
          "type": "uint16"
        }
      ],
      "name": "CountryUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "investorAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "contract IIdentity",
          "name": "identity",
          "type": "address"
        }
      ],
      "name": "IdentityRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "investorAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "contract IIdentity",
          "name": "identity",
          "type": "address"
        }
      ],
      "name": "IdentityRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "identityStorage",
          "type": "address"
        }
      ],
      "name": "IdentityStorageSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IIdentity",
          "name": "oldIdentity",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "contract IIdentity",
          "name": "newIdentity",
          "type": "address"
        }
      ],
      "name": "IdentityUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "trustedIssuersRegistry",
          "type": "address"
        }
      ],
      "name": "TrustedIssuersRegistrySet",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "addAgent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "isAgent",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "removeAgent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_userAddress",
          "type": "address"
        }
      ],
      "name": "identity",
      "outputs": [
        {
          "internalType": "contract IIdentity",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_userAddress",
          "type": "address"
        }
      ],
      "name": "investorCountry",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "issuersRegistry",
      "outputs": [
        {
          "internalType": "contract ITrustedIssuersRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "topicsRegistry",
      "outputs": [
        {
          "internalType": "contract IClaimTopicsRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "identityStorage",
      "outputs": [
        {
          "internalType": "contract IIdentityRegistryStorage",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_userAddress",
          "type": "address"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_identity",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "_country",
          "type": "uint16"
        }
      ],
      "name": "registerIdentity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_userAddresses",
          "type": "address[]"
        },
        {
          "internalType": "contract IIdentity[]",
          "name": "_identities",
          "type": "address[]"
        },
        {
          "internalType": "uint16[]",
          "name": "_countries",
          "type": "uint16[]"
        }
      ],
      "name": "batchRegisterIdentity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_userAddress",
          "type": "address"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_identity",
          "type": "address"
        }
      ],
      "name": "updateIdentity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_userAddress",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "_country",
          "type": "uint16"
        }
      ],
      "name": "updateCountry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_userAddress",
          "type": "address"
        }
      ],
      "name": "deleteIdentity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_userAddress",
          "type": "address"
        }
      ],
      "name": "isVerified",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_identityRegistryStorage",
          "type": "address"
        }
      ],
      "name": "setIdentityRegistryStorage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_claimTopicsRegistry",
          "type": "address"
        }
      ],
      "name": "setClaimTopicsRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_trustedIssuersRegistry",
          "type": "address"
        }
      ],
      "name": "setTrustedIssuersRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_userAddress",
          "type": "address"
        }
      ],
      "name": "contains",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnershipOnIdentityRegistryContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "addAgentOnIdentityRegistryContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "removeAgentOnIdentityRegistryContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustedIssuersRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_claimTopicsRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_identityStorage\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_agent\",\"type\":\"address\"}],\"name\":\"AgentAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_agent\",\"type\":\"address\"}],\"name\":\"AgentRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimTopicsRegistry\",\"type\":\"address\"}],\"name\":\"ClaimTopicsRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"investorAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"country\",\"type\":\"uint16\"}],\"name\":\"CountryUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"investorAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IIdentity\",\"name\":\"identity\",\"type\":\"address\"}],\"name\":\"IdentityRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"investorAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IIdentity\",\"name\":\"identity\",\"type\":\"address\"}],\"name\":\"IdentityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"identityStorage\",\"type\":\"address\"}],\"name\":\"IdentityStorageSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IIdentity\",\"name\":\"oldIdentity\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IIdentity\",\"name\":\"newIdentity\",\"type\":\"address\"}],\"name\":\"IdentityUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trustedIssuersRegistry\",\"type\":\"address\"}],\"name\":\"TrustedIssuersRegistrySet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_agent\",\"type\":\"address\"}],\"name\":\"addAgent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_agent\",\"type\":\"address\"}],\"name\":\"addAgentOnIdentityRegistryContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_userAddresses\",\"type\":\"address[]\"},{\"internalType\":\"contract IIdentity[]\",\"name\":\"_identities\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"_countries\",\"type\":\"uint16[]\"}],\"name\":\"batchRegisterIdentity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_userAddress\",\"type\":\"address\"}],\"name\":\"contains\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_userAddress\",\"type\":\"address\"}],\"name\":\"deleteIdentity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_userAddress\",\"type\":\"address\"}],\"name\":\"identity\",\"outputs\":[{\"internalType\":\"contract IIdentity\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identityStorage\",\"outputs\":[{\"internalType\":\"contract IIdentityRegistryStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_userAddress\",\"type\":\"address\"}],\"name\":\"investorCountry\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_agent\",\"type\":\"address\"}],\"name\":\"isAgent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_userAddress\",\"type\":\"address\"}],\"name\":\"isVerified\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"issuersRegistry\",\"outputs\":[{\"internalType\":\"contract ITrustedIssuersRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_userAddress\",\"type\":\"address\"},{\"internalType\":\"contract IIdentity\",\"name\":\"_identity\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_country\",\"type\":\"uint16\"}],\"name\":\"registerIdentity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_agent\",\"type\":\"address\"}],\"name\":\"removeAgent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_agent\",\"type\":\"address\"}],\"name\":\"removeAgentOnIdentityRegistryContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_claimTopicsRegistry\",\"type\":\"address\"}],\"name\":\"setClaimTopicsRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_identityRegistryStorage\",\"type\":\"address\"}],\"name\":\"setIdentityRegistryStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustedIssuersRegistry\",\"type\":\"address\"}],\"name\":\"setTrustedIssuersRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"topicsRegistry\",\"outputs\":[{\"internalType\":\"contract IClaimTopicsRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnershipOnIdentityRegistryContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_userAddress\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_country\",\"type\":\"uint16\"}],\"name\":\"updateCountry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_userAddress\",\"type\":\"address\"},{\"internalType\":\"contract IIdentity\",\"name\":\"_identity\",\"type\":\"address\"}],\"name\":\"updateIdentity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addAgentOnIdentityRegistryContract(address)\":{\"details\":\"See {IIdentityRegistry-addAgentOnIdentityRegistryContract}.\"},\"batchRegisterIdentity(address[],address[],uint16[])\":{\"details\":\"See {IIdentityRegistry-batchRegisterIdentity}.\"},\"constructor\":{\"details\":\"the constructor initiates the Identity Registry smart contract\",\"params\":{\"_claimTopicsRegistry\":\"the claim topics registry linked to the Identity Registry\",\"_identityStorage\":\"the identity registry storage linked to the Identity Registry  emits a `ClaimTopicsRegistrySet` event  emits a `TrustedIssuersRegistrySet` event  emits an `IdentityStorageSet` event\",\"_trustedIssuersRegistry\":\"the trusted issuers registry linked to the Identity Registry\"}},\"contains(address)\":{\"details\":\"See {IIdentityRegistry-contains}.\"},\"deleteIdentity(address)\":{\"details\":\"See {IIdentityRegistry-deleteIdentity}.\"},\"identity(address)\":{\"details\":\"See {IIdentityRegistry-identity}.\"},\"identityStorage()\":{\"details\":\"See {IIdentityRegistry-identityStorage}.\"},\"investorCountry(address)\":{\"details\":\"See {IIdentityRegistry-investorCountry}.\"},\"isVerified(address)\":{\"details\":\"See {IIdentityRegistry-isVerified}.\"},\"issuersRegistry()\":{\"details\":\"See {IIdentityRegistry-issuersRegistry}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"registerIdentity(address,address,uint16)\":{\"details\":\"See {IIdentityRegistry-registerIdentity}.\"},\"removeAgentOnIdentityRegistryContract(address)\":{\"details\":\"See {IIdentityRegistry-removeAgentOnIdentityRegistryContract}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setClaimTopicsRegistry(address)\":{\"details\":\"See {IIdentityRegistry-setClaimTopicsRegistry}.\"},\"setIdentityRegistryStorage(address)\":{\"details\":\"See {IIdentityRegistry-setIdentityRegistryStorage}.\"},\"setTrustedIssuersRegistry(address)\":{\"details\":\"See {IIdentityRegistry-setTrustedIssuersRegistry}.\"},\"topicsRegistry()\":{\"details\":\"See {IIdentityRegistry-topicsRegistry}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"transferOwnershipOnIdentityRegistryContract(address)\":{\"details\":\"See {IIdentityRegistry-transferOwnershipOnIdentityRegistryContract}.\"},\"updateCountry(address,uint16)\":{\"details\":\"See {IIdentityRegistry-updateCountry}.\"},\"updateIdentity(address,address)\":{\"details\":\"See {IIdentityRegistry-updateIdentity}.\"}},\"stateVariables\":{\"tokenIdentityStorage\":{\"details\":\"Address of the IdentityRegistryStorage Contract\"},\"tokenIssuersRegistry\":{\"details\":\"Address of the TrustedIssuersRegistry Contract\"},\"tokenTopicsRegistry\":{\"details\":\"Address of the ClaimTopicsRegistry Contract\"}},\"version\":1},\"userdoc\":{\"events\":{\"ClaimTopicsRegistrySet(address)\":{\"notice\":\"this event is emitted when the ClaimTopicsRegistry has been set for the IdentityRegistry  the event is emitted by the IdentityRegistry constructor  `claimTopicsRegistry` is the address of the Claim Topics Registry contract\"},\"CountryUpdated(address,uint16)\":{\"notice\":\"this event is emitted when an Identity's country has been updated  the event is emitted by the 'updateCountry' function  `investorAddress` is the address on which the country has been updated  `country` is the numeric code (ISO 3166-1) of the new country\"},\"IdentityRegistered(address,address)\":{\"notice\":\"this event is emitted when an Identity is registered into the Identity Registry.  the event is emitted by the 'registerIdentity' function  `investorAddress` is the address of the investor's wallet  `identity` is the address of the Identity smart contract (onchainID)\"},\"IdentityRemoved(address,address)\":{\"notice\":\"this event is emitted when an Identity is removed from the Identity Registry.  the event is emitted by the 'deleteIdentity' function  `investorAddress` is the address of the investor's wallet  `identity` is the address of the Identity smart contract (onchainID)\"},\"IdentityStorageSet(address)\":{\"notice\":\"this event is emitted when the IdentityRegistryStorage has been set for the IdentityRegistry  the event is emitted by the IdentityRegistry constructor  `identityStorage` is the address of the Identity Registry Storage contract\"},\"IdentityUpdated(address,address)\":{\"notice\":\"this event is emitted when an Identity has been updated  the event is emitted by the 'updateIdentity' function  `oldIdentity` is the old Identity contract's address to update  `newIdentity` is the new Identity contract's\"},\"TrustedIssuersRegistrySet(address)\":{\"notice\":\"this event is emitted when the ClaimTopicsRegistry has been set for the IdentityRegistry  the event is emitted by the IdentityRegistry constructor  `trustedIssuersRegistry` is the address of the Trusted Issuers Registry contract\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/registry/IdentityRegistry.sol\":\"IdentityRegistry\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10},\"remappings\":[]},\"sources\":{\"@onchain-id/solidity/contracts/interface/IClaimIssuer.sol\":{\"keccak256\":\"0xd0493be7cb7342962b46f8e2afdca4614ea0fe34a7f493b2da9db7d361a9042c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://105232aae24e3d0fcb4c80c00793b61b6019f6127c0ec6f9e3082ae01b2e778b\",\"dweb:/ipfs/QmV5C1wbq7H5H6DiakafSX5agAAP6rQSZ5qq7Qgq6VLkXo\"]},\"@onchain-id/solidity/contracts/interface/IERC734.sol\":{\"keccak256\":\"0x3302de9e9fe7a548cb7395b6fda38f952f6a6d1c599dfeee181a1ef80741fc1d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fc9f00e5b2f1523fecf52b1a833e9263a53edbebb7d1458f9004cfd41dd0402e\",\"dweb:/ipfs/QmWcNcVQrg66KeQz39jPgJun7jF3CbdJKHQa19q97n5Hzb\"]},\"@onchain-id/solidity/contracts/interface/IERC735.sol\":{\"keccak256\":\"0x3b77ce6012a96cf0075197cdeb1b98b66ca1722ef23241e40ba6185f03bf4584\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://766e139f0c3cc0c6489561e75df0d8eab8c277f90009e4fa19add4f22bb40d82\",\"dweb:/ipfs/QmcbAReZn9nLcnYn9AHiDmcYJ42JqAU5QSy4dKhUcJUnjy\"]},\"@onchain-id/solidity/contracts/interface/IIdentity.sol\":{\"keccak256\":\"0xdcefbe2a850f9f43e959b9f7ed93fd5b35f29ff3dfbfaac7530af737c9eba7c6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://2e887c7cc67fdb2710c48bed22dbb27880f6dfb84ee93178ad4fcd659099cb96\",\"dweb:/ipfs/QmUuDEsZJC7uQQEErmuNJzePsNgHiTDdS2TuMzG1GRqrC3\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"project:/contracts/registry/IClaimTopicsRegistry.sol\":{\"keccak256\":\"0x95f8fa17a716771125b203f00890eceb20ac3807f7a39a25b644427b1ff81d61\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://460dceb9e88957d5ce002b80748767c80a7e146c9b38b055a3c1ca04586b2009\",\"dweb:/ipfs/QmVdqEpGMRzSpLKBCtPzaPGatBgUyNm3NS5rQnkkYMnc1C\"]},\"project:/contracts/registry/IIdentityRegistry.sol\":{\"keccak256\":\"0x16a31f2d35143f99cc6b83d0cf6e9da9543c2b8561712079098f3a39d12ae32a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7669a9272b1df8e27e0fc3f5f64977b2b16615e585b673383db1eb157a62bf7c\",\"dweb:/ipfs/QmQzXmoFcFyBPehPyiUzGjaKfXJHLEPZMtFTBTgjuCavah\"]},\"project:/contracts/registry/IIdentityRegistryStorage.sol\":{\"keccak256\":\"0x8cd4de1e77c5da8ca2ff732069bc184aef86bcb94f95a5229e5bd6336abbd06d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f88894a3d046940be03a12cc2da3b3fb6efb51e0461fbea060a9a3190cadcf16\",\"dweb:/ipfs/QmNndZUPdpc83A9LungeAsrcencq3CzTum1tkU6KVdSRNC\"]},\"project:/contracts/registry/ITrustedIssuersRegistry.sol\":{\"keccak256\":\"0x01af20f2f537db3122c60b7c6e60e5036e07c673ef9762428b42129f65fcbc60\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://28f514b876c975777fe84bdb9f96ec5c687e4e4ff5d2b14961ba61affc57d46c\",\"dweb:/ipfs/QmdbVRsg1Q71PVHYxy1r7e5MeiMN5hHHDD8vRnXBSr8JiV\"]},\"project:/contracts/registry/IdentityRegistry.sol\":{\"keccak256\":\"0x9f5e386d77238448ac8e214dad94244e4b902756e9a76095d18af542c14b3126\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://c38a372f4e73df5e894ac3f6c0cad0cb6d3f5942a37b946eb9fedd2d8611fdec\",\"dweb:/ipfs/QmUcr8BYHYUUGCQr77siHj7yxFdwBZAMB4vkY8Fjdf4i3C\"]},\"project:/contracts/roles/AgentRole.sol\":{\"keccak256\":\"0x2a264adff17bd254164e69c882dc033d8b7e9bc6eab01c5e7d2ad26324a2c953\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://585dfaafc7e37d38ff6f0c5ca4a8e0ad1e92b0babd1f54762bfaa8c67c1ec2d7\",\"dweb:/ipfs/QmXVnTvX1zVVQoxSZBgKRptSVz22T2vyXC3P89Bsv9x7Jg\"]},\"project:/contracts/roles/Roles.sol\":{\"keccak256\":\"0x9e018cafd4e2a2890d4ed32f0a4e5edf92fe95000f35b15d7932890bd0efdb95\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6c07fd269689b662d782817bc4fdfc00d33fd7e320c20916528fff7853847954\",\"dweb:/ipfs/QmUz39kdgQM8M2W2gcBZ8Vi3mzzSmXUx9NXxTJatYYQJyw\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162001a4638038062001a46833981016040819052620000349162000181565b6200003f3362000114565b600280546001600160a01b038085166001600160a01b031992831681179093556003805487831690841617905560048054918516919092161790556040517f7170bf15b246e880b2369cd7c67d057760d8a35149e8c64dde91efa22bcc76d090600090a26040516001600160a01b038416907f1b98cb79e6f73020175fe87333f1b91ad6a881519c0afe30340c2599b2b4bde090600090a26040516001600160a01b038216907f2fa8b95c1db7afe99e3398f3792f008135cedc1fa26b0bb2ecd2352cd166d53c90600090a2505050620001cb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200017c57600080fd5b919050565b6000806000606084860312156200019757600080fd5b620001a28462000164565b9250620001b26020850162000164565b9150620001c26040850162000164565b90509250925092565b61186b80620001db6000396000f3fe608060405234801561001057600080fd5b50600436106101285760003560e01c80631ffbb0641461012d57806326d941ae146101555780633b239a7f1461016a5780633b3e12f41461017d578063454a03e01461019757806350bc7bda146101aa5780635dbe47e8146101bd5780635e5741f3146101d0578063653dc9f1146101e3578063670af6a9146101f6578063715018a6146102095780637e42683b1461021157806384e79842146102375780638da5cb5b1461024a5780638e098ca11461025257806397a6278e14610265578063a8d29d1d14610278578063b4f3fcb71461028b578063b9209e331461029c578063ce240d9c146102af578063e744d789146102c2578063f0eb5e54146102d5578063f11abfd8146102e8578063f2fde38b146102f9575b600080fd5b61014061013b366004611269565b61030c565b60405190151581526020015b60405180910390f35b610168610163366004611269565b61031f565b005b61016861017836600461129d565b610371565b6002546001600160a01b03165b60405161014c91906112d6565b6101686101a53660046112ea565b610448565b6101686101b8366004611269565b61051d565b6101406101cb366004611269565b610529565b6101686101de366004611269565b610553565b6101686101f1366004611380565b61055c565b610168610204366004611269565b6105fa565b61016861064c565b61022461021f366004611269565b610660565b60405161ffff909116815260200161014c565b610168610245366004611269565b6106d3565b61018a61071d565b610168610260366004611419565b61072c565b610168610273366004611269565b610804565b610168610286366004611269565b61084e565b6003546001600160a01b031661018a565b6101406102aa366004611269565b61091f565b6101686102bd366004611269565b610ed8565b6101686102d0366004611269565b610ee9565b61018a6102e3366004611269565b610f3b565b6004546001600160a01b031661018a565b610168610307366004611269565b610fae565b6000610319600183611024565b92915050565b6103276110a7565b600480546001600160a01b0319166001600160a01b0383169081179091556040517f2fa8b95c1db7afe99e3398f3792f008135cedc1fa26b0bb2ecd2352cd166d53c90600090a250565b61037a3361030c565b61039f5760405162461bcd60e51b815260040161039690611447565b60405180910390fd5b60048054604051639f3418d560e01b81526001600160a01b038581169382019390935261ffff84166024820152911690639f3418d590604401600060405180830381600087803b1580156103f257600080fd5b505af1158015610406573d6000803e3d6000fd5b505060405161ffff841692506001600160a01b03851691507f04ed3b726495c2dca1ff1215d9ca54e1a4030abb5e82b0f6ce55702416cee85390600090a35050565b6104513361030c565b61046d5760405162461bcd60e51b815260040161039690611447565b6004805460405163a53410dd60e01b81526001600160a01b0386811693820193909352848316602482015261ffff8416604482015291169063a53410dd90606401600060405180830381600087803b1580156104c857600080fd5b505af11580156104dc573d6000803e3d6000fd5b50506040516001600160a01b038086169350861691507f6ae73635c50d24a45af6fbd5e016ac4bed179addbc8bf24e04ff0fcc6d33af1990600090a3505050565b610526816106d3565b50565b60008061053583610f3b565b6001600160a01b03160361054b57506000919050565b506001919050565b61052681610804565b60005b858110156105f1576105df87878381811061057c5761057c611495565b90506020020160208101906105919190611269565b8686848181106105a3576105a3611495565b90506020020160208101906105b89190611269565b8585858181106105ca576105ca611495565b90506020020160208101906101a591906114ab565b806105e9816114de565b91505061055f565b50505050505050565b6106026110a7565b600280546001600160a01b0319166001600160a01b0383169081179091556040517f7170bf15b246e880b2369cd7c67d057760d8a35149e8c64dde91efa22bcc76d090600090a250565b6106546110a7565b61065e6000611106565b565b60048054604051631c9f84ef60e21b81526000926001600160a01b039092169163727e13bc91610692918691016112d6565b602060405180830381865afa1580156106af573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031991906114f7565b6106db6110a7565b6106e6600182611156565b6040516001600160a01b038216907ff68e73cec97f2d70aa641fb26e87a4383686e2efacb648f2165aeb02ac562ec590600090a250565b6000546001600160a01b031690565b6107353361030c565b6107515760405162461bcd60e51b815260040161039690611447565b600061075c83610f3b565b60048054604051637402e7c360e11b81526001600160a01b03878116938201939093528583166024820152929350169063e805cf8690604401600060405180830381600087803b1580156107af57600080fd5b505af11580156107c3573d6000803e3d6000fd5b50506040516001600160a01b038086169350841691507fe98082932c8056a0f514da9104e4a66bc2cbaef102ad59d90c4b24220ebf601090600090a3505050565b61080c6110a7565b6108176001826111d2565b6040516001600160a01b038216907fed9c8ad8d5a0a66898ea49d2956929c93ae2e8bd50281b2ed897c5d1a6737e0b90600090a250565b6108573361030c565b6108735760405162461bcd60e51b815260040161039690611447565b6004805460405163cf191bcd60e01b81526001600160a01b039091169163cf191bcd916108a2918591016112d6565b600060405180830381600087803b1580156108bc57600080fd5b505af11580156108d0573d6000803e3d6000fd5b505050506108dd81610f3b565b6001600160a01b0316816001600160a01b03167f59d6590e225b81befe259af056324092801080acbb7feab310eb34678871f32760405160405180910390a350565b60008061092b83610f3b565b6001600160a01b03160361094157506000919050565b600254604080516337c2758160e21b815290516000926001600160a01b03169163df09d60491600480830192869291908290030181865afa15801561098a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109b2919081019061157d565b905080516000036109c65750600192915050565b600080600060608060005b8651811015610ec95760006109e58a610f3b565b6001600160a01b03166380e9e9e1898481518110610a0557610a05611495565b60200260200101516040518263ffffffff1660e01b8152600401610a2b91815260200190565b600060405180830381865afa158015610a48573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a70919081019061157d565b90508051600003610a8b575060009998505050505050505050565b60005b8151811015610eb457610aa08b610f3b565b6001600160a01b031663c9100bcb838381518110610ac057610ac0611495565b60200260200101516040518263ffffffff1660e01b8152600401610ae691815260200190565b600060405180830381865afa158015610b03573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b2b91908101906116a4565b50939b509199509750955093506001600160a01b03861663c0969a6e610b508d610f3b565b8b8681518110610b6257610b62611495565b602002602001015188886040518563ffffffff1660e01b8152600401610b8b9493929190611791565b602060405180830381865afa925050508015610bc4575060408051601f3d908101601f19168201909252610bc1918101906117ca565b60015b610bf25760018251610bd691906117ec565b8103610bed575060009a9950505050505050505050565b610ea2565b808015610c8b57506003548a516001600160a01b03909116906334a899879089908d9088908110610c2557610c25611495565b60200260200101516040518363ffffffff1660e01b8152600401610c4a9291906117ff565b602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b91906117ca565b8015610d035750600354604051633bcbb46960e21b81526001600160a01b039091169063ef2ed1a490610cc2908a906004016112d6565b602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0391906117ca565b15610d0d57825191505b600354604051633bcbb46960e21b81526001600160a01b039091169063ef2ed1a490610d3d908a906004016112d6565b602060405180830381865afa158015610d5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7e91906117ca565b158015610d97575060018351610d9491906117ec565b82145b15610dae575060009b9a5050505050505050505050565b6003548a516001600160a01b03909116906334a899879089908d9088908110610dd957610dd9611495565b60200260200101516040518363ffffffff1660e01b8152600401610dfe9291906117ff565b602060405180830381865afa158015610e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3f91906117ca565b158015610e58575060018351610e5591906117ec565b82145b15610e6f575060009b9a5050505050505050505050565b80158015610e89575060018351610e8691906117ec565b82145b15610ea0575060009b9a5050505050505050505050565b505b80610eac816114de565b915050610a8e565b50508080610ec1906114de565b9150506109d1565b50600198975050505050505050565b610ee06110a7565b61052681610fae565b610ef16110a7565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f1b98cb79e6f73020175fe87333f1b91ad6a881519c0afe30340c2599b2b4bde090600090a250565b60048054604051637988d3a560e01b81526000926001600160a01b0390921691637988d3a591610f6d918691016112d6565b602060405180830381865afa158015610f8a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103199190611818565b610fb66110a7565b6001600160a01b03811661101b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610396565b61052681611106565b60006001600160a01b0382166110875760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b6064820152608401610396565b506001600160a01b03166000908152602091909152604090205460ff1690565b336110b061071d565b6001600160a01b03161461065e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610396565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6111608282611024565b156111ad5760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c65006044820152606401610396565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6111dc8282611024565b6112325760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b6064820152608401610396565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b038116811461052657600080fd5b60006020828403121561127b57600080fd5b813561128681611254565b9392505050565b61ffff8116811461052657600080fd5b600080604083850312156112b057600080fd5b82356112bb81611254565b915060208301356112cb8161128d565b809150509250929050565b6001600160a01b0391909116815260200190565b6000806000606084860312156112ff57600080fd5b833561130a81611254565b9250602084013561131a81611254565b9150604084013561132a8161128d565b809150509250925092565b60008083601f84011261134757600080fd5b5081356001600160401b0381111561135e57600080fd5b6020830191508360208260051b850101111561137957600080fd5b9250929050565b6000806000806000806060878903121561139957600080fd5b86356001600160401b03808211156113b057600080fd5b6113bc8a838b01611335565b909850965060208901359150808211156113d557600080fd5b6113e18a838b01611335565b909650945060408901359150808211156113fa57600080fd5b5061140789828a01611335565b979a9699509497509295939492505050565b6000806040838503121561142c57600080fd5b823561143781611254565b915060208301356112cb81611254565b6020808252602e908201527f4167656e74526f6c653a2063616c6c657220646f6573206e6f7420686176652060408201526d746865204167656e7420726f6c6560901b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156114bd57600080fd5b81356112868161128d565b634e487b7160e01b600052601160045260246000fd5b6000600182016114f0576114f06114c8565b5060010190565b60006020828403121561150957600080fd5b81516112868161128d565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561155257611552611514565b604052919050565b60006001600160401b0382111561157357611573611514565b5060051b60200190565b6000602080838503121561159057600080fd5b82516001600160401b038111156115a657600080fd5b8301601f810185136115b757600080fd5b80516115ca6115c58261155a565b61152a565b81815260059190911b820183019083810190878311156115e957600080fd5b928401925b82841015611607578351825292840192908401906115ee565b979650505050505050565b60005b8381101561162d578181015183820152602001611615565b50506000910152565b60006001600160401b0383111561164f5761164f611514565b611662601f8401601f191660200161152a565b905082815283838301111561167657600080fd5b611286836020830184611612565b600082601f83011261169557600080fd5b61128683835160208501611636565b60008060008060008060c087890312156116bd57600080fd5b865195506020870151945060408701516116d681611254565b60608801519094506001600160401b03808211156116f357600080fd5b6116ff8a838b01611684565b9450608089015191508082111561171557600080fd5b6117218a838b01611684565b935060a089015191508082111561173757600080fd5b508701601f8101891361174957600080fd5b61175889825160208401611636565b9150509295509295509295565b6000815180845261177d816020860160208601611612565b601f01601f19169290920160200192915050565b60018060a01b03851681528360208201526080604082015260006117b86080830185611765565b82810360608401526116078185611765565b6000602082840312156117dc57600080fd5b8151801515811461128657600080fd5b81810381811115610319576103196114c8565b6001600160a01b03929092168252602082015260400190565b60006020828403121561182a57600080fd5b81516112868161125456fea26469706673582212207ee5ed5cffd617d877c97c9e8194bc9f310fff132e95ae4c4c4c3076fbaa2e2164736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101285760003560e01c80631ffbb0641461012d57806326d941ae146101555780633b239a7f1461016a5780633b3e12f41461017d578063454a03e01461019757806350bc7bda146101aa5780635dbe47e8146101bd5780635e5741f3146101d0578063653dc9f1146101e3578063670af6a9146101f6578063715018a6146102095780637e42683b1461021157806384e79842146102375780638da5cb5b1461024a5780638e098ca11461025257806397a6278e14610265578063a8d29d1d14610278578063b4f3fcb71461028b578063b9209e331461029c578063ce240d9c146102af578063e744d789146102c2578063f0eb5e54146102d5578063f11abfd8146102e8578063f2fde38b146102f9575b600080fd5b61014061013b366004611269565b61030c565b60405190151581526020015b60405180910390f35b610168610163366004611269565b61031f565b005b61016861017836600461129d565b610371565b6002546001600160a01b03165b60405161014c91906112d6565b6101686101a53660046112ea565b610448565b6101686101b8366004611269565b61051d565b6101406101cb366004611269565b610529565b6101686101de366004611269565b610553565b6101686101f1366004611380565b61055c565b610168610204366004611269565b6105fa565b61016861064c565b61022461021f366004611269565b610660565b60405161ffff909116815260200161014c565b610168610245366004611269565b6106d3565b61018a61071d565b610168610260366004611419565b61072c565b610168610273366004611269565b610804565b610168610286366004611269565b61084e565b6003546001600160a01b031661018a565b6101406102aa366004611269565b61091f565b6101686102bd366004611269565b610ed8565b6101686102d0366004611269565b610ee9565b61018a6102e3366004611269565b610f3b565b6004546001600160a01b031661018a565b610168610307366004611269565b610fae565b6000610319600183611024565b92915050565b6103276110a7565b600480546001600160a01b0319166001600160a01b0383169081179091556040517f2fa8b95c1db7afe99e3398f3792f008135cedc1fa26b0bb2ecd2352cd166d53c90600090a250565b61037a3361030c565b61039f5760405162461bcd60e51b815260040161039690611447565b60405180910390fd5b60048054604051639f3418d560e01b81526001600160a01b038581169382019390935261ffff84166024820152911690639f3418d590604401600060405180830381600087803b1580156103f257600080fd5b505af1158015610406573d6000803e3d6000fd5b505060405161ffff841692506001600160a01b03851691507f04ed3b726495c2dca1ff1215d9ca54e1a4030abb5e82b0f6ce55702416cee85390600090a35050565b6104513361030c565b61046d5760405162461bcd60e51b815260040161039690611447565b6004805460405163a53410dd60e01b81526001600160a01b0386811693820193909352848316602482015261ffff8416604482015291169063a53410dd90606401600060405180830381600087803b1580156104c857600080fd5b505af11580156104dc573d6000803e3d6000fd5b50506040516001600160a01b038086169350861691507f6ae73635c50d24a45af6fbd5e016ac4bed179addbc8bf24e04ff0fcc6d33af1990600090a3505050565b610526816106d3565b50565b60008061053583610f3b565b6001600160a01b03160361054b57506000919050565b506001919050565b61052681610804565b60005b858110156105f1576105df87878381811061057c5761057c611495565b90506020020160208101906105919190611269565b8686848181106105a3576105a3611495565b90506020020160208101906105b89190611269565b8585858181106105ca576105ca611495565b90506020020160208101906101a591906114ab565b806105e9816114de565b91505061055f565b50505050505050565b6106026110a7565b600280546001600160a01b0319166001600160a01b0383169081179091556040517f7170bf15b246e880b2369cd7c67d057760d8a35149e8c64dde91efa22bcc76d090600090a250565b6106546110a7565b61065e6000611106565b565b60048054604051631c9f84ef60e21b81526000926001600160a01b039092169163727e13bc91610692918691016112d6565b602060405180830381865afa1580156106af573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031991906114f7565b6106db6110a7565b6106e6600182611156565b6040516001600160a01b038216907ff68e73cec97f2d70aa641fb26e87a4383686e2efacb648f2165aeb02ac562ec590600090a250565b6000546001600160a01b031690565b6107353361030c565b6107515760405162461bcd60e51b815260040161039690611447565b600061075c83610f3b565b60048054604051637402e7c360e11b81526001600160a01b03878116938201939093528583166024820152929350169063e805cf8690604401600060405180830381600087803b1580156107af57600080fd5b505af11580156107c3573d6000803e3d6000fd5b50506040516001600160a01b038086169350841691507fe98082932c8056a0f514da9104e4a66bc2cbaef102ad59d90c4b24220ebf601090600090a3505050565b61080c6110a7565b6108176001826111d2565b6040516001600160a01b038216907fed9c8ad8d5a0a66898ea49d2956929c93ae2e8bd50281b2ed897c5d1a6737e0b90600090a250565b6108573361030c565b6108735760405162461bcd60e51b815260040161039690611447565b6004805460405163cf191bcd60e01b81526001600160a01b039091169163cf191bcd916108a2918591016112d6565b600060405180830381600087803b1580156108bc57600080fd5b505af11580156108d0573d6000803e3d6000fd5b505050506108dd81610f3b565b6001600160a01b0316816001600160a01b03167f59d6590e225b81befe259af056324092801080acbb7feab310eb34678871f32760405160405180910390a350565b60008061092b83610f3b565b6001600160a01b03160361094157506000919050565b600254604080516337c2758160e21b815290516000926001600160a01b03169163df09d60491600480830192869291908290030181865afa15801561098a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109b2919081019061157d565b905080516000036109c65750600192915050565b600080600060608060005b8651811015610ec95760006109e58a610f3b565b6001600160a01b03166380e9e9e1898481518110610a0557610a05611495565b60200260200101516040518263ffffffff1660e01b8152600401610a2b91815260200190565b600060405180830381865afa158015610a48573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a70919081019061157d565b90508051600003610a8b575060009998505050505050505050565b60005b8151811015610eb457610aa08b610f3b565b6001600160a01b031663c9100bcb838381518110610ac057610ac0611495565b60200260200101516040518263ffffffff1660e01b8152600401610ae691815260200190565b600060405180830381865afa158015610b03573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b2b91908101906116a4565b50939b509199509750955093506001600160a01b03861663c0969a6e610b508d610f3b565b8b8681518110610b6257610b62611495565b602002602001015188886040518563ffffffff1660e01b8152600401610b8b9493929190611791565b602060405180830381865afa925050508015610bc4575060408051601f3d908101601f19168201909252610bc1918101906117ca565b60015b610bf25760018251610bd691906117ec565b8103610bed575060009a9950505050505050505050565b610ea2565b808015610c8b57506003548a516001600160a01b03909116906334a899879089908d9088908110610c2557610c25611495565b60200260200101516040518363ffffffff1660e01b8152600401610c4a9291906117ff565b602060405180830381865afa158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b91906117ca565b8015610d035750600354604051633bcbb46960e21b81526001600160a01b039091169063ef2ed1a490610cc2908a906004016112d6565b602060405180830381865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0391906117ca565b15610d0d57825191505b600354604051633bcbb46960e21b81526001600160a01b039091169063ef2ed1a490610d3d908a906004016112d6565b602060405180830381865afa158015610d5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7e91906117ca565b158015610d97575060018351610d9491906117ec565b82145b15610dae575060009b9a5050505050505050505050565b6003548a516001600160a01b03909116906334a899879089908d9088908110610dd957610dd9611495565b60200260200101516040518363ffffffff1660e01b8152600401610dfe9291906117ff565b602060405180830381865afa158015610e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3f91906117ca565b158015610e58575060018351610e5591906117ec565b82145b15610e6f575060009b9a5050505050505050505050565b80158015610e89575060018351610e8691906117ec565b82145b15610ea0575060009b9a5050505050505050505050565b505b80610eac816114de565b915050610a8e565b50508080610ec1906114de565b9150506109d1565b50600198975050505050505050565b610ee06110a7565b61052681610fae565b610ef16110a7565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f1b98cb79e6f73020175fe87333f1b91ad6a881519c0afe30340c2599b2b4bde090600090a250565b60048054604051637988d3a560e01b81526000926001600160a01b0390921691637988d3a591610f6d918691016112d6565b602060405180830381865afa158015610f8a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103199190611818565b610fb66110a7565b6001600160a01b03811661101b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610396565b61052681611106565b60006001600160a01b0382166110875760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b6064820152608401610396565b506001600160a01b03166000908152602091909152604090205460ff1690565b336110b061071d565b6001600160a01b03161461065e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610396565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6111608282611024565b156111ad5760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c65006044820152606401610396565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6111dc8282611024565b6112325760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b6064820152608401610396565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b038116811461052657600080fd5b60006020828403121561127b57600080fd5b813561128681611254565b9392505050565b61ffff8116811461052657600080fd5b600080604083850312156112b057600080fd5b82356112bb81611254565b915060208301356112cb8161128d565b809150509250929050565b6001600160a01b0391909116815260200190565b6000806000606084860312156112ff57600080fd5b833561130a81611254565b9250602084013561131a81611254565b9150604084013561132a8161128d565b809150509250925092565b60008083601f84011261134757600080fd5b5081356001600160401b0381111561135e57600080fd5b6020830191508360208260051b850101111561137957600080fd5b9250929050565b6000806000806000806060878903121561139957600080fd5b86356001600160401b03808211156113b057600080fd5b6113bc8a838b01611335565b909850965060208901359150808211156113d557600080fd5b6113e18a838b01611335565b909650945060408901359150808211156113fa57600080fd5b5061140789828a01611335565b979a9699509497509295939492505050565b6000806040838503121561142c57600080fd5b823561143781611254565b915060208301356112cb81611254565b6020808252602e908201527f4167656e74526f6c653a2063616c6c657220646f6573206e6f7420686176652060408201526d746865204167656e7420726f6c6560901b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156114bd57600080fd5b81356112868161128d565b634e487b7160e01b600052601160045260246000fd5b6000600182016114f0576114f06114c8565b5060010190565b60006020828403121561150957600080fd5b81516112868161128d565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561155257611552611514565b604052919050565b60006001600160401b0382111561157357611573611514565b5060051b60200190565b6000602080838503121561159057600080fd5b82516001600160401b038111156115a657600080fd5b8301601f810185136115b757600080fd5b80516115ca6115c58261155a565b61152a565b81815260059190911b820183019083810190878311156115e957600080fd5b928401925b82841015611607578351825292840192908401906115ee565b979650505050505050565b60005b8381101561162d578181015183820152602001611615565b50506000910152565b60006001600160401b0383111561164f5761164f611514565b611662601f8401601f191660200161152a565b905082815283838301111561167657600080fd5b611286836020830184611612565b600082601f83011261169557600080fd5b61128683835160208501611636565b60008060008060008060c087890312156116bd57600080fd5b865195506020870151945060408701516116d681611254565b60608801519094506001600160401b03808211156116f357600080fd5b6116ff8a838b01611684565b9450608089015191508082111561171557600080fd5b6117218a838b01611684565b935060a089015191508082111561173757600080fd5b508701601f8101891361174957600080fd5b61175889825160208401611636565b9150509295509295509295565b6000815180845261177d816020860160208601611612565b601f01601f19169290920160200192915050565b60018060a01b03851681528360208201526080604082015260006117b86080830185611765565b82810360608401526116078185611765565b6000602082840312156117dc57600080fd5b8151801515811461128657600080fd5b81810381811115610319576103196114c8565b6001600160a01b03929092168252602082015260400190565b60006020828403121561182a57600080fd5b81516112868161125456fea26469706673582212207ee5ed5cffd617d877c97c9e8194bc9f310fff132e95ae4c4c4c3076fbaa2e2164736f6c63430008110033",
  "immutableReferences": {},
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:576:54",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:54",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "74:117:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "84:22:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "99:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "93:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "93:13:54"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "84:5:54"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "169:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "178:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "181:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "171:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "171:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "171:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "128:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "139:5:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "154:3:54",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "159:1:54",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "150:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "150:11:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "163:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "146:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "146:19:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "135:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "135:31:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "125:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "125:42:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "118:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "118:50:54"
                  },
                  "nodeType": "YulIf",
                  "src": "115:70:54"
                }
              ]
            },
            "name": "abi_decode_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "53:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "64:5:54",
                "type": ""
              }
            ],
            "src": "14:177:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "311:263:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "357:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "366:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "369:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "359:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "359:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "359:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "332:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "341:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "328:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "328:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "353:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "324:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "324:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "321:52:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "382:50:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "422:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "392:29:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "392:40:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "382:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "441:59:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "485:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "496:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "481:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "481:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "451:29:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "451:49:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "441:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "509:59:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "553:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "564:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "549:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "549:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "519:29:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "519:49:54"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "509:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "261:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "272:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "284:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "292:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "300:6:54",
                "type": ""
              }
            ],
            "src": "196:378:54"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n        value2 := abi_decode_address_fromMemory(add(headStart, 64))\n    }\n}",
      "id": 54,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:16024:54",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:54",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "59:86:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "123:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "132:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "135:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "125:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "125:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "125:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "82:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "93:5:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "108:3:54",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "113:1:54",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "104:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "104:11:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "117:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "100:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "100:19:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "89:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "89:31:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "79:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "79:42:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "72:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "72:50:54"
                  },
                  "nodeType": "YulIf",
                  "src": "69:70:54"
                }
              ]
            },
            "name": "validator_revert_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "48:5:54",
                "type": ""
              }
            ],
            "src": "14:131:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "220:177:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "266:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "275:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "278:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "268:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "268:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "268:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "241:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "250:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "237:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "237:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "262:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "233:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "233:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "230:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "291:36:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "317:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "304:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "304:23:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "295:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "361:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "336:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "336:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "336:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "376:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "386:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "376:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "186:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "197:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "209:6:54",
                "type": ""
              }
            ],
            "src": "150:247:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "497:92:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "507:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "519:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "530:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "515:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "515:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "507:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "549:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "574:6:54"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "567:6:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "567:14:54"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "560:6:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "560:22:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "542:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "542:41:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "542:41:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "466:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "477:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "488:4:54",
                "type": ""
              }
            ],
            "src": "402:187:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "638:73:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "689:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "698:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "701:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "691:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "691:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "691:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "661:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "672:5:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "679:6:54",
                                "type": "",
                                "value": "0xffff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "668:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "668:18:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "658:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "658:29:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "651:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "651:37:54"
                  },
                  "nodeType": "YulIf",
                  "src": "648:57:54"
                }
              ]
            },
            "name": "validator_revert_uint16",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "627:5:54",
                "type": ""
              }
            ],
            "src": "594:117:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "802:300:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "848:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "857:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "860:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "850:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "850:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "850:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "823:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "832:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "819:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "819:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "844:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "815:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "815:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "812:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "873:36:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "899:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "886:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "886:23:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "877:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "943:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "918:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "918:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "918:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "958:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "968:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "958:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "982:47:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1014:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1025:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1010:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1010:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "997:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "997:32:54"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "986:7:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "1062:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_uint16",
                      "nodeType": "YulIdentifier",
                      "src": "1038:23:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1038:32:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1038:32:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1079:17:54",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "1089:7:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "1079:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint16",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "760:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "771:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "783:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "791:6:54",
                "type": ""
              }
            ],
            "src": "716:386:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1237:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1247:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1259:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1270:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1255:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1255:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1247:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1289:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "1304:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1320:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1325:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "1316:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1316:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1329:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "1312:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1312:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "1300:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1300:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1282:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1282:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1282:51:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_IClaimTopicsRegistry_$6444__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1206:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1217:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1228:4:54",
                "type": ""
              }
            ],
            "src": "1107:232:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1465:424:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1511:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1520:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1523:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1513:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1513:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1513:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1486:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1495:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1482:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1482:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1507:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1478:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1478:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "1475:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1536:36:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1562:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1549:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1549:23:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "1540:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1606:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "1581:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1581:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1581:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1621:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "1631:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1621:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1645:47:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1677:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1688:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1673:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1673:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1660:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1660:32:54"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "1649:7:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "1726:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "1701:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1701:33:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1701:33:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1743:17:54",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "1753:7:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "1743:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1769:47:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1801:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1812:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1797:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1797:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1784:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1784:32:54"
                  },
                  "variables": [
                    {
                      "name": "value_2",
                      "nodeType": "YulTypedName",
                      "src": "1773:7:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_2",
                        "nodeType": "YulIdentifier",
                        "src": "1849:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_uint16",
                      "nodeType": "YulIdentifier",
                      "src": "1825:23:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1825:32:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1825:32:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1866:17:54",
                  "value": {
                    "name": "value_2",
                    "nodeType": "YulIdentifier",
                    "src": "1876:7:54"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "1866:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_contract$_IIdentity_$1743t_uint16",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1415:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1426:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1438:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1446:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "1454:6:54",
                "type": ""
              }
            ],
            "src": "1344:545:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1978:283:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2027:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2036:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2039:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2029:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2029:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2029:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "2006:6:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2014:4:54",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2002:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2002:17:54"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "2021:3:54"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "1998:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1998:27:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1991:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1991:35:54"
                  },
                  "nodeType": "YulIf",
                  "src": "1988:55:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2052:30:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2075:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2062:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2062:20:54"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "2052:6:54"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2125:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2134:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2137:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2127:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2127:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2127:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2097:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2113:2:54",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2117:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "2109:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2109:10:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2121:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2105:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2105:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2094:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2094:30:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2091:50:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2150:29:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2166:6:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2174:4:54",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2162:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2162:17:54"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nodeType": "YulIdentifier",
                      "src": "2150:8:54"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2239:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2248:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2251:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2241:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2241:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2241:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "2202:6:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2214:1:54",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2217:6:54"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "2210:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2210:14:54"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2198:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2198:27:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2227:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2194:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2194:38:54"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "2234:3:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2191:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2191:47:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2188:67:54"
                }
              ]
            },
            "name": "abi_decode_array_address_dyn_calldata",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "1941:6:54",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "1949:3:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nodeType": "YulTypedName",
                "src": "1957:8:54",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "1967:6:54",
                "type": ""
              }
            ],
            "src": "1894:367:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2492:879:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2538:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2547:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2550:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2540:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2540:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2540:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2513:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2522:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2509:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2509:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2534:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2505:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2505:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2502:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2563:37:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2590:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2577:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2577:23:54"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "2567:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2609:28:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2627:2:54",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2631:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "2623:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2623:10:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2635:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "2619:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2619:18:54"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "2613:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2664:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2673:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2676:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2666:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2666:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2666:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2652:6:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "2660:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2649:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2649:14:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2646:34:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2689:96:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2757:9:54"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2768:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2753:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2753:22:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "2777:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_address_dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "2715:37:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2715:70:54"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nodeType": "YulTypedName",
                      "src": "2693:8:54",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "2703:8:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2794:18:54",
                  "value": {
                    "name": "value0_1",
                    "nodeType": "YulIdentifier",
                    "src": "2804:8:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2794:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2821:18:54",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "2831:8:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2821:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2848:48:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2881:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2892:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2877:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2877:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2864:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2864:32:54"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "2852:8:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2925:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2934:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2937:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2927:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2927:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2927:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "2911:8:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "2921:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2908:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2908:16:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2905:36:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2950:98:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3018:9:54"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "3029:8:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3014:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3014:24:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3040:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_address_dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "2976:37:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2976:72:54"
                  },
                  "variables": [
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "2954:8:54",
                      "type": ""
                    },
                    {
                      "name": "value3_1",
                      "nodeType": "YulTypedName",
                      "src": "2964:8:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3057:18:54",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "3067:8:54"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "3057:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3084:18:54",
                  "value": {
                    "name": "value3_1",
                    "nodeType": "YulIdentifier",
                    "src": "3094:8:54"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "3084:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3111:48:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3144:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3155:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3140:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3140:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3127:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3127:32:54"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "3115:8:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3188:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3197:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3200:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3190:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3190:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3190:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "3174:8:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3184:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3171:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3171:16:54"
                  },
                  "nodeType": "YulIf",
                  "src": "3168:36:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3213:98:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3281:9:54"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "3292:8:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3277:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3277:24:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3303:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_address_dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "3239:37:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3239:72:54"
                  },
                  "variables": [
                    {
                      "name": "value4_1",
                      "nodeType": "YulTypedName",
                      "src": "3217:8:54",
                      "type": ""
                    },
                    {
                      "name": "value5_1",
                      "nodeType": "YulTypedName",
                      "src": "3227:8:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3320:18:54",
                  "value": {
                    "name": "value4_1",
                    "nodeType": "YulIdentifier",
                    "src": "3330:8:54"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "3320:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3347:18:54",
                  "value": {
                    "name": "value5_1",
                    "nodeType": "YulIdentifier",
                    "src": "3357:8:54"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "3347:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_contract$_IIdentity_$1743_$dyn_calldata_ptrt_array$_t_uint16_$dyn_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2418:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2429:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2441:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2449:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "2457:6:54",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "2465:6:54",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "2473:6:54",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "2481:6:54",
                "type": ""
              }
            ],
            "src": "2266:1105:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3475:89:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "3485:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3497:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3508:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3493:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3493:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "3485:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3527:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "3542:6:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3550:6:54",
                            "type": "",
                            "value": "0xffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "3538:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3538:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3520:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3520:38:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3520:38:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3444:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3455:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3466:4:54",
                "type": ""
              }
            ],
            "src": "3376:188:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3670:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "3680:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3692:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3703:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3688:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3688:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "3680:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3722:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "3737:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3753:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3758:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "3749:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3749:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3762:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "3745:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3745:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "3733:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3733:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3715:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3715:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3715:51:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3639:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3650:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3661:4:54",
                "type": ""
              }
            ],
            "src": "3569:203:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3882:301:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3928:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3937:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3940:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3930:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3930:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3930:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3903:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3912:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3899:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3899:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3924:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3895:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3895:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "3892:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3953:36:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3979:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3966:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3966:23:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "3957:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "4023:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "3998:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3998:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3998:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4038:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "4048:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4038:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4062:47:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4094:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4105:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4090:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4090:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4077:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4077:32:54"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "4066:7:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "4143:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "4118:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4118:33:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4118:33:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4160:17:54",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "4170:7:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "4160:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_contract$_IIdentity_$1743",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3840:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3851:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3863:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3871:6:54",
                "type": ""
              }
            ],
            "src": "3777:406:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4321:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4331:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4343:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4354:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4339:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4339:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4331:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4373:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "4388:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4404:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4409:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "4400:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4400:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4413:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "4396:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4396:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "4384:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4384:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4366:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4366:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4366:51:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_ITrustedIssuersRegistry_$6856__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4290:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4301:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "4312:4:54",
                "type": ""
              }
            ],
            "src": "4188:235:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4547:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4557:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4569:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4580:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4565:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4565:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4557:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4599:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "4614:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4630:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4635:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "4626:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4626:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4639:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "4622:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4622:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "4610:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4610:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4592:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4592:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4592:51:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_IIdentity_$1743__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4516:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4527:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "4538:4:54",
                "type": ""
              }
            ],
            "src": "4428:221:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4788:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4798:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4810:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4821:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4806:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4806:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4798:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4840:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "4855:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4871:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4876:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "4867:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4867:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4880:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "4863:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4863:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "4851:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4851:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4833:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4833:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4833:51:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_IIdentityRegistryStorage_$6759__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4757:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4768:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "4779:4:54",
                "type": ""
              }
            ],
            "src": "4654:236:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5069:236:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5086:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5097:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5079:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5079:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5079:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5120:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5131:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5116:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5116:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5136:2:54",
                        "type": "",
                        "value": "46"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5109:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5109:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5109:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5159:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5170:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5155:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5155:18:54"
                      },
                      {
                        "hexValue": "4167656e74526f6c653a2063616c6c657220646f6573206e6f74206861766520",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "5175:34:54",
                        "type": "",
                        "value": "AgentRole: caller does not have "
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5148:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5148:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5148:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5230:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5241:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5226:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5226:18:54"
                      },
                      {
                        "hexValue": "746865204167656e7420726f6c65",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "5246:16:54",
                        "type": "",
                        "value": "the Agent role"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5219:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5219:44:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5219:44:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5272:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5284:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5295:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5280:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5280:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5272:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_74a06637aa9b3f007e79b88b2581192c891126ad4f09db67db18ede3d2b5435c__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5046:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5060:4:54",
                "type": ""
              }
            ],
            "src": "4895:410:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5437:158:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5447:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5459:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5470:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5455:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5455:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5447:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5489:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "5504:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5520:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5525:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "5516:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5516:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5529:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "5512:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5512:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "5500:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5500:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5482:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5482:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5482:51:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5553:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5564:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5549:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5549:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "5573:6:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5581:6:54",
                            "type": "",
                            "value": "0xffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "5569:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5569:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5542:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5542:47:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5542:47:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_uint16__to_t_address_t_uint16__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5398:9:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5409:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5417:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5428:4:54",
                "type": ""
              }
            ],
            "src": "5310:285:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5773:231:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5783:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5795:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5806:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5791:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5791:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5783:4:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5818:29:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5836:3:54",
                            "type": "",
                            "value": "160"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5841:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "5832:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5832:11:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5845:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "5828:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5828:19:54"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "5822:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5863:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "5878:6:54"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "5886:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "5874:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5874:15:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5856:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5856:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5856:34:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5910:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5921:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5906:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5906:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "5930:6:54"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "5938:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "5926:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5926:15:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5899:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5899:43:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5899:43:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5962:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5973:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5958:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5958:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nodeType": "YulIdentifier",
                            "src": "5982:6:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5990:6:54",
                            "type": "",
                            "value": "0xffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "5978:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5978:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5951:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5951:47:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5951:47:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_contract$_IIdentity_$1743_t_uint16__to_t_address_t_address_t_uint16__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5726:9:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "5737:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5745:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5753:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5764:4:54",
                "type": ""
              }
            ],
            "src": "5600:404:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6041:95:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6058:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6065:3:54",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6070:10:54",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "6061:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6061:20:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6051:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6051:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6051:31:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6098:1:54",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6101:4:54",
                        "type": "",
                        "value": "0x32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6091:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6091:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6091:15:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6122:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6125:4:54",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "6115:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6115:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6115:15:54"
                }
              ]
            },
            "name": "panic_error_0x32",
            "nodeType": "YulFunctionDefinition",
            "src": "6009:127:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6229:177:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6275:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6284:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6287:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6277:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6277:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6277:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6250:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6259:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6246:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6246:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6271:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "6242:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6242:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "6239:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6300:36:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6326:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6313:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6313:23:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "6304:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "6370:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "6345:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6345:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6345:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6385:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "6395:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "6385:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_contract$_IIdentity_$1743",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6195:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "6206:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6218:6:54",
                "type": ""
              }
            ],
            "src": "6141:265:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6480:176:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6526:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6535:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6538:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6528:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6528:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6528:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6501:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6510:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6497:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6497:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6522:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "6493:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6493:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "6490:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6551:36:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6577:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6564:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6564:23:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "6555:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "6620:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_uint16",
                      "nodeType": "YulIdentifier",
                      "src": "6596:23:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6596:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6596:30:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6635:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "6645:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "6635:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint16",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6446:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "6457:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6469:6:54",
                "type": ""
              }
            ],
            "src": "6411:245:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6693:95:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6710:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6717:3:54",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6722:10:54",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "6713:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6713:20:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6703:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6703:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6703:31:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6750:1:54",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6753:4:54",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6743:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6743:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6743:15:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6774:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6777:4:54",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "6767:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6767:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6767:15:54"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nodeType": "YulFunctionDefinition",
            "src": "6661:127:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6840:88:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6871:22:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "6873:16:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6873:18:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6873:18:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "6856:5:54"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6867:1:54",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "6863:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6863:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "6853:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6853:17:54"
                  },
                  "nodeType": "YulIf",
                  "src": "6850:43:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6902:20:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "6913:5:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6920:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6909:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6909:13:54"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "6902:3:54"
                    }
                  ]
                }
              ]
            },
            "name": "increment_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "6822:5:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "6832:3:54",
                "type": ""
              }
            ],
            "src": "6793:135:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7013:169:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7059:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7068:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7071:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7061:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7061:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7061:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7034:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7043:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7030:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7030:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7055:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7026:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7026:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "7023:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7084:29:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7103:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "7097:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7097:16:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "7088:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "7146:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_uint16",
                      "nodeType": "YulIdentifier",
                      "src": "7122:23:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7122:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7122:30:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7161:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "7171:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "7161:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint16_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6979:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "6990:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7002:6:54",
                "type": ""
              }
            ],
            "src": "6933:249:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7334:175:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "7344:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7356:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7367:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7352:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7352:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7344:4:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7379:29:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7397:3:54",
                            "type": "",
                            "value": "160"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7402:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "7393:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7393:11:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7406:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "7389:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7389:19:54"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "7383:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7424:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "7439:6:54"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "7447:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "7435:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7435:15:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7417:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7417:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7417:34:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7471:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7482:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7467:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7467:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "7491:6:54"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "7499:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "7487:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7487:15:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7460:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7460:43:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7460:43:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_contract$_IIdentity_$1743__to_t_address_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7295:9:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "7306:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7314:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7325:4:54",
                "type": ""
              }
            ],
            "src": "7187:322:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7546:95:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7563:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7570:3:54",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7575:10:54",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "7566:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7566:20:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7556:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7556:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7556:31:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7603:1:54",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7606:4:54",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7596:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7596:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7596:15:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7627:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7630:4:54",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "7620:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7620:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7620:15:54"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "7514:127:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7691:230:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "7701:19:54",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7717:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "7711:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7711:9:54"
                  },
                  "variableNames": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulIdentifier",
                      "src": "7701:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7729:58:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "7751:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "size",
                                "nodeType": "YulIdentifier",
                                "src": "7767:4:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7773:2:54",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "7763:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7763:13:54"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7782:2:54",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "7778:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7778:7:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "7759:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7759:27:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7747:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7747:40:54"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "7733:10:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7862:22:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "7864:16:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7864:18:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7864:18:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "7805:10:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7825:2:54",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7829:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "7821:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7821:10:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7833:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "7817:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7817:18:54"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "7802:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7802:34:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "7841:10:54"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "7853:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "7838:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7838:22:54"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "7799:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7799:62:54"
                  },
                  "nodeType": "YulIf",
                  "src": "7796:88:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7900:2:54",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "7904:10:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7893:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7893:22:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7893:22:54"
                }
              ]
            },
            "name": "allocate_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "7671:4:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "7680:6:54",
                "type": ""
              }
            ],
            "src": "7646:275:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7995:114:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8039:22:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "8041:16:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8041:18:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8041:18:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "8011:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8027:2:54",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8031:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "8023:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8023:10:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8035:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8019:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8019:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8008:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8008:30:54"
                  },
                  "nodeType": "YulIf",
                  "src": "8005:56:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8070:33:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8086:1:54",
                            "type": "",
                            "value": "5"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "8089:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "8082:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8082:14:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8098:4:54",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8078:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8078:25:54"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "8070:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "array_allocation_size_array_uint256_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "7975:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "7986:4:54",
                "type": ""
              }
            ],
            "src": "7926:183:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8220:775:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8230:12:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "8240:2:54",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "8234:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8287:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8296:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8299:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8289:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8289:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8289:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8262:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8271:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8258:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8258:23:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8283:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8254:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8254:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "8251:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8312:30:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8332:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "8326:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8326:16:54"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "8316:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8385:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8394:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8397:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8387:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8387:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8387:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "8357:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8373:2:54",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8377:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "8369:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8369:10:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8381:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8365:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8365:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8354:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8354:30:54"
                  },
                  "nodeType": "YulIf",
                  "src": "8351:50:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8410:32:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8424:9:54"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "8435:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8420:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8420:22:54"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "8414:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8490:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8499:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8502:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8492:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8492:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8492:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "8469:2:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8473:4:54",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "8465:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8465:13:54"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8480:7:54"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "8461:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8461:27:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "8454:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8454:35:54"
                  },
                  "nodeType": "YulIf",
                  "src": "8451:55:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8515:19:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "8531:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "8525:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8525:9:54"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "8519:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8543:71:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "8610:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_array_uint256_dyn",
                          "nodeType": "YulIdentifier",
                          "src": "8570:39:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8570:43:54"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "8554:15:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8554:60:54"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "8547:3:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8623:16:54",
                  "value": {
                    "name": "dst",
                    "nodeType": "YulIdentifier",
                    "src": "8636:3:54"
                  },
                  "variables": [
                    {
                      "name": "dst_1",
                      "nodeType": "YulTypedName",
                      "src": "8627:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "8655:3:54"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "8660:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8648:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8648:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8648:15:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8672:19:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "8683:3:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8688:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8679:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8679:12:54"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nodeType": "YulIdentifier",
                      "src": "8672:3:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8700:42:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "8722:2:54"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8730:1:54",
                                "type": "",
                                "value": "5"
                              },
                              {
                                "name": "_3",
                                "nodeType": "YulIdentifier",
                                "src": "8733:2:54"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "8726:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8726:10:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8718:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8718:19:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8739:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8714:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8714:28:54"
                  },
                  "variables": [
                    {
                      "name": "srcEnd",
                      "nodeType": "YulTypedName",
                      "src": "8704:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8774:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8783:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8786:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8776:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8776:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8776:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8757:6:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8765:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8754:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8754:19:54"
                  },
                  "nodeType": "YulIf",
                  "src": "8751:39:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8799:22:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "8814:2:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8818:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8810:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8810:11:54"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "8803:3:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8886:79:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "8907:3:54"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "src",
                                  "nodeType": "YulIdentifier",
                                  "src": "8918:3:54"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "8912:5:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "8912:10:54"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "8900:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8900:23:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8900:23:54"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "8936:19:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "8947:3:54"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "8952:2:54"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "8943:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8943:12:54"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "8936:3:54"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "8841:3:54"
                      },
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8846:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "8838:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8838:15:54"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "8854:23:54",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "8856:19:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "8867:3:54"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "8872:2:54"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "8863:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8863:12:54"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "8856:3:54"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "8834:3:54",
                    "statements": []
                  },
                  "src": "8830:135:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8974:15:54",
                  "value": {
                    "name": "dst_1",
                    "nodeType": "YulIdentifier",
                    "src": "8984:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8974:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8186:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "8197:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8209:6:54",
                "type": ""
              }
            ],
            "src": "8114:881:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9101:76:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "9111:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9123:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9134:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9119:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9119:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "9111:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9153:9:54"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "9164:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9146:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9146:25:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9146:25:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9070:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9081:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "9092:4:54",
                "type": ""
              }
            ],
            "src": "9000:177:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9288:775:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9298:12:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "9308:2:54",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "9302:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9355:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9364:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9367:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9357:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9357:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9357:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9330:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9339:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9326:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9326:23:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9351:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "9322:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9322:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "9319:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9380:30:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9400:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "9394:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9394:16:54"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "9384:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9453:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9462:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9465:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9455:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9455:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9455:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "9425:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9441:2:54",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9445:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "9437:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9437:10:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9449:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9433:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9433:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9422:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9422:30:54"
                  },
                  "nodeType": "YulIf",
                  "src": "9419:50:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9478:32:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9492:9:54"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "9503:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9488:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9488:22:54"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "9482:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9558:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9567:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9570:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9560:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9560:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9560:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "9537:2:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9541:4:54",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "9533:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9533:13:54"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9548:7:54"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "9529:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9529:27:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "9522:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9522:35:54"
                  },
                  "nodeType": "YulIf",
                  "src": "9519:55:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9583:19:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "9599:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "9593:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9593:9:54"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "9587:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9611:71:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "9678:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_array_uint256_dyn",
                          "nodeType": "YulIdentifier",
                          "src": "9638:39:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9638:43:54"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "9622:15:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9622:60:54"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "9615:3:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9691:16:54",
                  "value": {
                    "name": "dst",
                    "nodeType": "YulIdentifier",
                    "src": "9704:3:54"
                  },
                  "variables": [
                    {
                      "name": "dst_1",
                      "nodeType": "YulTypedName",
                      "src": "9695:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "9723:3:54"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "9728:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9716:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9716:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9716:15:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9740:19:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "9751:3:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9756:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9747:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9747:12:54"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nodeType": "YulIdentifier",
                      "src": "9740:3:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9768:42:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "9790:2:54"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9798:1:54",
                                "type": "",
                                "value": "5"
                              },
                              {
                                "name": "_3",
                                "nodeType": "YulIdentifier",
                                "src": "9801:2:54"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "9794:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9794:10:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9786:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9786:19:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9807:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9782:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9782:28:54"
                  },
                  "variables": [
                    {
                      "name": "srcEnd",
                      "nodeType": "YulTypedName",
                      "src": "9772:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9842:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9851:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9854:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9844:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9844:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9844:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "9825:6:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "9833:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9822:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9822:19:54"
                  },
                  "nodeType": "YulIf",
                  "src": "9819:39:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9867:22:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "9882:2:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9886:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9878:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9878:11:54"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "9871:3:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9954:79:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "9975:3:54"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "src",
                                  "nodeType": "YulIdentifier",
                                  "src": "9986:3:54"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "9980:5:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "9980:10:54"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "9968:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9968:23:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9968:23:54"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "10004:19:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "10015:3:54"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "10020:2:54"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "10011:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10011:12:54"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "10004:3:54"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "9909:3:54"
                      },
                      {
                        "name": "srcEnd",
                        "nodeType": "YulIdentifier",
                        "src": "9914:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "9906:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9906:15:54"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "9922:23:54",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "9924:19:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "9935:3:54"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "9940:2:54"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "9931:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9931:12:54"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "9924:3:54"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "9902:3:54",
                    "statements": []
                  },
                  "src": "9898:135:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10042:15:54",
                  "value": {
                    "name": "dst_1",
                    "nodeType": "YulIdentifier",
                    "src": "10052:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "10042:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9254:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "9265:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9277:6:54",
                "type": ""
              }
            ],
            "src": "9182:881:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10169:76:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "10179:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10191:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10202:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10187:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10187:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "10179:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10221:9:54"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "10232:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10214:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10214:25:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10214:25:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10138:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "10149:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "10160:4:54",
                "type": ""
              }
            ],
            "src": "10068:177:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10316:184:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10326:10:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "10335:1:54",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "10330:1:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10395:63:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "10420:3:54"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "10425:1:54"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "10416:3:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "10416:11:54"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "10439:3:54"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "10444:1:54"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "10435:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "10435:11:54"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "10429:5:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "10429:18:54"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "10409:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10409:39:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10409:39:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "10356:1:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "10359:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "10353:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10353:13:54"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "10367:19:54",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "10369:15:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "10378:1:54"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10381:2:54",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "10374:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10374:10:54"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "10369:1:54"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "10349:3:54",
                    "statements": []
                  },
                  "src": "10345:113:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "10478:3:54"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "10483:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10474:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10474:16:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10492:1:54",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10467:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10467:27:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10467:27:54"
                }
              ]
            },
            "name": "copy_memory_to_memory_with_cleanup",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "10294:3:54",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "10299:3:54",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "10304:6:54",
                "type": ""
              }
            ],
            "src": "10250:250:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10590:305:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10634:22:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "10636:16:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10636:18:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10636:18:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "10606:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10622:2:54",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10626:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "10618:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "10618:10:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10630:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "10614:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10614:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10603:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10603:30:54"
                  },
                  "nodeType": "YulIf",
                  "src": "10600:56:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10665:66:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10702:6:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10710:2:54",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10698:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10698:15:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10719:2:54",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "10715:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10715:7:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "10694:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "10694:29:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10725:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10690:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10690:40:54"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "10674:15:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10674:57:54"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "10665:5:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "10747:5:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "10754:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10740:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10740:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10740:21:54"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10799:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10808:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10811:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10801:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10801:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10801:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "10780:3:54"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "10785:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10776:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10776:16:54"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "10794:3:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10773:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10773:25:54"
                  },
                  "nodeType": "YulIf",
                  "src": "10770:45:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "10859:3:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "array",
                            "nodeType": "YulIdentifier",
                            "src": "10868:5:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10875:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10864:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10864:16:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "10882:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "10824:34:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10824:65:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10824:65:54"
                }
              ]
            },
            "name": "abi_decode_available_length_bytes_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "10559:3:54",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "10564:6:54",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "10572:3:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "10580:5:54",
                "type": ""
              }
            ],
            "src": "10505:390:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10963:172:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11012:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11021:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11024:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11014:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11014:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11014:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "10991:6:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10999:4:54",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "10987:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "10987:17:54"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "11006:3:54"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "10983:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10983:27:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "10976:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10976:35:54"
                  },
                  "nodeType": "YulIf",
                  "src": "10973:55:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11037:92:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "11095:6:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11103:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11091:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11091:17:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "11116:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "11110:5:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11110:13:54"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "11125:3:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_available_length_bytes_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "11046:44:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11046:83:54"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "11037:5:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_bytes_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "10937:6:54",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "10945:3:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "10953:5:54",
                "type": ""
              }
            ],
            "src": "10900:235:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11334:942:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11381:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11390:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11393:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11383:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11383:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11383:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "11355:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11364:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "11351:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11351:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11376:3:54",
                        "type": "",
                        "value": "192"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "11347:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11347:33:54"
                  },
                  "nodeType": "YulIf",
                  "src": "11344:53:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11406:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11422:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "11416:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11416:16:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "11406:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11441:35:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11461:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11472:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11457:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11457:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "11451:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11451:25:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "11441:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11485:38:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11508:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11519:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11504:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11504:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "11498:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11498:25:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "11489:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "11557:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "11532:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11532:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11532:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11572:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "11582:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "11572:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11596:39:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11620:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11631:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11616:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11616:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "11610:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11610:25:54"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "11600:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11644:28:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11662:2:54",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11666:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "11658:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11658:10:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11670:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "11654:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11654:18:54"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "11648:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11699:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11708:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11711:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11701:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11701:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11701:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "11687:6:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "11695:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "11684:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11684:14:54"
                  },
                  "nodeType": "YulIf",
                  "src": "11681:34:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11724:70:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11766:9:54"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "11777:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11762:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11762:22:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "11786:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "11734:27:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11734:60:54"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "11724:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11803:42:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11829:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11840:3:54",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11825:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11825:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "11819:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11819:26:54"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "11807:8:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11874:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11883:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "11886:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11876:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11876:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11876:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "11860:8:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "11870:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "11857:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11857:16:54"
                  },
                  "nodeType": "YulIf",
                  "src": "11854:36:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11899:72:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11941:9:54"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "11952:8:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11937:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11937:24:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "11963:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "11909:27:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11909:62:54"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "11899:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11980:42:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12006:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12017:3:54",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12002:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12002:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "11996:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11996:26:54"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "11984:8:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12051:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12060:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12063:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "12053:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12053:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12053:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "12037:8:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "12047:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "12034:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12034:16:54"
                  },
                  "nodeType": "YulIf",
                  "src": "12031:36:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12076:34:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12090:9:54"
                      },
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "12101:8:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12086:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12086:24:54"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "12080:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12158:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12167:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "12170:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "12160:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12160:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12160:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "12137:2:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12141:4:54",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "12133:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "12133:13:54"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "12148:7:54"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "12129:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12129:27:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "12122:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12122:35:54"
                  },
                  "nodeType": "YulIf",
                  "src": "12119:55:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12183:87:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "12242:2:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12246:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12238:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12238:11:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "12257:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "12251:5:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12251:9:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "12262:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_available_length_bytes_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "12193:44:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12193:77:54"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "12183:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_uint256t_addresst_bytes_memory_ptrt_bytes_memory_ptrt_string_memory_ptr_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11260:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "11271:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "11283:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "11291:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "11299:6:54",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "11307:6:54",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "11315:6:54",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "11323:6:54",
                "type": ""
              }
            ],
            "src": "11140:1136:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12330:221:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12340:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "12360:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "12354:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12354:12:54"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "12344:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "12382:3:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "12387:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12375:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12375:19:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12375:19:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "12442:5:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12449:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12438:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12438:16:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "12460:3:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12465:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12456:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12456:14:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "12472:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "12403:34:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12403:76:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12403:76:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12488:57:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "12503:3:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12516:6:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12524:2:54",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12512:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12512:15:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12533:2:54",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "12529:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12529:7:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "12508:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "12508:29:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12499:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12499:39:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12540:4:54",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12495:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12495:50:54"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "12488:3:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "12307:5:54",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "12314:3:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "12322:3:54",
                "type": ""
              }
            ],
            "src": "12281:270:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12795:326:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12812:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "12827:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12843:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12848:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "12839:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12839:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12852:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "12835:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "12835:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "12823:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12823:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12805:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12805:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12805:51:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12876:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12887:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12872:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12872:18:54"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "12892:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12865:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12865:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12865:34:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12919:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12930:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12915:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12915:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12935:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12908:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12908:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12908:31:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12948:59:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "12979:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12991:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13002:3:54",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12987:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12987:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "12962:16:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12962:45:54"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "12952:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13027:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13038:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13023:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13023:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "13047:6:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13055:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "13043:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13043:22:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13016:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13016:50:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13016:50:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13075:40:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "13100:6:54"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "13108:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "13083:16:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13083:32:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13075:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_IIdentity_$1743_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12740:9:54",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "12751:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "12759:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "12767:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "12775:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "12786:4:54",
                "type": ""
              }
            ],
            "src": "12556:565:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13204:199:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13250:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13259:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13262:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "13252:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13252:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13252:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "13225:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13234:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "13221:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13221:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13246:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "13217:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13217:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "13214:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13275:29:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13294:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "13288:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13288:16:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "13279:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13357:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13366:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13369:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "13359:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13359:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13359:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "13326:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "13347:5:54"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "13340:6:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13340:13:54"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "13333:6:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13333:21:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "13323:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13323:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "13316:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13316:40:54"
                  },
                  "nodeType": "YulIf",
                  "src": "13313:60:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13382:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "13392:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "13382:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bool_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13170:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "13181:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13193:6:54",
                "type": ""
              }
            ],
            "src": "13126:277:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13457:79:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "13467:17:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "13479:1:54"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "13482:1:54"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "13475:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13475:9:54"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nodeType": "YulIdentifier",
                      "src": "13467:4:54"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13508:22:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "13510:16:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13510:18:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13510:18:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "diff",
                        "nodeType": "YulIdentifier",
                        "src": "13499:4:54"
                      },
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "13505:1:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "13496:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13496:11:54"
                  },
                  "nodeType": "YulIf",
                  "src": "13493:37:54"
                }
              ]
            },
            "name": "checked_sub_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "13439:1:54",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "13442:1:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nodeType": "YulTypedName",
                "src": "13448:4:54",
                "type": ""
              }
            ],
            "src": "13408:128:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13670:145:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "13680:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13692:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13703:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13688:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13688:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13680:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13722:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "13737:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13753:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13758:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "13749:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13749:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13762:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "13745:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13745:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "13733:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13733:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13715:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13715:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13715:51:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13786:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13797:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13782:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13782:18:54"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "13802:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13775:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13775:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13775:34:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13631:9:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "13642:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13650:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "13661:4:54",
                "type": ""
              }
            ],
            "src": "13541:274:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13919:170:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13965:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13974:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13977:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "13967:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13967:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13967:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "13940:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13949:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "13936:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13936:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13961:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "13932:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13932:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "13929:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13990:29:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14009:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "14003:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14003:16:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "13994:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "14053:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "14028:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14028:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14028:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14068:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "14078:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "14068:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_contract$_IIdentity_$1743_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13885:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "13896:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13908:6:54",
                "type": ""
              }
            ],
            "src": "13820:269:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14268:228:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14285:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14296:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14278:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14278:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14278:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14319:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14330:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14315:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14315:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14335:2:54",
                        "type": "",
                        "value": "38"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14308:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14308:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14308:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14358:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14369:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14354:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14354:18:54"
                      },
                      {
                        "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "14374:34:54",
                        "type": "",
                        "value": "Ownable: new owner is the zero a"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14347:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14347:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14347:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14429:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14440:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14425:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14425:18:54"
                      },
                      {
                        "hexValue": "646472657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "14445:8:54",
                        "type": "",
                        "value": "ddress"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14418:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14418:36:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14418:36:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14463:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14475:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14486:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "14471:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14471:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "14463:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "14245:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "14259:4:54",
                "type": ""
              }
            ],
            "src": "14094:402:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14675:224:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14692:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14703:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14685:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14685:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14685:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14726:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14737:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14722:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14722:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14742:2:54",
                        "type": "",
                        "value": "34"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14715:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14715:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14715:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14765:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14776:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14761:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14761:18:54"
                      },
                      {
                        "hexValue": "526f6c65733a206163636f756e7420697320746865207a65726f206164647265",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "14781:34:54",
                        "type": "",
                        "value": "Roles: account is the zero addre"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14754:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14754:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14754:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14836:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14847:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14832:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14832:18:54"
                      },
                      {
                        "hexValue": "7373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "14852:4:54",
                        "type": "",
                        "value": "ss"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14825:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14825:32:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14825:32:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14866:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14878:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14889:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "14874:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14874:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "14866:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9d214fa89563f4e6456a3929327e54500ea1cde2c0ba9fb2035ec106190d682f__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "14652:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "14666:4:54",
                "type": ""
              }
            ],
            "src": "14501:398:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15078:182:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15095:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15106:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15088:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15088:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15088:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15129:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15140:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15125:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15125:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15145:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15118:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15118:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15118:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15168:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15179:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15164:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15164:18:54"
                      },
                      {
                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "15184:34:54",
                        "type": "",
                        "value": "Ownable: caller is not the owner"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15157:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15157:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15157:62:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15228:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15240:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15251:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "15236:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15236:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "15228:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15055:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "15069:4:54",
                "type": ""
              }
            ],
            "src": "14904:356:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15439:181:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15456:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15467:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15449:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15449:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15449:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15490:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15501:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15486:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15486:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15506:2:54",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15479:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15479:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15479:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15529:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15540:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15525:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15525:18:54"
                      },
                      {
                        "hexValue": "526f6c65733a206163636f756e7420616c72656164792068617320726f6c65",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "15545:33:54",
                        "type": "",
                        "value": "Roles: account already has role"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15518:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15518:61:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15518:61:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15588:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15600:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15611:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "15596:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15596:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "15588:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_0f76c3a3e97a37fcdff532c2741c10933ebf2b769d5475388e30ae4f7155f13a__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15416:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "15430:4:54",
                "type": ""
              }
            ],
            "src": "15265:355:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15799:223:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15816:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15827:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15809:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15809:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15809:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15850:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15861:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15846:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15846:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15866:2:54",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15839:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15839:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15839:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15889:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15900:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15885:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15885:18:54"
                      },
                      {
                        "hexValue": "526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "15905:34:54",
                        "type": "",
                        "value": "Roles: account does not have rol"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15878:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15878:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15878:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15960:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15971:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15956:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15956:18:54"
                      },
                      {
                        "hexValue": "65",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "15976:3:54",
                        "type": "",
                        "value": "e"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15949:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15949:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15949:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15989:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16001:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16012:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "15997:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15997:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "15989:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_7bd893145ac435f339bb7c288622d270324b7033b011f693aca172f5cbc3c257__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15776:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "15790:4:54",
                "type": ""
              }
            ],
            "src": "15625:397:54"
          }
        ]
      },
      "contents": "{\n    { }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function validator_revert_uint16(value)\n    {\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint16(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_uint16(value_1)\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_contract$_IClaimTopicsRegistry_$6444__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_addresst_contract$_IIdentity_$1743t_uint16(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_uint16(value_2)\n        value2 := value_2\n    }\n    function abi_decode_array_address_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, sub(shl(64, 1), 1)) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_contract$_IIdentity_$1743_$dyn_calldata_ptrt_array$_t_uint16_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_address_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_address_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let value4_1, value5_1 := abi_decode_array_address_dyn_calldata(add(headStart, offset_2), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n    }\n    function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffff))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_addresst_contract$_IIdentity_$1743(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_contract$_ITrustedIssuersRegistry_$6856__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_contract$_IIdentity_$1743__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_contract$_IIdentityRegistryStorage_$6759__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_74a06637aa9b3f007e79b88b2581192c891126ad4f09db67db18ede3d2b5435c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"AgentRole: caller does not have \")\n        mstore(add(headStart, 96), \"the Agent role\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_uint16__to_t_address_t_uint16__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, 0xffff))\n    }\n    function abi_encode_tuple_t_address_t_contract$_IIdentity_$1743_t_uint16__to_t_address_t_address_t_uint16__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, 0xffff))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_contract$_IIdentity_$1743(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint16(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint16(value)\n        value0 := value\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_decode_tuple_t_uint16_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_uint16(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_contract$_IIdentity_$1743__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_array_uint256_dyn(length) -> size\n    {\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_3))\n        let dst_1 := dst\n        mstore(dst, _3)\n        dst := add(dst, _1)\n        let srcEnd := add(add(_2, shl(5, _3)), _1)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_2, _1)\n        for { } lt(src, srcEnd) { src := add(src, _1) }\n        {\n            mstore(dst, mload(src))\n            dst := add(dst, _1)\n        }\n        value0 := dst_1\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_3))\n        let dst_1 := dst\n        mstore(dst, _3)\n        dst := add(dst, _1)\n        let srcEnd := add(add(_2, shl(5, _3)), _1)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_2, _1)\n        for { } lt(src, srcEnd) { src := add(src, _1) }\n        {\n            mstore(dst, mload(src))\n            dst := add(dst, _1)\n        }\n        value0 := dst_1\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_decode_available_length_bytes_fromMemory(src, length, end) -> array\n    {\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        array := allocate_memory(add(and(add(length, 31), not(31)), 0x20))\n        mstore(array, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        copy_memory_to_memory_with_cleanup(src, add(array, 0x20), length)\n    }\n    function abi_decode_bytes_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        array := abi_decode_available_length_bytes_fromMemory(add(offset, 0x20), mload(offset), end)\n    }\n    function abi_decode_tuple_t_uint256t_uint256t_addresst_bytes_memory_ptrt_bytes_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n        let value := mload(add(headStart, 64))\n        validator_revert_address(value)\n        value2 := value\n        let offset := mload(add(headStart, 96))\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value3 := abi_decode_bytes_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 128))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value4 := abi_decode_bytes_fromMemory(add(headStart, offset_1), dataEnd)\n        let offset_2 := mload(add(headStart, 160))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset_2)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        value5 := abi_decode_available_length_bytes_fromMemory(add(_2, 32), mload(_2), dataEnd)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_contract$_IIdentity_$1743_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), 128)\n        let tail_1 := abi_encode_bytes(value2, add(headStart, 128))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        tail := abi_encode_bytes(value3, tail_1)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_contract$_IIdentity_$1743_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9d214fa89563f4e6456a3929327e54500ea1cde2c0ba9fb2035ec106190d682f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"Roles: account is the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_0f76c3a3e97a37fcdff532c2741c10933ebf2b769d5475388e30ae4f7155f13a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"Roles: account already has role\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_7bd893145ac435f339bb7c288622d270324b7033b011f693aca172f5cbc3c257__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"Roles: account does not have rol\")\n        mstore(add(headStart, 96), \"e\")\n        tail := add(headStart, 128)\n    }\n}",
      "id": 54,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "1479:8465:39:-:0;;;2416:543;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:13;719:10:20;936:18:13;:32::i;:::-;2557:19:39;:64;;-1:-1:-1;;;;;2557:64:39;;;-1:-1:-1;;;;;;2557:64:39;;;;;;;;2631:20;:71;;;;;;;;;;;2712:20;:65;;;;;;;;;;;;2792:44;;;;2557:19;;2792:44;2851:50;;-1:-1:-1;;;;;2851:50:39;;;;;;;;2916:36;;-1:-1:-1;;;;;2916:36:39;;;;;;;;2416:543;;;1479:8465;;2433:187:13;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:13;;;-1:-1:-1;;;;;;2541:17:13;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;14:177:54:-;93:13;;-1:-1:-1;;;;;135:31:54;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:378::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;451:49;496:2;485:9;481:18;451:49;:::i;:::-;441:59;;519:49;564:2;553:9;549:18;519:49;:::i;:::-;509:59;;196:378;;;;;:::o;:::-;1479:8465:39;;;;;;",
  "deployedSourceMap": "1479:8465:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1525:103:43;;;;;;:::i;:::-;;:::i;:::-;;;567:14:54;;560:22;542:41;;530:2;515:18;1525:103:43;;;;;;;;8105:247:39;;;;;;:::i;:::-;;:::i;:::-;;5258:232;;;;;;:::i;:::-;;:::i;3704:123::-;3801:19;;-1:-1:-1;;;;;3801:19:39;3704:123;;;;;;;:::i;4109:293::-;;;;;;:::i;:::-;;:::i;9616:111::-;;;;;;:::i;:::-;;:::i;9069:203::-;;;;;;:::i;:::-;;:::i;9825:117::-;;;;;;:::i;:::-;;:::i;4484:337::-;;;;;;:::i;:::-;;:::i;8435:230::-;;;;;;:::i;:::-;;:::i;1831:101:13:-;;;:::i;3258:167:39:-;;;;;;:::i;:::-;;:::i;:::-;;;3550:6:54;3538:19;;;3520:38;;3508:2;3493:18;3258:167:39;3376:188:54;1634:120:43;;;;;;:::i;:::-;;:::i;1201:85:13:-;;;:::i;4896:288:39:-;;;;;;:::i;:::-;;:::i;1760:128:43:-;;;;;;:::i;:::-;;:::i;5565:219:39:-;;;;;;:::i;:::-;;:::i;3501:128::-;3602:20;;-1:-1:-1;;;;;3602:20:39;3501:128;;5855:2163;;;;;;:::i;:::-;;:::i;9376:145::-;;;;;;:::i;:::-;;:::i;8751:249::-;;;;;;:::i;:::-;;:::i;3028:154::-;;;;;;:::i;:::-;;:::i;3903:129::-;4005:20;;-1:-1:-1;;;;;4005:20:39;3903:129;;2081:198:13;;;;;;:::i;:::-;;:::i;1525:103:43:-;1579:4;1602:19;:7;1614:6;1602:11;:19::i;:::-;1595:26;1525:103;-1:-1:-1;;1525:103:43:o;8105:247:39:-;1094:13:13;:11;:13::i;:::-;8213:20:39::1;:73:::0;;-1:-1:-1;;;;;;8213:73:39::1;-1:-1:-1::0;;;;;8213:73:39;::::1;::::0;;::::1;::::0;;;8301:44:::1;::::0;::::1;::::0;-1:-1:-1;;8301:44:39::1;8105:247:::0;:::o;5258:232::-;1431:19:43;1439:10;1431:7;:19::i;:::-;1423:78;;;;-1:-1:-1;;;1423:78:43;;;;;;;:::i;:::-;;;;;;;;;5358:20:39::1;::::0;;:72:::1;::::0;-1:-1:-1;;;5358:72:39;;-1:-1:-1;;;;;5500:32:54;;;5358:72:39;;::::1;5482:51:54::0;;;;5581:6;5569:19;;5549:18;;;5542:47;5358:20:39;::::1;::::0;:48:::1;::::0;5455:18:54;;5358:72:39::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5445:38:39::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;;;;;;5445:38:39;::::1;::::0;-1:-1:-1;5445:38:39::1;::::0;;;::::1;5258:232:::0;;:::o;4109:293::-;1431:19:43;1439:10;1431:7;:19::i;:::-;1423:78;;;;-1:-1:-1;;;1423:78:43;;;;;;;:::i;:::-;4261:20:39::1;::::0;;:76:::1;::::0;-1:-1:-1;;;4261:76:39;;-1:-1:-1;;;;;5874:15:54;;;4261:76:39;;::::1;5856:34:54::0;;;;5926:15;;;5906:18;;;5899:43;5990:6;5978:19;;5958:18;;;5951:47;4261:20:39;::::1;::::0;:41:::1;::::0;5791:18:54;;4261:76:39::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4352:43:39::1;::::0;-1:-1:-1;;;;;4352:43:39;;::::1;::::0;-1:-1:-1;4352:43:39;::::1;::::0;-1:-1:-1;4352:43:39::1;::::0;;;::::1;4109:293:::0;;;:::o;9616:111::-;9704:16;9713:6;9704:8;:16::i;:::-;9616:111;:::o;9069:203::-;9141:4;;9169:22;9178:12;9169:8;:22::i;:::-;-1:-1:-1;;;;;9161:45:39;;9157:88;;-1:-1:-1;9229:5:39;;9069:203;-1:-1:-1;9069:203:39:o;9157:88::-;-1:-1:-1;9261:4:39;;9069:203;-1:-1:-1;9069:203:39:o;9825:117::-;9916:19;9928:6;9916:11;:19::i;4484:337::-;4677:9;4672:143;4692:25;;;4672:143;;;4738:66;4755:14;;4770:1;4755:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4774:11;;4786:1;4774:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4790:10;;4801:1;4790:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;4738:66::-;4719:3;;;;:::i;:::-;;;;4672:143;;;;4484:337;;;;;;:::o;8435:230::-;1094:13:13;:11;:13::i;:::-;8535:19:39::1;:64:::0;;-1:-1:-1;;;;;;8535:64:39::1;-1:-1:-1::0;;;;;8535:64:39;::::1;::::0;;::::1;::::0;;;8614:44:::1;::::0;::::1;::::0;-1:-1:-1;;8614:44:39::1;8435:230:::0;:::o;1831:101:13:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;3258:167:39:-;3362:20;;;:56;;-1:-1:-1;;;3362:56:39;;3337:6;;-1:-1:-1;;;;;3362:20:39;;;;:42;;:56;;3405:12;;3362:56;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1634:120:43:-;1094:13:13;:11;:13::i;:::-;1695:19:43::1;:7;1707:6:::0;1695:11:::1;:19::i;:::-;1729:18;::::0;-1:-1:-1;;;;;1729:18:43;::::1;::::0;::::1;::::0;;;::::1;1634:120:::0;:::o;1201:85:13:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:13;;1201:85::o;4896:288:39:-;1431:19:43;1439:10;1431:7;:19::i;:::-;1423:78;;;;-1:-1:-1;;;1423:78:43;;;;;;;:::i;:::-;5001:21:39::1;5025:22;5034:12;5025:8;:22::i;:::-;5057:20;::::0;;:66:::1;::::0;-1:-1:-1;;;5057:66:39;;-1:-1:-1;;;;;7435:15:54;;;5057:66:39;;::::1;7417:34:54::0;;;;7487:15;;;7467:18;;;7460:43;5001:46:39;;-1:-1:-1;5057:20:39::1;::::0;:41:::1;::::0;7352:18:54;;5057:66:39::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5138:39:39::1;::::0;-1:-1:-1;;;;;5138:39:39;;::::1;::::0;-1:-1:-1;5138:39:39;::::1;::::0;-1:-1:-1;5138:39:39::1;::::0;;;::::1;4991:193;4896:288:::0;;:::o;1760:128:43:-;1094:13:13;:11;:13::i;:::-;1824:22:43::1;:7;1839:6:::0;1824:14:::1;:22::i;:::-;1861:20;::::0;-1:-1:-1;;;;;1861:20:43;::::1;::::0;::::1;::::0;;;::::1;1760:128:::0;:::o;5565:219:39:-;1431:19:43;1439:10;1431:7;:19::i;:::-;1423:78;;;;-1:-1:-1;;;1423:78:43;;;;;;;:::i;:::-;5649:20:39::1;::::0;;:60:::1;::::0;-1:-1:-1;;;5649:60:39;;-1:-1:-1;;;;;5649:20:39;;::::1;::::0;:46:::1;::::0;:60:::1;::::0;5696:12;;5649:60:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5754:22;5763:12;5754:8;:22::i;:::-;-1:-1:-1::0;;;;;5724:53:39::1;5740:12;-1:-1:-1::0;;;;;5724:53:39::1;;;;;;;;;;;5565:219:::0;:::o;5855:2163::-;5929:4;;5957:22;5966:12;5957:8;:22::i;:::-;-1:-1:-1;;;;;5949:45:39;;5945:88;;-1:-1:-1;6017:5:39;;5855:2163;-1:-1:-1;5855:2163:39:o;5945:88::-;6081:19;;:36;;;-1:-1:-1;;;6081:36:39;;;;6042;;-1:-1:-1;;;;;6081:19:39;;:34;;:36;;;;;6042;;6081;;;;;;;:19;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6081:36:39;;;;;;;;;;;;:::i;:::-;6042:75;;6131:19;:26;6161:1;6131:31;6127:73;;-1:-1:-1;6185:4:39;;5855:2163;-1:-1:-1;;5855:2163:39:o;6127:73::-;6209:23;6242:14;6266;6290:16;6316:17;6343:18;6371:1620;6405:19;:26;6392:10;:39;6371:1620;;;6461:25;6489:22;6498:12;6489:8;:22::i;:::-;-1:-1:-1;;;;;6489:41:39;;6531:19;6551:10;6531:31;;;;;;;;:::i;:::-;;;;;;;6489:74;;;;;;;;;;;;;9146:25:54;;9134:2;9119:18;;9000:177;6489:74:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6489:74:39;;;;;;;;;;;;:::i;:::-;6461:102;;6581:8;:15;6600:1;6581:20;6577:71;;-1:-1:-1;6628:5:39;;5855:2163;-1:-1:-1;;;;;;;;;5855:2163:39:o;6577:71::-;6666:9;6661:1320;6685:8;:15;6681:1;:19;6661:1320;;;6774:22;6783:12;6774:8;:22::i;:::-;-1:-1:-1;;;;;6774:31:39;;6806:8;6815:1;6806:11;;;;;;;;:::i;:::-;;;;;;;6774:44;;;;;;;;;;;;;9146:25:54;;9134:2;9119:18;;9000:177;6774:44:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6774:44:39;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6725:93:39;;-1:-1:-1;6725:93:39;;-1:-1:-1;6725:93:39;-1:-1:-1;6725:93:39;-1:-1:-1;6725:93:39;-1:-1:-1;;;;;;6841:33:39;;;6875:22;6884:12;6875:8;:22::i;:::-;6899:19;6919:10;6899:31;;;;;;;;:::i;:::-;;;;;;;6932:3;6953:4;6841:117;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;6841:117:39;;;;;;;;-1:-1:-1;;6841:117:39;;;;;;;;;;;;:::i;:::-;;;6837:1130;;7884:1;7866:8;:15;:19;;;;:::i;:::-;7860:1;:26;7856:93;;-1:-1:-1;7921:5:39;;5855:2163;-1:-1:-1;;;;;;;;;;5855:2163:39:o;7856:93::-;6837:1130;;;7033:9;:112;;;;-1:-1:-1;7070:20:39;;7113:31;;-1:-1:-1;;;;;7070:20:39;;;;:34;;7105:6;;7113:19;;7133:10;;7113:31;;;;;;:::i;:::-;;;;;;;7070:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7033:184;;;;-1:-1:-1;7173:20:39;;:44;;-1:-1:-1;;;7173:44:39;;-1:-1:-1;;;;;7173:20:39;;;;:36;;:44;;7210:6;;7173:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7004:304;;;7270:8;:15;7266:19;;7004:304;7334:20;;:44;;-1:-1:-1;;;7334:44:39;;-1:-1:-1;;;;;7334:20:39;;;;:36;;:44;;7371:6;;7334:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7333:45;:75;;;;;7406:1;7388:8;:15;:19;;;;:::i;:::-;7382:1;:26;7333:75;7329:142;;;-1:-1:-1;7443:5:39;;5855:2163;-1:-1:-1;;;;;;;;;;;5855:2163:39:o;7329:142::-;7497:20;;7540:31;;-1:-1:-1;;;;;7497:20:39;;;;:34;;7532:6;;7540:19;;7560:10;;7540:31;;;;;;:::i;:::-;;;;;;;7497:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7496:76;:106;;;;;7600:1;7582:8;:15;:19;;;;:::i;:::-;7576:1;:26;7496:106;7492:173;;;-1:-1:-1;7637:5:39;;5855:2163;-1:-1:-1;;;;;;;;;;;5855:2163:39:o;7492:173::-;7691:9;7690:10;:40;;;;;7728:1;7710:8;:15;:19;;;;:::i;:::-;7704:1;:26;7690:40;7686:107;;;-1:-1:-1;7765:5:39;;5855:2163;-1:-1:-1;;;;;;;;;;;5855:2163:39:o;7686:107::-;6959:852;6837:1130;6702:3;;;;:::i;:::-;;;;6661:1320;;;;6447:1544;6433:12;;;;;:::i;:::-;;;;6371:1620;;;-1:-1:-1;8007:4:39;;5855:2163;-1:-1:-1;;;;;;;;5855:2163:39:o;9376:145::-;1094:13:13;:11;:13::i;:::-;9486:28:39::1;9504:9;9486:17;:28::i;8751:249::-:0;1094:13:13;:11;:13::i;:::-;8857:20:39::1;:71:::0;;-1:-1:-1;;;;;;8857:71:39::1;-1:-1:-1::0;;;;;8857:71:39;::::1;::::0;;::::1;::::0;;;8943:50:::1;::::0;::::1;::::0;-1:-1:-1;;8943:50:39::1;8751:249:::0;:::o;3028:154::-;3126:20;;;:49;;-1:-1:-1;;;3126:49:39;;3098:9;;-1:-1:-1;;;;;3126:20:39;;;;:35;;:49;;3162:12;;3126:49;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2081:198:13:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:13;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:13;;14296:2:54;2161:73:13::1;::::0;::::1;14278:21:54::0;14335:2;14315:18;;;14308:30;14374:34;14354:18;;;14347:62;-1:-1:-1;;;14425:18:54;;;14418:36;14471:19;;2161:73:13::1;14094:402:54::0;2161:73:13::1;2244:28;2263:8;2244:18;:28::i;815:200:50:-:0;887:4;-1:-1:-1;;;;;911:21:50;;903:68;;;;-1:-1:-1;;;903:68:50;;14703:2:54;903:68:50;;;14685:21:54;14742:2;14722:18;;;14715:30;14781:34;14761:18;;;14754:62;-1:-1:-1;;;14832:18:54;;;14825:32;14874:19;;903:68:50;14501:398:54;903:68:50;-1:-1:-1;;;;;;988:20:50;:11;:20;;;;;;;;;;;;;;;815:200::o;1359:130:13:-;719:10:20;1422:7:13;:5;:7::i;:::-;-1:-1:-1;;;;;1422:23:13;;1414:68;;;;-1:-1:-1;;;1414:68:13;;15106:2:54;1414:68:13;;;15088:21:54;;;15125:18;;;15118:30;15184:34;15164:18;;;15157:62;15236:18;;1414:68:13;14904:356:54;2433:187:13;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:13;;;-1:-1:-1;;;;;;2541:17:13;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;296:175:50:-;373:18;377:4;383:7;373:3;:18::i;:::-;372:19;364:63;;;;-1:-1:-1;;;364:63:50;;15467:2:54;364:63:50;;;15449:21:54;15506:2;15486:18;;;15479:30;15545:33;15525:18;;;15518:61;15596:18;;364:63:50;15265:355:54;364:63:50;-1:-1:-1;;;;;437:20:50;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;437:27:50;460:4;437:27;;;296:175::o;546:180::-;625:18;629:4;635:7;625:3;:18::i;:::-;617:64;;;;-1:-1:-1;;;617:64:50;;15827:2:54;617:64:50;;;15809:21:54;15866:2;15846:18;;;15839:30;15905:34;15885:18;;;15878:62;-1:-1:-1;;;15956:18:54;;;15949:31;15997:19;;617:64:50;15625:397:54;617:64:50;-1:-1:-1;;;;;691:20:50;714:5;691:20;;;;;;;;;;;:28;;-1:-1:-1;;691:28:50;;;546:180::o;14:131:54:-;-1:-1:-1;;;;;89:31:54;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:54:o;594:117::-;679:6;672:5;668:18;661:5;658:29;648:57;;701:1;698;691:12;716:386;783:6;791;844:2;832:9;823:7;819:23;815:32;812:52;;;860:1;857;850:12;812:52;899:9;886:23;918:31;943:5;918:31;:::i;:::-;968:5;-1:-1:-1;1025:2:54;1010:18;;997:32;1038;997;1038;:::i;:::-;1089:7;1079:17;;;716:386;;;;;:::o;1107:232::-;-1:-1:-1;;;;;1300:32:54;;;;1282:51;;1270:2;1255:18;;1107:232::o;1344:545::-;1438:6;1446;1454;1507:2;1495:9;1486:7;1482:23;1478:32;1475:52;;;1523:1;1520;1513:12;1475:52;1562:9;1549:23;1581:31;1606:5;1581:31;:::i;:::-;1631:5;-1:-1:-1;1688:2:54;1673:18;;1660:32;1701:33;1660:32;1701:33;:::i;:::-;1753:7;-1:-1:-1;1812:2:54;1797:18;;1784:32;1825;1784;1825;:::i;:::-;1876:7;1866:17;;;1344:545;;;;;:::o;1894:367::-;1957:8;1967:6;2021:3;2014:4;2006:6;2002:17;1998:27;1988:55;;2039:1;2036;2029:12;1988:55;-1:-1:-1;2062:20:54;;-1:-1:-1;;;;;2094:30:54;;2091:50;;;2137:1;2134;2127:12;2091:50;2174:4;2166:6;2162:17;2150:29;;2234:3;2227:4;2217:6;2214:1;2210:14;2202:6;2198:27;2194:38;2191:47;2188:67;;;2251:1;2248;2241:12;2188:67;1894:367;;;;;:::o;2266:1105::-;2441:6;2449;2457;2465;2473;2481;2534:2;2522:9;2513:7;2509:23;2505:32;2502:52;;;2550:1;2547;2540:12;2502:52;2577:23;;-1:-1:-1;;;;;2649:14:54;;;2646:34;;;2676:1;2673;2666:12;2646:34;2715:70;2777:7;2768:6;2757:9;2753:22;2715:70;:::i;:::-;2804:8;;-1:-1:-1;2689:96:54;-1:-1:-1;2892:2:54;2877:18;;2864:32;;-1:-1:-1;2908:16:54;;;2905:36;;;2937:1;2934;2927:12;2905:36;2976:72;3040:7;3029:8;3018:9;3014:24;2976:72;:::i;:::-;3067:8;;-1:-1:-1;2950:98:54;-1:-1:-1;3155:2:54;3140:18;;3127:32;;-1:-1:-1;3171:16:54;;;3168:36;;;3200:1;3197;3190:12;3168:36;;3239:72;3303:7;3292:8;3281:9;3277:24;3239:72;:::i;:::-;2266:1105;;;;-1:-1:-1;2266:1105:54;;-1:-1:-1;2266:1105:54;;3330:8;;2266:1105;-1:-1:-1;;;2266:1105:54:o;3777:406::-;3863:6;3871;3924:2;3912:9;3903:7;3899:23;3895:32;3892:52;;;3940:1;3937;3930:12;3892:52;3979:9;3966:23;3998:31;4023:5;3998:31;:::i;:::-;4048:5;-1:-1:-1;4105:2:54;4090:18;;4077:32;4118:33;4077:32;4118:33;:::i;4895:410::-;5097:2;5079:21;;;5136:2;5116:18;;;5109:30;5175:34;5170:2;5155:18;;5148:62;-1:-1:-1;;;5241:2:54;5226:18;;5219:44;5295:3;5280:19;;4895:410::o;6009:127::-;6070:10;6065:3;6061:20;6058:1;6051:31;6101:4;6098:1;6091:15;6125:4;6122:1;6115:15;6411:245;6469:6;6522:2;6510:9;6501:7;6497:23;6493:32;6490:52;;;6538:1;6535;6528:12;6490:52;6577:9;6564:23;6596:30;6620:5;6596:30;:::i;6661:127::-;6722:10;6717:3;6713:20;6710:1;6703:31;6753:4;6750:1;6743:15;6777:4;6774:1;6767:15;6793:135;6832:3;6853:17;;;6850:43;;6873:18;;:::i;:::-;-1:-1:-1;6920:1:54;6909:13;;6793:135::o;6933:249::-;7002:6;7055:2;7043:9;7034:7;7030:23;7026:32;7023:52;;;7071:1;7068;7061:12;7023:52;7103:9;7097:16;7122:30;7146:5;7122:30;:::i;7514:127::-;7575:10;7570:3;7566:20;7563:1;7556:31;7606:4;7603:1;7596:15;7630:4;7627:1;7620:15;7646:275;7717:2;7711:9;7782:2;7763:13;;-1:-1:-1;;7759:27:54;7747:40;;-1:-1:-1;;;;;7802:34:54;;7838:22;;;7799:62;7796:88;;;7864:18;;:::i;:::-;7900:2;7893:22;7646:275;;-1:-1:-1;7646:275:54:o;7926:183::-;7986:4;-1:-1:-1;;;;;8008:30:54;;8005:56;;;8041:18;;:::i;:::-;-1:-1:-1;8086:1:54;8082:14;8098:4;8078:25;;7926:183::o;8114:881::-;8209:6;8240:2;8283;8271:9;8262:7;8258:23;8254:32;8251:52;;;8299:1;8296;8289:12;8251:52;8326:16;;-1:-1:-1;;;;;8354:30:54;;8351:50;;;8397:1;8394;8387:12;8351:50;8420:22;;8473:4;8465:13;;8461:27;-1:-1:-1;8451:55:54;;8502:1;8499;8492:12;8451:55;8531:2;8525:9;8554:60;8570:43;8610:2;8570:43;:::i;:::-;8554:60;:::i;:::-;8648:15;;;8730:1;8726:10;;;;8718:19;;8714:28;;;8679:12;;;;8754:19;;;8751:39;;;8786:1;8783;8776:12;8751:39;8810:11;;;;8830:135;8846:6;8841:3;8838:15;8830:135;;;8912:10;;8900:23;;8863:12;;;;8943;;;;8830:135;;;8984:5;8114:881;-1:-1:-1;;;;;;;8114:881:54:o;10250:250::-;10335:1;10345:113;10359:6;10356:1;10353:13;10345:113;;;10435:11;;;10429:18;10416:11;;;10409:39;10381:2;10374:10;10345:113;;;-1:-1:-1;;10492:1:54;10474:16;;10467:27;10250:250::o;10505:390::-;10580:5;-1:-1:-1;;;;;10603:30:54;;10600:56;;;10636:18;;:::i;:::-;10674:57;10719:2;10698:15;;-1:-1:-1;;10694:29:54;10725:4;10690:40;10674:57;:::i;:::-;10665:66;;10754:6;10747:5;10740:21;10794:3;10785:6;10780:3;10776:16;10773:25;10770:45;;;10811:1;10808;10801:12;10770:45;10824:65;10882:6;10875:4;10868:5;10864:16;10859:3;10824:65;:::i;10900:235::-;10953:5;11006:3;10999:4;10991:6;10987:17;10983:27;10973:55;;11024:1;11021;11014:12;10973:55;11046:83;11125:3;11116:6;11110:13;11103:4;11095:6;11091:17;11046:83;:::i;11140:1136::-;11283:6;11291;11299;11307;11315;11323;11376:3;11364:9;11355:7;11351:23;11347:33;11344:53;;;11393:1;11390;11383:12;11344:53;11422:9;11416:16;11406:26;;11472:2;11461:9;11457:18;11451:25;11441:35;;11519:2;11508:9;11504:18;11498:25;11532:31;11557:5;11532:31;:::i;:::-;11631:2;11616:18;;11610:25;11582:5;;-1:-1:-1;;;;;;11684:14:54;;;11681:34;;;11711:1;11708;11701:12;11681:34;11734:60;11786:7;11777:6;11766:9;11762:22;11734:60;:::i;:::-;11724:70;;11840:3;11829:9;11825:19;11819:26;11803:42;;11870:2;11860:8;11857:16;11854:36;;;11886:1;11883;11876:12;11854:36;11909:62;11963:7;11952:8;11941:9;11937:24;11909:62;:::i;:::-;11899:72;;12017:3;12006:9;12002:19;11996:26;11980:42;;12047:2;12037:8;12034:16;12031:36;;;12063:1;12060;12053:12;12031:36;-1:-1:-1;12086:24:54;;12141:4;12133:13;;12129:27;-1:-1:-1;12119:55:54;;12170:1;12167;12160:12;12119:55;12193:77;12262:7;12257:2;12251:9;12246:2;12242;12238:11;12193:77;:::i;:::-;12183:87;;;11140:1136;;;;;;;;:::o;12281:270::-;12322:3;12360:5;12354:12;12387:6;12382:3;12375:19;12403:76;12472:6;12465:4;12460:3;12456:14;12449:4;12442:5;12438:16;12403:76;:::i;:::-;12533:2;12512:15;-1:-1:-1;;12508:29:54;12499:39;;;;12540:4;12495:50;;12281:270;-1:-1:-1;;12281:270:54:o;12556:565::-;12852:1;12848;12843:3;12839:11;12835:19;12827:6;12823:32;12812:9;12805:51;12892:6;12887:2;12876:9;12872:18;12865:34;12935:3;12930:2;12919:9;12915:18;12908:31;12786:4;12962:45;13002:3;12991:9;12987:19;12979:6;12962:45;:::i;:::-;13055:9;13047:6;13043:22;13038:2;13027:9;13023:18;13016:50;13083:32;13108:6;13100;13083:32;:::i;13126:277::-;13193:6;13246:2;13234:9;13225:7;13221:23;13217:32;13214:52;;;13262:1;13259;13252:12;13214:52;13294:9;13288:16;13347:5;13340:13;13333:21;13326:5;13323:32;13313:60;;13369:1;13366;13359:12;13408:128;13475:9;;;13496:11;;;13493:37;;;13510:18;;:::i;13541:274::-;-1:-1:-1;;;;;13733:32:54;;;;13715:51;;13797:2;13782:18;;13775:34;13703:2;13688:18;;13541:274::o;13820:269::-;13908:6;13961:2;13949:9;13940:7;13936:23;13932:32;13929:52;;;13977:1;13974;13967:12;13929:52;14009:9;14003:16;14028:31;14053:5;14028:31;:::i",
  "source": "// SPDX-License-Identifier: GPL-3.0\n/**\n *     NOTICE\n *\n *     The T-REX software is licensed under a proprietary license or the GPL v.3.\n *     If you choose to receive it under the GPL v.3 license, the following applies:\n *     T-REX is a suite of smart contracts developed by Tokeny to manage and transfer financial assets on the ethereum blockchain\n *\n *     Copyright (C) 2021, Tokeny sàrl.\n *\n *     This program is free software: you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation, either version 3 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n\npragma solidity ^0.8.0;\n\nimport '@onchain-id/solidity/contracts/interface/IClaimIssuer.sol';\nimport '@onchain-id/solidity/contracts/interface/IIdentity.sol';\n\nimport '../registry/IClaimTopicsRegistry.sol';\nimport '../registry/ITrustedIssuersRegistry.sol';\nimport '../registry/IIdentityRegistry.sol';\nimport '../roles/AgentRole.sol';\nimport '../registry/IIdentityRegistryStorage.sol';\n\n\ncontract IdentityRegistry is IIdentityRegistry, AgentRole {\n    /// @dev Address of the ClaimTopicsRegistry Contract\n    IClaimTopicsRegistry private tokenTopicsRegistry;\n\n    /// @dev Address of the TrustedIssuersRegistry Contract\n    ITrustedIssuersRegistry private tokenIssuersRegistry;\n\n    /// @dev Address of the IdentityRegistryStorage Contract\n    IIdentityRegistryStorage private tokenIdentityStorage;\n\n    /**\n     *  @dev the constructor initiates the Identity Registry smart contract\n     *  @param _trustedIssuersRegistry the trusted issuers registry linked to the Identity Registry\n     *  @param _claimTopicsRegistry the claim topics registry linked to the Identity Registry\n     *  @param _identityStorage the identity registry storage linked to the Identity Registry\n     *  emits a `ClaimTopicsRegistrySet` event\n     *  emits a `TrustedIssuersRegistrySet` event\n     *  emits an `IdentityStorageSet` event\n     */\n    constructor(\n        address _trustedIssuersRegistry,\n        address _claimTopicsRegistry,\n        address _identityStorage\n    ) {\n        tokenTopicsRegistry = IClaimTopicsRegistry(_claimTopicsRegistry);\n        tokenIssuersRegistry = ITrustedIssuersRegistry(_trustedIssuersRegistry);\n        tokenIdentityStorage = IIdentityRegistryStorage(_identityStorage);\n        emit ClaimTopicsRegistrySet(_claimTopicsRegistry);\n        emit TrustedIssuersRegistrySet(_trustedIssuersRegistry);\n        emit IdentityStorageSet(_identityStorage);\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-identity}.\n     */\n    function identity(address _userAddress) public view override returns (IIdentity) {\n        return tokenIdentityStorage.storedIdentity(_userAddress);\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-investorCountry}.\n     */\n    function investorCountry(address _userAddress) external view override returns (uint16) {\n        return tokenIdentityStorage.storedInvestorCountry(_userAddress);\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-issuersRegistry}.\n     */\n    function issuersRegistry() external view override returns (ITrustedIssuersRegistry) {\n        return tokenIssuersRegistry;\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-topicsRegistry}.\n     */\n    function topicsRegistry() external view override returns (IClaimTopicsRegistry) {\n        return tokenTopicsRegistry;\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-identityStorage}.\n     */\n    function identityStorage() external view override returns (IIdentityRegistryStorage) {\n        return tokenIdentityStorage;\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-registerIdentity}.\n     */\n    function registerIdentity(\n        address _userAddress,\n        IIdentity _identity,\n        uint16 _country\n    ) public override onlyAgent {\n        tokenIdentityStorage.addIdentityToStorage(_userAddress, _identity, _country);\n        emit IdentityRegistered(_userAddress, _identity);\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-batchRegisterIdentity}.\n     */\n    function batchRegisterIdentity(\n        address[] calldata _userAddresses,\n        IIdentity[] calldata _identities,\n        uint16[] calldata _countries\n    ) external override {\n        for (uint256 i = 0; i < _userAddresses.length; i++) {\n            registerIdentity(_userAddresses[i], _identities[i], _countries[i]);\n        }\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-updateIdentity}.\n     */\n    function updateIdentity(address _userAddress, IIdentity _identity) external override onlyAgent {\n        IIdentity oldIdentity = identity(_userAddress);\n        tokenIdentityStorage.modifyStoredIdentity(_userAddress, _identity);\n        emit IdentityUpdated(oldIdentity, _identity);\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-updateCountry}.\n     */\n    function updateCountry(address _userAddress, uint16 _country) external override onlyAgent {\n        tokenIdentityStorage.modifyStoredInvestorCountry(_userAddress, _country);\n        emit CountryUpdated(_userAddress, _country);\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-deleteIdentity}.\n     */\n    function deleteIdentity(address _userAddress) external override onlyAgent {\n        tokenIdentityStorage.removeIdentityFromStorage(_userAddress);\n        emit IdentityRemoved(_userAddress, identity(_userAddress));\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-isVerified}.\n     */\n    function isVerified(address _userAddress) external view override returns (bool) {\n        if (address(identity(_userAddress)) == address(0)) {\n            return false;\n        }\n        uint256[] memory requiredClaimTopics = tokenTopicsRegistry.getClaimTopics();\n        if (requiredClaimTopics.length == 0) {\n            return true;\n        }\n        uint256 foundClaimTopic;\n        uint256 scheme;\n        address issuer;\n        bytes memory sig;\n        bytes memory data;\n        uint256 claimTopic;\n        for (claimTopic = 0; claimTopic < requiredClaimTopics.length; claimTopic++) {\n            bytes32[] memory claimIds = identity(_userAddress).getClaimIdsByTopic(requiredClaimTopics[claimTopic]);\n            if (claimIds.length == 0) {\n                return false;\n            }\n            for (uint256 j = 0; j < claimIds.length; j++) {\n                (foundClaimTopic, scheme, issuer, sig, data, ) = identity(_userAddress).getClaim(claimIds[j]);\n\n                try IClaimIssuer(issuer).isClaimValid(identity(_userAddress), requiredClaimTopics[claimTopic], sig,\n                data) returns(bool _validity){\n                    if (\n                        _validity\n                        && tokenIssuersRegistry.hasClaimTopic(issuer, requiredClaimTopics[claimTopic])\n                        && tokenIssuersRegistry.isTrustedIssuer(issuer)\n                    ) {\n                        j = claimIds.length;\n                    }\n                    if (!tokenIssuersRegistry.isTrustedIssuer(issuer) && j == (claimIds.length - 1)) {\n                        return false;\n                    }\n                    if (!tokenIssuersRegistry.hasClaimTopic(issuer, requiredClaimTopics[claimTopic]) && j == (claimIds.length - 1)) {\n                        return false;\n                    }\n                    if (!_validity && j == (claimIds.length - 1)) {\n                        return false;\n                    }\n                }\n                catch {\n                    if (j == (claimIds.length - 1)) {\n                        return false;\n                    }\n                }\n            }\n        }\n        return true;\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-setIdentityRegistryStorage}.\n     */\n    function setIdentityRegistryStorage(address _identityRegistryStorage) external override onlyOwner {\n        tokenIdentityStorage = IIdentityRegistryStorage(_identityRegistryStorage);\n        emit IdentityStorageSet(_identityRegistryStorage);\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-setClaimTopicsRegistry}.\n     */\n    function setClaimTopicsRegistry(address _claimTopicsRegistry) external override onlyOwner {\n        tokenTopicsRegistry = IClaimTopicsRegistry(_claimTopicsRegistry);\n        emit ClaimTopicsRegistrySet(_claimTopicsRegistry);\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-setTrustedIssuersRegistry}.\n     */\n    function setTrustedIssuersRegistry(address _trustedIssuersRegistry) external override onlyOwner {\n        tokenIssuersRegistry = ITrustedIssuersRegistry(_trustedIssuersRegistry);\n        emit TrustedIssuersRegistrySet(_trustedIssuersRegistry);\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-contains}.\n     */\n    function contains(address _userAddress) external view override returns (bool) {\n        if (address(identity(_userAddress)) == address(0)) {\n            return false;\n        }\n        return true;\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-transferOwnershipOnIdentityRegistryContract}.\n     */\n    function transferOwnershipOnIdentityRegistryContract(address _newOwner) external override onlyOwner {\n        transferOwnership(_newOwner);\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-addAgentOnIdentityRegistryContract}.\n     */\n    function addAgentOnIdentityRegistryContract(address _agent) external override {\n        addAgent(_agent);\n    }\n\n    /**\n     *  @dev See {IIdentityRegistry-removeAgentOnIdentityRegistryContract}.\n     */\n    function removeAgentOnIdentityRegistryContract(address _agent) external override {\n        removeAgent(_agent);\n    }\n}\n",
  "sourcePath": "/home/webxpert/workspace/shipfinex/latest-repos/tokenx_smartcontract/contracts/registry/IdentityRegistry.sol",
  "ast": {
    "absolutePath": "project:/contracts/registry/IdentityRegistry.sol",
    "exportedSymbols": {
      "AgentRole": [
        9120
      ],
      "Context": [
        3401
      ],
      "IClaimIssuer": [
        1456
      ],
      "IClaimTopicsRegistry": [
        6444
      ],
      "IERC734": [
        1609
      ],
      "IERC735": [
        1734
      ],
      "IIdentity": [
        1743
      ],
      "IIdentityRegistry": [
        6637
      ],
      "IIdentityRegistryStorage": [
        6759
      ],
      "ITrustedIssuersRegistry": [
        6856
      ],
      "IdentityRegistry": [
        7490
      ],
      "Ownable": [
        2505
      ],
      "Roles": [
        11901
      ]
    },
    "id": 7491,
    "license": "GPL-3.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6858,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "1093:23:39"
      },
      {
        "absolutePath": "@onchain-id/solidity/contracts/interface/IClaimIssuer.sol",
        "file": "@onchain-id/solidity/contracts/interface/IClaimIssuer.sol",
        "id": 6859,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 7491,
        "sourceUnit": 1457,
        "src": "1118:67:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@onchain-id/solidity/contracts/interface/IIdentity.sol",
        "file": "@onchain-id/solidity/contracts/interface/IIdentity.sol",
        "id": 6860,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 7491,
        "sourceUnit": 1744,
        "src": "1186:64:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/registry/IClaimTopicsRegistry.sol",
        "file": "../registry/IClaimTopicsRegistry.sol",
        "id": 6861,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 7491,
        "sourceUnit": 6445,
        "src": "1252:46:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/registry/ITrustedIssuersRegistry.sol",
        "file": "../registry/ITrustedIssuersRegistry.sol",
        "id": 6862,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 7491,
        "sourceUnit": 6857,
        "src": "1299:49:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/registry/IIdentityRegistry.sol",
        "file": "../registry/IIdentityRegistry.sol",
        "id": 6863,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 7491,
        "sourceUnit": 6638,
        "src": "1349:43:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/roles/AgentRole.sol",
        "file": "../roles/AgentRole.sol",
        "id": 6864,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 7491,
        "sourceUnit": 9121,
        "src": "1393:32:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/registry/IIdentityRegistryStorage.sol",
        "file": "../registry/IIdentityRegistryStorage.sol",
        "id": 6865,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 7491,
        "sourceUnit": 6760,
        "src": "1426:50:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 6866,
              "name": "IIdentityRegistry",
              "nameLocations": [
                "1508:17:39"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 6637,
              "src": "1508:17:39"
            },
            "id": 6867,
            "nodeType": "InheritanceSpecifier",
            "src": "1508:17:39"
          },
          {
            "baseName": {
              "id": 6868,
              "name": "AgentRole",
              "nameLocations": [
                "1527:9:39"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 9120,
              "src": "1527:9:39"
            },
            "id": 6869,
            "nodeType": "InheritanceSpecifier",
            "src": "1527:9:39"
          }
        ],
        "canonicalName": "IdentityRegistry",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 7490,
        "linearizedBaseContracts": [
          7490,
          9120,
          2505,
          3401,
          6637
        ],
        "name": "IdentityRegistry",
        "nameLocation": "1488:16:39",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "documentation": {
              "id": 6870,
              "nodeType": "StructuredDocumentation",
              "src": "1543:52:39",
              "text": "@dev Address of the ClaimTopicsRegistry Contract"
            },
            "id": 6873,
            "mutability": "mutable",
            "name": "tokenTopicsRegistry",
            "nameLocation": "1629:19:39",
            "nodeType": "VariableDeclaration",
            "scope": 7490,
            "src": "1600:48:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IClaimTopicsRegistry_$6444",
              "typeString": "contract IClaimTopicsRegistry"
            },
            "typeName": {
              "id": 6872,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 6871,
                "name": "IClaimTopicsRegistry",
                "nameLocations": [
                  "1600:20:39"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 6444,
                "src": "1600:20:39"
              },
              "referencedDeclaration": 6444,
              "src": "1600:20:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IClaimTopicsRegistry_$6444",
                "typeString": "contract IClaimTopicsRegistry"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "documentation": {
              "id": 6874,
              "nodeType": "StructuredDocumentation",
              "src": "1655:55:39",
              "text": "@dev Address of the TrustedIssuersRegistry Contract"
            },
            "id": 6877,
            "mutability": "mutable",
            "name": "tokenIssuersRegistry",
            "nameLocation": "1747:20:39",
            "nodeType": "VariableDeclaration",
            "scope": 7490,
            "src": "1715:52:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
              "typeString": "contract ITrustedIssuersRegistry"
            },
            "typeName": {
              "id": 6876,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 6875,
                "name": "ITrustedIssuersRegistry",
                "nameLocations": [
                  "1715:23:39"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 6856,
                "src": "1715:23:39"
              },
              "referencedDeclaration": 6856,
              "src": "1715:23:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                "typeString": "contract ITrustedIssuersRegistry"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "documentation": {
              "id": 6878,
              "nodeType": "StructuredDocumentation",
              "src": "1774:56:39",
              "text": "@dev Address of the IdentityRegistryStorage Contract"
            },
            "id": 6881,
            "mutability": "mutable",
            "name": "tokenIdentityStorage",
            "nameLocation": "1868:20:39",
            "nodeType": "VariableDeclaration",
            "scope": 7490,
            "src": "1835:53:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
              "typeString": "contract IIdentityRegistryStorage"
            },
            "typeName": {
              "id": 6880,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 6879,
                "name": "IIdentityRegistryStorage",
                "nameLocations": [
                  "1835:24:39"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 6759,
                "src": "1835:24:39"
              },
              "referencedDeclaration": 6759,
              "src": "1835:24:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
                "typeString": "contract IIdentityRegistryStorage"
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 6921,
              "nodeType": "Block",
              "src": "2547:412:39",
              "statements": [
                {
                  "expression": {
                    "id": 6895,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 6891,
                      "name": "tokenTopicsRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6873,
                      "src": "2557:19:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IClaimTopicsRegistry_$6444",
                        "typeString": "contract IClaimTopicsRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 6893,
                          "name": "_claimTopicsRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6886,
                          "src": "2600:20:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 6892,
                        "name": "IClaimTopicsRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6444,
                        "src": "2579:20:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IClaimTopicsRegistry_$6444_$",
                          "typeString": "type(contract IClaimTopicsRegistry)"
                        }
                      },
                      "id": 6894,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2579:42:39",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IClaimTopicsRegistry_$6444",
                        "typeString": "contract IClaimTopicsRegistry"
                      }
                    },
                    "src": "2557:64:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IClaimTopicsRegistry_$6444",
                      "typeString": "contract IClaimTopicsRegistry"
                    }
                  },
                  "id": 6896,
                  "nodeType": "ExpressionStatement",
                  "src": "2557:64:39"
                },
                {
                  "expression": {
                    "id": 6901,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 6897,
                      "name": "tokenIssuersRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6877,
                      "src": "2631:20:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                        "typeString": "contract ITrustedIssuersRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 6899,
                          "name": "_trustedIssuersRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6884,
                          "src": "2678:23:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 6898,
                        "name": "ITrustedIssuersRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6856,
                        "src": "2654:23:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ITrustedIssuersRegistry_$6856_$",
                          "typeString": "type(contract ITrustedIssuersRegistry)"
                        }
                      },
                      "id": 6900,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2654:48:39",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                        "typeString": "contract ITrustedIssuersRegistry"
                      }
                    },
                    "src": "2631:71:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                      "typeString": "contract ITrustedIssuersRegistry"
                    }
                  },
                  "id": 6902,
                  "nodeType": "ExpressionStatement",
                  "src": "2631:71:39"
                },
                {
                  "expression": {
                    "id": 6907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 6903,
                      "name": "tokenIdentityStorage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6881,
                      "src": "2712:20:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
                        "typeString": "contract IIdentityRegistryStorage"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 6905,
                          "name": "_identityStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6888,
                          "src": "2760:16:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 6904,
                        "name": "IIdentityRegistryStorage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6759,
                        "src": "2735:24:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IIdentityRegistryStorage_$6759_$",
                          "typeString": "type(contract IIdentityRegistryStorage)"
                        }
                      },
                      "id": 6906,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2735:42:39",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
                        "typeString": "contract IIdentityRegistryStorage"
                      }
                    },
                    "src": "2712:65:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
                      "typeString": "contract IIdentityRegistryStorage"
                    }
                  },
                  "id": 6908,
                  "nodeType": "ExpressionStatement",
                  "src": "2712:65:39"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 6910,
                        "name": "_claimTopicsRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6886,
                        "src": "2815:20:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6909,
                      "name": "ClaimTopicsRegistrySet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6456,
                      "src": "2792:22:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 6911,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2792:44:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6912,
                  "nodeType": "EmitStatement",
                  "src": "2787:49:39"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 6914,
                        "name": "_trustedIssuersRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6884,
                        "src": "2877:23:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6913,
                      "name": "TrustedIssuersRegistrySet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6466,
                      "src": "2851:25:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 6915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2851:50:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6916,
                  "nodeType": "EmitStatement",
                  "src": "2846:55:39"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 6918,
                        "name": "_identityStorage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6888,
                        "src": "2935:16:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6917,
                      "name": "IdentityStorageSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6461,
                      "src": "2916:18:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 6919,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2916:36:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6920,
                  "nodeType": "EmitStatement",
                  "src": "2911:41:39"
                }
              ]
            },
            "documentation": {
              "id": 6882,
              "nodeType": "StructuredDocumentation",
              "src": "1895:516:39",
              "text": "  @dev the constructor initiates the Identity Registry smart contract\n  @param _trustedIssuersRegistry the trusted issuers registry linked to the Identity Registry\n  @param _claimTopicsRegistry the claim topics registry linked to the Identity Registry\n  @param _identityStorage the identity registry storage linked to the Identity Registry\n  emits a `ClaimTopicsRegistrySet` event\n  emits a `TrustedIssuersRegistrySet` event\n  emits an `IdentityStorageSet` event"
            },
            "id": 6922,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6889,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6884,
                  "mutability": "mutable",
                  "name": "_trustedIssuersRegistry",
                  "nameLocation": "2445:23:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 6922,
                  "src": "2437:31:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6883,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2437:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6886,
                  "mutability": "mutable",
                  "name": "_claimTopicsRegistry",
                  "nameLocation": "2486:20:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 6922,
                  "src": "2478:28:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6885,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2478:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6888,
                  "mutability": "mutable",
                  "name": "_identityStorage",
                  "nameLocation": "2524:16:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 6922,
                  "src": "2516:24:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6887,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2516:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2427:119:39"
            },
            "returnParameters": {
              "id": 6890,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2547:0:39"
            },
            "scope": 7490,
            "src": "2416:543:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6589
            ],
            "body": {
              "id": 6937,
              "nodeType": "Block",
              "src": "3109:73:39",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6934,
                        "name": "_userAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6925,
                        "src": "3162:12:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 6932,
                        "name": "tokenIdentityStorage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6881,
                        "src": "3126:20:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
                          "typeString": "contract IIdentityRegistryStorage"
                        }
                      },
                      "id": 6933,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3147:14:39",
                      "memberName": "storedIdentity",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6698,
                      "src": "3126:35:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_contract$_IIdentity_$1743_$",
                        "typeString": "function (address) view external returns (contract IIdentity)"
                      }
                    },
                    "id": 6935,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3126:49:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "functionReturnParameters": 6931,
                  "id": 6936,
                  "nodeType": "Return",
                  "src": "3119:56:39"
                }
              ]
            },
            "documentation": {
              "id": 6923,
              "nodeType": "StructuredDocumentation",
              "src": "2965:58:39",
              "text": "  @dev See {IIdentityRegistry-identity}."
            },
            "functionSelector": "f0eb5e54",
            "id": 6938,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "identity",
            "nameLocation": "3037:8:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6927,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3080:8:39"
            },
            "parameters": {
              "id": 6926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6925,
                  "mutability": "mutable",
                  "name": "_userAddress",
                  "nameLocation": "3054:12:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 6938,
                  "src": "3046:20:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6924,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3046:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3045:22:39"
            },
            "returnParameters": {
              "id": 6931,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6930,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6938,
                  "src": "3098:9:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 6929,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6928,
                      "name": "IIdentity",
                      "nameLocations": [
                        "3098:9:39"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "3098:9:39"
                    },
                    "referencedDeclaration": 1743,
                    "src": "3098:9:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3097:11:39"
            },
            "scope": 7490,
            "src": "3028:154:39",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6597
            ],
            "body": {
              "id": 6952,
              "nodeType": "Block",
              "src": "3345:80:39",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6949,
                        "name": "_userAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6941,
                        "src": "3405:12:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 6947,
                        "name": "tokenIdentityStorage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6881,
                        "src": "3362:20:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
                          "typeString": "contract IIdentityRegistryStorage"
                        }
                      },
                      "id": 6948,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3383:21:39",
                      "memberName": "storedInvestorCountry",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6706,
                      "src": "3362:42:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint16_$",
                        "typeString": "function (address) view external returns (uint16)"
                      }
                    },
                    "id": 6950,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3362:56:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "functionReturnParameters": 6946,
                  "id": 6951,
                  "nodeType": "Return",
                  "src": "3355:63:39"
                }
              ]
            },
            "documentation": {
              "id": 6939,
              "nodeType": "StructuredDocumentation",
              "src": "3188:65:39",
              "text": "  @dev See {IIdentityRegistry-investorCountry}."
            },
            "functionSelector": "7e42683b",
            "id": 6953,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "investorCountry",
            "nameLocation": "3267:15:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6943,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3319:8:39"
            },
            "parameters": {
              "id": 6942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6941,
                  "mutability": "mutable",
                  "name": "_userAddress",
                  "nameLocation": "3291:12:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 6953,
                  "src": "3283:20:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6940,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3283:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3282:22:39"
            },
            "returnParameters": {
              "id": 6946,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6945,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6953,
                  "src": "3337:6:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 6944,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "3337:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3336:8:39"
            },
            "scope": 7490,
            "src": "3258:167:39",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6611
            ],
            "body": {
              "id": 6963,
              "nodeType": "Block",
              "src": "3585:44:39",
              "statements": [
                {
                  "expression": {
                    "id": 6961,
                    "name": "tokenIssuersRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6877,
                    "src": "3602:20:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                      "typeString": "contract ITrustedIssuersRegistry"
                    }
                  },
                  "functionReturnParameters": 6960,
                  "id": 6962,
                  "nodeType": "Return",
                  "src": "3595:27:39"
                }
              ]
            },
            "documentation": {
              "id": 6954,
              "nodeType": "StructuredDocumentation",
              "src": "3431:65:39",
              "text": "  @dev See {IIdentityRegistry-issuersRegistry}."
            },
            "functionSelector": "b4f3fcb7",
            "id": 6964,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "issuersRegistry",
            "nameLocation": "3510:15:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6956,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3542:8:39"
            },
            "parameters": {
              "id": 6955,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3525:2:39"
            },
            "returnParameters": {
              "id": 6960,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6959,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6964,
                  "src": "3560:23:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                    "typeString": "contract ITrustedIssuersRegistry"
                  },
                  "typeName": {
                    "id": 6958,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6957,
                      "name": "ITrustedIssuersRegistry",
                      "nameLocations": [
                        "3560:23:39"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 6856,
                      "src": "3560:23:39"
                    },
                    "referencedDeclaration": 6856,
                    "src": "3560:23:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                      "typeString": "contract ITrustedIssuersRegistry"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3559:25:39"
            },
            "scope": 7490,
            "src": "3501:128:39",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6618
            ],
            "body": {
              "id": 6974,
              "nodeType": "Block",
              "src": "3784:43:39",
              "statements": [
                {
                  "expression": {
                    "id": 6972,
                    "name": "tokenTopicsRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6873,
                    "src": "3801:19:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IClaimTopicsRegistry_$6444",
                      "typeString": "contract IClaimTopicsRegistry"
                    }
                  },
                  "functionReturnParameters": 6971,
                  "id": 6973,
                  "nodeType": "Return",
                  "src": "3794:26:39"
                }
              ]
            },
            "documentation": {
              "id": 6965,
              "nodeType": "StructuredDocumentation",
              "src": "3635:64:39",
              "text": "  @dev See {IIdentityRegistry-topicsRegistry}."
            },
            "functionSelector": "3b3e12f4",
            "id": 6975,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "topicsRegistry",
            "nameLocation": "3713:14:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6967,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3744:8:39"
            },
            "parameters": {
              "id": 6966,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3727:2:39"
            },
            "returnParameters": {
              "id": 6971,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6970,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6975,
                  "src": "3762:20:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IClaimTopicsRegistry_$6444",
                    "typeString": "contract IClaimTopicsRegistry"
                  },
                  "typeName": {
                    "id": 6969,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6968,
                      "name": "IClaimTopicsRegistry",
                      "nameLocations": [
                        "3762:20:39"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 6444,
                      "src": "3762:20:39"
                    },
                    "referencedDeclaration": 6444,
                    "src": "3762:20:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IClaimTopicsRegistry_$6444",
                      "typeString": "contract IClaimTopicsRegistry"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3761:22:39"
            },
            "scope": 7490,
            "src": "3704:123:39",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6604
            ],
            "body": {
              "id": 6985,
              "nodeType": "Block",
              "src": "3988:44:39",
              "statements": [
                {
                  "expression": {
                    "id": 6983,
                    "name": "tokenIdentityStorage",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6881,
                    "src": "4005:20:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
                      "typeString": "contract IIdentityRegistryStorage"
                    }
                  },
                  "functionReturnParameters": 6982,
                  "id": 6984,
                  "nodeType": "Return",
                  "src": "3998:27:39"
                }
              ]
            },
            "documentation": {
              "id": 6976,
              "nodeType": "StructuredDocumentation",
              "src": "3833:65:39",
              "text": "  @dev See {IIdentityRegistry-identityStorage}."
            },
            "functionSelector": "f11abfd8",
            "id": 6986,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "identityStorage",
            "nameLocation": "3912:15:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6978,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3944:8:39"
            },
            "parameters": {
              "id": 6977,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3927:2:39"
            },
            "returnParameters": {
              "id": 6982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6981,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6986,
                  "src": "3962:24:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
                    "typeString": "contract IIdentityRegistryStorage"
                  },
                  "typeName": {
                    "id": 6980,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6979,
                      "name": "IIdentityRegistryStorage",
                      "nameLocations": [
                        "3962:24:39"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 6759,
                      "src": "3962:24:39"
                    },
                    "referencedDeclaration": 6759,
                    "src": "3962:24:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
                      "typeString": "contract IIdentityRegistryStorage"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3961:26:39"
            },
            "scope": 7490,
            "src": "3903:129:39",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6509
            ],
            "body": {
              "id": 7013,
              "nodeType": "Block",
              "src": "4251:151:39",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7003,
                        "name": "_userAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6989,
                        "src": "4303:12:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 7004,
                        "name": "_identity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6992,
                        "src": "4317:9:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentity_$1743",
                          "typeString": "contract IIdentity"
                        }
                      },
                      {
                        "id": 7005,
                        "name": "_country",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6994,
                        "src": "4328:8:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_IIdentity_$1743",
                          "typeString": "contract IIdentity"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "expression": {
                        "id": 7000,
                        "name": "tokenIdentityStorage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6881,
                        "src": "4261:20:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
                          "typeString": "contract IIdentityRegistryStorage"
                        }
                      },
                      "id": 7002,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4282:20:39",
                      "memberName": "addIdentityToStorage",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6717,
                      "src": "4261:41:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_contract$_IIdentity_$1743_$_t_uint16_$returns$__$",
                        "typeString": "function (address,contract IIdentity,uint16) external"
                      }
                    },
                    "id": 7006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4261:76:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7007,
                  "nodeType": "ExpressionStatement",
                  "src": "4261:76:39"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 7009,
                        "name": "_userAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6989,
                        "src": "4371:12:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 7010,
                        "name": "_identity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6992,
                        "src": "4385:9:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentity_$1743",
                          "typeString": "contract IIdentity"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_IIdentity_$1743",
                          "typeString": "contract IIdentity"
                        }
                      ],
                      "id": 7008,
                      "name": "IdentityRegistered",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6474,
                      "src": "4352:18:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_IIdentity_$1743_$returns$__$",
                        "typeString": "function (address,contract IIdentity)"
                      }
                    },
                    "id": 7011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4352:43:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7012,
                  "nodeType": "EmitStatement",
                  "src": "4347:48:39"
                }
              ]
            },
            "documentation": {
              "id": 6987,
              "nodeType": "StructuredDocumentation",
              "src": "4038:66:39",
              "text": "  @dev See {IIdentityRegistry-registerIdentity}."
            },
            "functionSelector": "454a03e0",
            "id": 7014,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 6998,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 6997,
                  "name": "onlyAgent",
                  "nameLocations": [
                    "4241:9:39"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 9070,
                  "src": "4241:9:39"
                },
                "nodeType": "ModifierInvocation",
                "src": "4241:9:39"
              }
            ],
            "name": "registerIdentity",
            "nameLocation": "4118:16:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 6996,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4232:8:39"
            },
            "parameters": {
              "id": 6995,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6989,
                  "mutability": "mutable",
                  "name": "_userAddress",
                  "nameLocation": "4152:12:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7014,
                  "src": "4144:20:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6988,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4144:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6992,
                  "mutability": "mutable",
                  "name": "_identity",
                  "nameLocation": "4184:9:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7014,
                  "src": "4174:19:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 6991,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6990,
                      "name": "IIdentity",
                      "nameLocations": [
                        "4174:9:39"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "4174:9:39"
                    },
                    "referencedDeclaration": 1743,
                    "src": "4174:9:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6994,
                  "mutability": "mutable",
                  "name": "_country",
                  "nameLocation": "4210:8:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7014,
                  "src": "4203:15:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 6993,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "4203:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4134:90:39"
            },
            "returnParameters": {
              "id": 6999,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4251:0:39"
            },
            "scope": 7490,
            "src": "4109:293:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6564
            ],
            "body": {
              "id": 7054,
              "nodeType": "Block",
              "src": "4662:159:39",
              "statements": [
                {
                  "body": {
                    "id": 7052,
                    "nodeType": "Block",
                    "src": "4724:91:39",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 7041,
                                "name": "_userAddresses",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7018,
                                "src": "4755:14:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 7043,
                              "indexExpression": {
                                "id": 7042,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7030,
                                "src": "4770:1:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4755:17:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 7044,
                                "name": "_identities",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7022,
                                "src": "4774:11:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IIdentity_$1743_$dyn_calldata_ptr",
                                  "typeString": "contract IIdentity[] calldata"
                                }
                              },
                              "id": 7046,
                              "indexExpression": {
                                "id": 7045,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7030,
                                "src": "4786:1:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4774:14:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$1743",
                                "typeString": "contract IIdentity"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 7047,
                                "name": "_countries",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7025,
                                "src": "4790:10:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint16_$dyn_calldata_ptr",
                                  "typeString": "uint16[] calldata"
                                }
                              },
                              "id": 7049,
                              "indexExpression": {
                                "id": 7048,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7030,
                                "src": "4801:1:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4790:13:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_contract$_IIdentity_$1743",
                                "typeString": "contract IIdentity"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "id": 7040,
                            "name": "registerIdentity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7014,
                            "src": "4738:16:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_contract$_IIdentity_$1743_$_t_uint16_$returns$__$",
                              "typeString": "function (address,contract IIdentity,uint16)"
                            }
                          },
                          "id": 7050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4738:66:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7051,
                        "nodeType": "ExpressionStatement",
                        "src": "4738:66:39"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 7033,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7030,
                      "src": "4692:1:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 7034,
                        "name": "_userAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7018,
                        "src": "4696:14:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 7035,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4711:6:39",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "4696:21:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4692:25:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7053,
                  "initializationExpression": {
                    "assignments": [
                      7030
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 7030,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "4685:1:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7053,
                        "src": "4677:9:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7029,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4677:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 7032,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 7031,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4689:1:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4677:13:39"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 7038,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4719:3:39",
                      "subExpression": {
                        "id": 7037,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7030,
                        "src": "4719:1:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 7039,
                    "nodeType": "ExpressionStatement",
                    "src": "4719:3:39"
                  },
                  "nodeType": "ForStatement",
                  "src": "4672:143:39"
                }
              ]
            },
            "documentation": {
              "id": 7015,
              "nodeType": "StructuredDocumentation",
              "src": "4408:71:39",
              "text": "  @dev See {IIdentityRegistry-batchRegisterIdentity}."
            },
            "functionSelector": "653dc9f1",
            "id": 7055,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "batchRegisterIdentity",
            "nameLocation": "4493:21:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7027,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4653:8:39"
            },
            "parameters": {
              "id": 7026,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7018,
                  "mutability": "mutable",
                  "name": "_userAddresses",
                  "nameLocation": "4543:14:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7055,
                  "src": "4524:33:39",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7016,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4524:7:39",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 7017,
                    "nodeType": "ArrayTypeName",
                    "src": "4524:9:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7022,
                  "mutability": "mutable",
                  "name": "_identities",
                  "nameLocation": "4588:11:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7055,
                  "src": "4567:32:39",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IIdentity_$1743_$dyn_calldata_ptr",
                    "typeString": "contract IIdentity[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7020,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 7019,
                        "name": "IIdentity",
                        "nameLocations": [
                          "4567:9:39"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1743,
                        "src": "4567:9:39"
                      },
                      "referencedDeclaration": 1743,
                      "src": "4567:9:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IIdentity_$1743",
                        "typeString": "contract IIdentity"
                      }
                    },
                    "id": 7021,
                    "nodeType": "ArrayTypeName",
                    "src": "4567:11:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IIdentity_$1743_$dyn_storage_ptr",
                      "typeString": "contract IIdentity[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7025,
                  "mutability": "mutable",
                  "name": "_countries",
                  "nameLocation": "4627:10:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7055,
                  "src": "4609:28:39",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint16_$dyn_calldata_ptr",
                    "typeString": "uint16[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7023,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "4609:6:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "id": 7024,
                    "nodeType": "ArrayTypeName",
                    "src": "4609:8:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint16_$dyn_storage_ptr",
                      "typeString": "uint16[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4514:129:39"
            },
            "returnParameters": {
              "id": 7028,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4662:0:39"
            },
            "scope": 7490,
            "src": "4484:337:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6550
            ],
            "body": {
              "id": 7086,
              "nodeType": "Block",
              "src": "4991:193:39",
              "statements": [
                {
                  "assignments": [
                    7069
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7069,
                      "mutability": "mutable",
                      "name": "oldIdentity",
                      "nameLocation": "5011:11:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7086,
                      "src": "5001:21:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IIdentity_$1743",
                        "typeString": "contract IIdentity"
                      },
                      "typeName": {
                        "id": 7068,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 7067,
                          "name": "IIdentity",
                          "nameLocations": [
                            "5001:9:39"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1743,
                          "src": "5001:9:39"
                        },
                        "referencedDeclaration": 1743,
                        "src": "5001:9:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentity_$1743",
                          "typeString": "contract IIdentity"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7073,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 7071,
                        "name": "_userAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7058,
                        "src": "5034:12:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 7070,
                      "name": "identity",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6938,
                      "src": "5025:8:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_contract$_IIdentity_$1743_$",
                        "typeString": "function (address) view returns (contract IIdentity)"
                      }
                    },
                    "id": 7072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5025:22:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5001:46:39"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7077,
                        "name": "_userAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7058,
                        "src": "5099:12:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 7078,
                        "name": "_identity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7061,
                        "src": "5113:9:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentity_$1743",
                          "typeString": "contract IIdentity"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_IIdentity_$1743",
                          "typeString": "contract IIdentity"
                        }
                      ],
                      "expression": {
                        "id": 7074,
                        "name": "tokenIdentityStorage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6881,
                        "src": "5057:20:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
                          "typeString": "contract IIdentityRegistryStorage"
                        }
                      },
                      "id": 7076,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5078:20:39",
                      "memberName": "modifyStoredIdentity",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6740,
                      "src": "5057:41:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_contract$_IIdentity_$1743_$returns$__$",
                        "typeString": "function (address,contract IIdentity) external"
                      }
                    },
                    "id": 7079,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5057:66:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7080,
                  "nodeType": "ExpressionStatement",
                  "src": "5057:66:39"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 7082,
                        "name": "oldIdentity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7069,
                        "src": "5154:11:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentity_$1743",
                          "typeString": "contract IIdentity"
                        }
                      },
                      {
                        "id": 7083,
                        "name": "_identity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7061,
                        "src": "5167:9:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentity_$1743",
                          "typeString": "contract IIdentity"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IIdentity_$1743",
                          "typeString": "contract IIdentity"
                        },
                        {
                          "typeIdentifier": "t_contract$_IIdentity_$1743",
                          "typeString": "contract IIdentity"
                        }
                      ],
                      "id": 7081,
                      "name": "IdentityUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6491,
                      "src": "5138:15:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IIdentity_$1743_$_t_contract$_IIdentity_$1743_$returns$__$",
                        "typeString": "function (contract IIdentity,contract IIdentity)"
                      }
                    },
                    "id": 7084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5138:39:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7085,
                  "nodeType": "EmitStatement",
                  "src": "5133:44:39"
                }
              ]
            },
            "documentation": {
              "id": 7056,
              "nodeType": "StructuredDocumentation",
              "src": "4827:64:39",
              "text": "  @dev See {IIdentityRegistry-updateIdentity}."
            },
            "functionSelector": "8e098ca1",
            "id": 7087,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 7065,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 7064,
                  "name": "onlyAgent",
                  "nameLocations": [
                    "4981:9:39"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 9070,
                  "src": "4981:9:39"
                },
                "nodeType": "ModifierInvocation",
                "src": "4981:9:39"
              }
            ],
            "name": "updateIdentity",
            "nameLocation": "4905:14:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7063,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4972:8:39"
            },
            "parameters": {
              "id": 7062,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7058,
                  "mutability": "mutable",
                  "name": "_userAddress",
                  "nameLocation": "4928:12:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7087,
                  "src": "4920:20:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7057,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4920:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7061,
                  "mutability": "mutable",
                  "name": "_identity",
                  "nameLocation": "4952:9:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7087,
                  "src": "4942:19:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 7060,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 7059,
                      "name": "IIdentity",
                      "nameLocations": [
                        "4942:9:39"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "4942:9:39"
                    },
                    "referencedDeclaration": 1743,
                    "src": "4942:9:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4919:43:39"
            },
            "returnParameters": {
              "id": 7066,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4991:0:39"
            },
            "scope": 7490,
            "src": "4896:288:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6541
            ],
            "body": {
              "id": 7110,
              "nodeType": "Block",
              "src": "5348:142:39",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7101,
                        "name": "_userAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7090,
                        "src": "5407:12:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 7102,
                        "name": "_country",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7092,
                        "src": "5421:8:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "expression": {
                        "id": 7098,
                        "name": "tokenIdentityStorage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6881,
                        "src": "5358:20:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
                          "typeString": "contract IIdentityRegistryStorage"
                        }
                      },
                      "id": 7100,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5379:27:39",
                      "memberName": "modifyStoredInvestorCountry",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6731,
                      "src": "5358:48:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint16_$returns$__$",
                        "typeString": "function (address,uint16) external"
                      }
                    },
                    "id": 7103,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5358:72:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7104,
                  "nodeType": "ExpressionStatement",
                  "src": "5358:72:39"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 7106,
                        "name": "_userAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7090,
                        "src": "5460:12:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 7107,
                        "name": "_country",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7092,
                        "src": "5474:8:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      ],
                      "id": 7105,
                      "name": "CountryUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6498,
                      "src": "5445:14:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint16_$returns$__$",
                        "typeString": "function (address,uint16)"
                      }
                    },
                    "id": 7108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5445:38:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7109,
                  "nodeType": "EmitStatement",
                  "src": "5440:43:39"
                }
              ]
            },
            "documentation": {
              "id": 7088,
              "nodeType": "StructuredDocumentation",
              "src": "5190:63:39",
              "text": "  @dev See {IIdentityRegistry-updateCountry}."
            },
            "functionSelector": "3b239a7f",
            "id": 7111,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 7096,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 7095,
                  "name": "onlyAgent",
                  "nameLocations": [
                    "5338:9:39"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 9070,
                  "src": "5338:9:39"
                },
                "nodeType": "ModifierInvocation",
                "src": "5338:9:39"
              }
            ],
            "name": "updateCountry",
            "nameLocation": "5267:13:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7094,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5329:8:39"
            },
            "parameters": {
              "id": 7093,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7090,
                  "mutability": "mutable",
                  "name": "_userAddress",
                  "nameLocation": "5289:12:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7111,
                  "src": "5281:20:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7089,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5281:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7092,
                  "mutability": "mutable",
                  "name": "_country",
                  "nameLocation": "5310:8:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7111,
                  "src": "5303:15:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 7091,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "5303:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5280:39:39"
            },
            "returnParameters": {
              "id": 7097,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5348:0:39"
            },
            "scope": 7490,
            "src": "5258:232:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6515
            ],
            "body": {
              "id": 7133,
              "nodeType": "Block",
              "src": "5639:145:39",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7123,
                        "name": "_userAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7114,
                        "src": "5696:12:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 7120,
                        "name": "tokenIdentityStorage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6881,
                        "src": "5649:20:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
                          "typeString": "contract IIdentityRegistryStorage"
                        }
                      },
                      "id": 7122,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5670:25:39",
                      "memberName": "removeIdentityFromStorage",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6723,
                      "src": "5649:46:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 7124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5649:60:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7125,
                  "nodeType": "ExpressionStatement",
                  "src": "5649:60:39"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 7127,
                        "name": "_userAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7114,
                        "src": "5740:12:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 7129,
                            "name": "_userAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7114,
                            "src": "5763:12:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 7128,
                          "name": "identity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6938,
                          "src": "5754:8:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_contract$_IIdentity_$1743_$",
                            "typeString": "function (address) view returns (contract IIdentity)"
                          }
                        },
                        "id": 7130,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5754:22:39",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentity_$1743",
                          "typeString": "contract IIdentity"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_contract$_IIdentity_$1743",
                          "typeString": "contract IIdentity"
                        }
                      ],
                      "id": 7126,
                      "name": "IdentityRemoved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6482,
                      "src": "5724:15:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_IIdentity_$1743_$returns$__$",
                        "typeString": "function (address,contract IIdentity)"
                      }
                    },
                    "id": 7131,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5724:53:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7132,
                  "nodeType": "EmitStatement",
                  "src": "5719:58:39"
                }
              ]
            },
            "documentation": {
              "id": 7112,
              "nodeType": "StructuredDocumentation",
              "src": "5496:64:39",
              "text": "  @dev See {IIdentityRegistry-deleteIdentity}."
            },
            "functionSelector": "a8d29d1d",
            "id": 7134,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 7118,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 7117,
                  "name": "onlyAgent",
                  "nameLocations": [
                    "5629:9:39"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 9070,
                  "src": "5629:9:39"
                },
                "nodeType": "ModifierInvocation",
                "src": "5629:9:39"
              }
            ],
            "name": "deleteIdentity",
            "nameLocation": "5574:14:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7116,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5620:8:39"
            },
            "parameters": {
              "id": 7115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7114,
                  "mutability": "mutable",
                  "name": "_userAddress",
                  "nameLocation": "5597:12:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7134,
                  "src": "5589:20:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7113,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5589:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5588:22:39"
            },
            "returnParameters": {
              "id": 7119,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5639:0:39"
            },
            "scope": 7490,
            "src": "5565:219:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6580
            ],
            "body": {
              "id": 7363,
              "nodeType": "Block",
              "src": "5935:2083:39",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 7153,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 7146,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7137,
                              "src": "5966:12:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7145,
                            "name": "identity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6938,
                            "src": "5957:8:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_contract$_IIdentity_$1743_$",
                              "typeString": "function (address) view returns (contract IIdentity)"
                            }
                          },
                          "id": 7147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5957:22:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IIdentity_$1743",
                            "typeString": "contract IIdentity"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IIdentity_$1743",
                            "typeString": "contract IIdentity"
                          }
                        ],
                        "id": 7144,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5949:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 7143,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5949:7:39",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 7148,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5949:31:39",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 7151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5992:1:39",
                          "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": 7150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5984:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 7149,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5984:7:39",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 7152,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5984:10:39",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5949:45:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7157,
                  "nodeType": "IfStatement",
                  "src": "5945:88:39",
                  "trueBody": {
                    "id": 7156,
                    "nodeType": "Block",
                    "src": "5996:37:39",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "66616c7365",
                          "id": 7154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6017:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 7142,
                        "id": 7155,
                        "nodeType": "Return",
                        "src": "6010:12:39"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    7162
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7162,
                      "mutability": "mutable",
                      "name": "requiredClaimTopics",
                      "nameLocation": "6059:19:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7363,
                      "src": "6042:36:39",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7160,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6042:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7161,
                        "nodeType": "ArrayTypeName",
                        "src": "6042:9:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7166,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 7163,
                        "name": "tokenTopicsRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6873,
                        "src": "6081:19:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IClaimTopicsRegistry_$6444",
                          "typeString": "contract IClaimTopicsRegistry"
                        }
                      },
                      "id": 7164,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6101:14:39",
                      "memberName": "getClaimTopics",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6437,
                      "src": "6081:34:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function () view external returns (uint256[] memory)"
                      }
                    },
                    "id": 7165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6081:36:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6042:75:39"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7170,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 7167,
                        "name": "requiredClaimTopics",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7162,
                        "src": "6131:19:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 7168,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6151:6:39",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "6131:26:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 7169,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6161:1:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "6131:31:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7174,
                  "nodeType": "IfStatement",
                  "src": "6127:73:39",
                  "trueBody": {
                    "id": 7173,
                    "nodeType": "Block",
                    "src": "6164:36:39",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 7171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6185:4:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 7142,
                        "id": 7172,
                        "nodeType": "Return",
                        "src": "6178:11:39"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    7176
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7176,
                      "mutability": "mutable",
                      "name": "foundClaimTopic",
                      "nameLocation": "6217:15:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7363,
                      "src": "6209:23:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7175,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6209:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7177,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6209:23:39"
                },
                {
                  "assignments": [
                    7179
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7179,
                      "mutability": "mutable",
                      "name": "scheme",
                      "nameLocation": "6250:6:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7363,
                      "src": "6242:14:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7178,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6242:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7180,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6242:14:39"
                },
                {
                  "assignments": [
                    7182
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7182,
                      "mutability": "mutable",
                      "name": "issuer",
                      "nameLocation": "6274:6:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7363,
                      "src": "6266:14:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7181,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6266:7:39",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7183,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6266:14:39"
                },
                {
                  "assignments": [
                    7185
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7185,
                      "mutability": "mutable",
                      "name": "sig",
                      "nameLocation": "6303:3:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7363,
                      "src": "6290:16:39",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7184,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "6290:5:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7186,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6290:16:39"
                },
                {
                  "assignments": [
                    7188
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7188,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "6329:4:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7363,
                      "src": "6316:17:39",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7187,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "6316:5:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7189,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6316:17:39"
                },
                {
                  "assignments": [
                    7191
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7191,
                      "mutability": "mutable",
                      "name": "claimTopic",
                      "nameLocation": "6351:10:39",
                      "nodeType": "VariableDeclaration",
                      "scope": 7363,
                      "src": "6343:18:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7190,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6343:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7192,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6343:18:39"
                },
                {
                  "body": {
                    "id": 7359,
                    "nodeType": "Block",
                    "src": "6447:1544:39",
                    "statements": [
                      {
                        "assignments": [
                          7208
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7208,
                            "mutability": "mutable",
                            "name": "claimIds",
                            "nameLocation": "6478:8:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 7359,
                            "src": "6461:25:39",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 7206,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "6461:7:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 7207,
                              "nodeType": "ArrayTypeName",
                              "src": "6461:9:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7217,
                        "initialValue": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 7213,
                                "name": "requiredClaimTopics",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7162,
                                "src": "6531:19:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 7215,
                              "indexExpression": {
                                "id": 7214,
                                "name": "claimTopic",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7191,
                                "src": "6551:10:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6531:31:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 7210,
                                  "name": "_userAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7137,
                                  "src": "6498:12:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 7209,
                                "name": "identity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6938,
                                "src": "6489:8:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_contract$_IIdentity_$1743_$",
                                  "typeString": "function (address) view returns (contract IIdentity)"
                                }
                              },
                              "id": 7211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6489:22:39",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$1743",
                                "typeString": "contract IIdentity"
                              }
                            },
                            "id": 7212,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6512:18:39",
                            "memberName": "getClaimIdsByTopic",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1707,
                            "src": "6489:41:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) view external returns (bytes32[] memory)"
                            }
                          },
                          "id": 7216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6489:74:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6461:102:39"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 7218,
                              "name": "claimIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7208,
                              "src": "6581:8:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 7219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6590:6:39",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "6581:15:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 7220,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6600:1:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6581:20:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7225,
                        "nodeType": "IfStatement",
                        "src": "6577:71:39",
                        "trueBody": {
                          "id": 7224,
                          "nodeType": "Block",
                          "src": "6603:45:39",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "66616c7365",
                                "id": 7222,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6628:5:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 7142,
                              "id": 7223,
                              "nodeType": "Return",
                              "src": "6621:12:39"
                            }
                          ]
                        }
                      },
                      {
                        "body": {
                          "id": 7357,
                          "nodeType": "Block",
                          "src": "6707:1274:39",
                          "statements": [
                            {
                              "expression": {
                                "id": 7251,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 7237,
                                      "name": "foundClaimTopic",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7176,
                                      "src": "6726:15:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 7238,
                                      "name": "scheme",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7179,
                                      "src": "6743:6:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 7239,
                                      "name": "issuer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7182,
                                      "src": "6751:6:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 7240,
                                      "name": "sig",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7185,
                                      "src": "6759:3:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "id": 7241,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7188,
                                      "src": "6764:4:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    null
                                  ],
                                  "id": 7242,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "6725:46:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$__$",
                                    "typeString": "tuple(uint256,uint256,address,bytes memory,bytes memory,)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 7247,
                                        "name": "claimIds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7208,
                                        "src": "6806:8:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                          "typeString": "bytes32[] memory"
                                        }
                                      },
                                      "id": 7249,
                                      "indexExpression": {
                                        "id": 7248,
                                        "name": "j",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7227,
                                        "src": "6815:1:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6806:11:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 7244,
                                          "name": "_userAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7137,
                                          "src": "6783:12:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 7243,
                                        "name": "identity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6938,
                                        "src": "6774:8:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_contract$_IIdentity_$1743_$",
                                          "typeString": "function (address) view returns (contract IIdentity)"
                                        }
                                      },
                                      "id": 7245,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6774:22:39",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IIdentity_$1743",
                                        "typeString": "contract IIdentity"
                                      }
                                    },
                                    "id": 7246,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "6797:8:39",
                                    "memberName": "getClaim",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1698,
                                    "src": "6774:31:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$",
                                      "typeString": "function (bytes32) view external returns (uint256,uint256,address,bytes memory,bytes memory,string memory)"
                                    }
                                  },
                                  "id": 7250,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6774:44:39",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$",
                                    "typeString": "tuple(uint256,uint256,address,bytes memory,bytes memory,string memory)"
                                  }
                                },
                                "src": "6725:93:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7252,
                              "nodeType": "ExpressionStatement",
                              "src": "6725:93:39"
                            },
                            {
                              "clauses": [
                                {
                                  "block": {
                                    "id": 7341,
                                    "nodeType": "Block",
                                    "src": "6982:829:39",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "id": 7282,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "id": 7277,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 7269,
                                              "name": "_validity",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7267,
                                              "src": "7033:9:39",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&&",
                                            "rightExpression": {
                                              "arguments": [
                                                {
                                                  "id": 7272,
                                                  "name": "issuer",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 7182,
                                                  "src": "7105:6:39",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                {
                                                  "baseExpression": {
                                                    "id": 7273,
                                                    "name": "requiredClaimTopics",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7162,
                                                    "src": "7113:19:39",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                      "typeString": "uint256[] memory"
                                                    }
                                                  },
                                                  "id": 7275,
                                                  "indexExpression": {
                                                    "id": 7274,
                                                    "name": "claimTopic",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7191,
                                                    "src": "7133:10:39",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "7113:31:39",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "id": 7270,
                                                  "name": "tokenIssuersRegistry",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6877,
                                                  "src": "7070:20:39",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                                                    "typeString": "contract ITrustedIssuersRegistry"
                                                  }
                                                },
                                                "id": 7271,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "7091:13:39",
                                                "memberName": "hasClaimTopic",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 6849,
                                                "src": "7070:34:39",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                  "typeString": "function (address,uint256) view external returns (bool)"
                                                }
                                              },
                                              "id": 7276,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "7070:75:39",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "src": "7033:112:39",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&&",
                                          "rightExpression": {
                                            "arguments": [
                                              {
                                                "id": 7280,
                                                "name": "issuer",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7182,
                                                "src": "7210:6:39",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "expression": {
                                                "id": 7278,
                                                "name": "tokenIssuersRegistry",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6877,
                                                "src": "7173:20:39",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                                                  "typeString": "contract ITrustedIssuersRegistry"
                                                }
                                              },
                                              "id": 7279,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "7194:15:39",
                                              "memberName": "isTrustedIssuer",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 6829,
                                              "src": "7173:36:39",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                                                "typeString": "function (address) view external returns (bool)"
                                              }
                                            },
                                            "id": 7281,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7173:44:39",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "src": "7033:184:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 7289,
                                        "nodeType": "IfStatement",
                                        "src": "7004:304:39",
                                        "trueBody": {
                                          "id": 7288,
                                          "nodeType": "Block",
                                          "src": "7240:68:39",
                                          "statements": [
                                            {
                                              "expression": {
                                                "id": 7286,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                  "id": 7283,
                                                  "name": "j",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 7227,
                                                  "src": "7266:1:39",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                  "expression": {
                                                    "id": 7284,
                                                    "name": "claimIds",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7208,
                                                    "src": "7270:8:39",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                      "typeString": "bytes32[] memory"
                                                    }
                                                  },
                                                  "id": 7285,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "7279:6:39",
                                                  "memberName": "length",
                                                  "nodeType": "MemberAccess",
                                                  "src": "7270:15:39",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "7266:19:39",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 7287,
                                              "nodeType": "ExpressionStatement",
                                              "src": "7266:19:39"
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "id": 7302,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 7294,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "!",
                                            "prefix": true,
                                            "src": "7333:45:39",
                                            "subExpression": {
                                              "arguments": [
                                                {
                                                  "id": 7292,
                                                  "name": "issuer",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 7182,
                                                  "src": "7371:6:39",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "expression": {
                                                  "id": 7290,
                                                  "name": "tokenIssuersRegistry",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6877,
                                                  "src": "7334:20:39",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                                                    "typeString": "contract ITrustedIssuersRegistry"
                                                  }
                                                },
                                                "id": 7291,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "7355:15:39",
                                                "memberName": "isTrustedIssuer",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 6829,
                                                "src": "7334:36:39",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                                                  "typeString": "function (address) view external returns (bool)"
                                                }
                                              },
                                              "id": 7293,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "7334:44:39",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&&",
                                          "rightExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 7301,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 7295,
                                              "name": "j",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7227,
                                              "src": "7382:1:39",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "components": [
                                                {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 7299,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "expression": {
                                                      "id": 7296,
                                                      "name": "claimIds",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 7208,
                                                      "src": "7388:8:39",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                        "typeString": "bytes32[] memory"
                                                      }
                                                    },
                                                    "id": 7297,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "7397:6:39",
                                                    "memberName": "length",
                                                    "nodeType": "MemberAccess",
                                                    "src": "7388:15:39",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "-",
                                                  "rightExpression": {
                                                    "hexValue": "31",
                                                    "id": 7298,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "7406:1:39",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_1_by_1",
                                                      "typeString": "int_const 1"
                                                    },
                                                    "value": "1"
                                                  },
                                                  "src": "7388:19:39",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 7300,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "7387:21:39",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "7382:26:39",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "src": "7333:75:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 7306,
                                        "nodeType": "IfStatement",
                                        "src": "7329:142:39",
                                        "trueBody": {
                                          "id": 7305,
                                          "nodeType": "Block",
                                          "src": "7410:61:39",
                                          "statements": [
                                            {
                                              "expression": {
                                                "hexValue": "66616c7365",
                                                "id": 7303,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "bool",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7443:5:39",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                },
                                                "value": "false"
                                              },
                                              "functionReturnParameters": 7142,
                                              "id": 7304,
                                              "nodeType": "Return",
                                              "src": "7436:12:39"
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "id": 7322,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 7314,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "!",
                                            "prefix": true,
                                            "src": "7496:76:39",
                                            "subExpression": {
                                              "arguments": [
                                                {
                                                  "id": 7309,
                                                  "name": "issuer",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 7182,
                                                  "src": "7532:6:39",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                {
                                                  "baseExpression": {
                                                    "id": 7310,
                                                    "name": "requiredClaimTopics",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7162,
                                                    "src": "7540:19:39",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                      "typeString": "uint256[] memory"
                                                    }
                                                  },
                                                  "id": 7312,
                                                  "indexExpression": {
                                                    "id": 7311,
                                                    "name": "claimTopic",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7191,
                                                    "src": "7560:10:39",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "7540:31:39",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "id": 7307,
                                                  "name": "tokenIssuersRegistry",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6877,
                                                  "src": "7497:20:39",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                                                    "typeString": "contract ITrustedIssuersRegistry"
                                                  }
                                                },
                                                "id": 7308,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "7518:13:39",
                                                "memberName": "hasClaimTopic",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 6849,
                                                "src": "7497:34:39",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                  "typeString": "function (address,uint256) view external returns (bool)"
                                                }
                                              },
                                              "id": 7313,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "7497:75:39",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&&",
                                          "rightExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 7321,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 7315,
                                              "name": "j",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7227,
                                              "src": "7576:1:39",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "components": [
                                                {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 7319,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "expression": {
                                                      "id": 7316,
                                                      "name": "claimIds",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 7208,
                                                      "src": "7582:8:39",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                        "typeString": "bytes32[] memory"
                                                      }
                                                    },
                                                    "id": 7317,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "7591:6:39",
                                                    "memberName": "length",
                                                    "nodeType": "MemberAccess",
                                                    "src": "7582:15:39",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "-",
                                                  "rightExpression": {
                                                    "hexValue": "31",
                                                    "id": 7318,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "7600:1:39",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_1_by_1",
                                                      "typeString": "int_const 1"
                                                    },
                                                    "value": "1"
                                                  },
                                                  "src": "7582:19:39",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 7320,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "7581:21:39",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "7576:26:39",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "src": "7496:106:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 7326,
                                        "nodeType": "IfStatement",
                                        "src": "7492:173:39",
                                        "trueBody": {
                                          "id": 7325,
                                          "nodeType": "Block",
                                          "src": "7604:61:39",
                                          "statements": [
                                            {
                                              "expression": {
                                                "hexValue": "66616c7365",
                                                "id": 7323,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "bool",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7637:5:39",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                },
                                                "value": "false"
                                              },
                                              "functionReturnParameters": 7142,
                                              "id": 7324,
                                              "nodeType": "Return",
                                              "src": "7630:12:39"
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "id": 7336,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 7328,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "!",
                                            "prefix": true,
                                            "src": "7690:10:39",
                                            "subExpression": {
                                              "id": 7327,
                                              "name": "_validity",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7267,
                                              "src": "7691:9:39",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&&",
                                          "rightExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 7335,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 7329,
                                              "name": "j",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7227,
                                              "src": "7704:1:39",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "components": [
                                                {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 7333,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "expression": {
                                                      "id": 7330,
                                                      "name": "claimIds",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 7208,
                                                      "src": "7710:8:39",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                        "typeString": "bytes32[] memory"
                                                      }
                                                    },
                                                    "id": 7331,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "7719:6:39",
                                                    "memberName": "length",
                                                    "nodeType": "MemberAccess",
                                                    "src": "7710:15:39",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "-",
                                                  "rightExpression": {
                                                    "hexValue": "31",
                                                    "id": 7332,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "7728:1:39",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_1_by_1",
                                                      "typeString": "int_const 1"
                                                    },
                                                    "value": "1"
                                                  },
                                                  "src": "7710:19:39",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 7334,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "7709:21:39",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "7704:26:39",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "src": "7690:40:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 7340,
                                        "nodeType": "IfStatement",
                                        "src": "7686:107:39",
                                        "trueBody": {
                                          "id": 7339,
                                          "nodeType": "Block",
                                          "src": "7732:61:39",
                                          "statements": [
                                            {
                                              "expression": {
                                                "hexValue": "66616c7365",
                                                "id": 7337,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "bool",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7765:5:39",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                },
                                                "value": "false"
                                              },
                                              "functionReturnParameters": 7142,
                                              "id": 7338,
                                              "nodeType": "Return",
                                              "src": "7758:12:39"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 7342,
                                  "nodeType": "TryCatchClause",
                                  "parameters": {
                                    "id": 7268,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 7267,
                                        "mutability": "mutable",
                                        "name": "_validity",
                                        "nameLocation": "6972:9:39",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 7342,
                                        "src": "6967:14:39",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "typeName": {
                                          "id": 7266,
                                          "name": "bool",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6967:4:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "6966:16:39"
                                  },
                                  "src": "6959:852:39"
                                },
                                {
                                  "block": {
                                    "id": 7354,
                                    "nodeType": "Block",
                                    "src": "7834:133:39",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 7349,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 7343,
                                            "name": "j",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7227,
                                            "src": "7860:1:39",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 7347,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "expression": {
                                                    "id": 7344,
                                                    "name": "claimIds",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7208,
                                                    "src": "7866:8:39",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                      "typeString": "bytes32[] memory"
                                                    }
                                                  },
                                                  "id": 7345,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberLocation": "7875:6:39",
                                                  "memberName": "length",
                                                  "nodeType": "MemberAccess",
                                                  "src": "7866:15:39",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "-",
                                                "rightExpression": {
                                                  "hexValue": "31",
                                                  "id": 7346,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "7884:1:39",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                  },
                                                  "value": "1"
                                                },
                                                "src": "7866:19:39",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 7348,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "7865:21:39",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "7860:26:39",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 7353,
                                        "nodeType": "IfStatement",
                                        "src": "7856:93:39",
                                        "trueBody": {
                                          "id": 7352,
                                          "nodeType": "Block",
                                          "src": "7888:61:39",
                                          "statements": [
                                            {
                                              "expression": {
                                                "hexValue": "66616c7365",
                                                "id": 7350,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "bool",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7921:5:39",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                },
                                                "value": "false"
                                              },
                                              "functionReturnParameters": 7142,
                                              "id": 7351,
                                              "nodeType": "Return",
                                              "src": "7914:12:39"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "errorName": "",
                                  "id": 7355,
                                  "nodeType": "TryCatchClause",
                                  "src": "7828:139:39"
                                }
                              ],
                              "externalCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 7258,
                                        "name": "_userAddress",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7137,
                                        "src": "6884:12:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 7257,
                                      "name": "identity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6938,
                                      "src": "6875:8:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_contract$_IIdentity_$1743_$",
                                        "typeString": "function (address) view returns (contract IIdentity)"
                                      }
                                    },
                                    "id": 7259,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6875:22:39",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                                      "typeString": "contract IIdentity"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 7260,
                                      "name": "requiredClaimTopics",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7162,
                                      "src": "6899:19:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 7262,
                                    "indexExpression": {
                                      "id": 7261,
                                      "name": "claimTopic",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7191,
                                      "src": "6919:10:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6899:31:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 7263,
                                    "name": "sig",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7185,
                                    "src": "6932:3:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 7264,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7188,
                                    "src": "6953:4:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                                      "typeString": "contract IIdentity"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 7254,
                                        "name": "issuer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7182,
                                        "src": "6854:6:39",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 7253,
                                      "name": "IClaimIssuer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1456,
                                      "src": "6841:12:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IClaimIssuer_$1456_$",
                                        "typeString": "type(contract IClaimIssuer)"
                                      }
                                    },
                                    "id": 7255,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6841:20:39",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                                      "typeString": "contract IClaimIssuer"
                                    }
                                  },
                                  "id": 7256,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6862:12:39",
                                  "memberName": "isClaimValid",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1455,
                                  "src": "6841:33:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_contract$_IIdentity_$1743_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                    "typeString": "function (contract IIdentity,uint256,bytes memory,bytes memory) view external returns (bool)"
                                  }
                                },
                                "id": 7265,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6841:117:39",
                                "tryCall": true,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7356,
                              "nodeType": "TryStatement",
                              "src": "6837:1130:39"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7230,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7227,
                            "src": "6681:1:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 7231,
                              "name": "claimIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7208,
                              "src": "6685:8:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 7232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6694:6:39",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "6685:15:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6681:19:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7358,
                        "initializationExpression": {
                          "assignments": [
                            7227
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 7227,
                              "mutability": "mutable",
                              "name": "j",
                              "nameLocation": "6674:1:39",
                              "nodeType": "VariableDeclaration",
                              "scope": 7358,
                              "src": "6666:9:39",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 7226,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6666:7:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 7229,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 7228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6678:1:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6666:13:39"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 7235,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "6702:3:39",
                            "subExpression": {
                              "id": 7234,
                              "name": "j",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7227,
                              "src": "6702:1:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7236,
                          "nodeType": "ExpressionStatement",
                          "src": "6702:3:39"
                        },
                        "nodeType": "ForStatement",
                        "src": "6661:1320:39"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 7197,
                      "name": "claimTopic",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7191,
                      "src": "6392:10:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 7198,
                        "name": "requiredClaimTopics",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7162,
                        "src": "6405:19:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 7199,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6425:6:39",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "6405:26:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6392:39:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7360,
                  "initializationExpression": {
                    "expression": {
                      "id": 7195,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 7193,
                        "name": "claimTopic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7191,
                        "src": "6376:10:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "hexValue": "30",
                        "id": 7194,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6389:1:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "6376:14:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 7196,
                    "nodeType": "ExpressionStatement",
                    "src": "6376:14:39"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 7202,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "6433:12:39",
                      "subExpression": {
                        "id": 7201,
                        "name": "claimTopic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7191,
                        "src": "6433:10:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 7203,
                    "nodeType": "ExpressionStatement",
                    "src": "6433:12:39"
                  },
                  "nodeType": "ForStatement",
                  "src": "6371:1620:39"
                },
                {
                  "expression": {
                    "hexValue": "74727565",
                    "id": 7361,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8007:4:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 7142,
                  "id": 7362,
                  "nodeType": "Return",
                  "src": "8000:11:39"
                }
              ]
            },
            "documentation": {
              "id": 7135,
              "nodeType": "StructuredDocumentation",
              "src": "5790:60:39",
              "text": "  @dev See {IIdentityRegistry-isVerified}."
            },
            "functionSelector": "b9209e33",
            "id": 7364,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isVerified",
            "nameLocation": "5864:10:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7139,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5911:8:39"
            },
            "parameters": {
              "id": 7138,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7137,
                  "mutability": "mutable",
                  "name": "_userAddress",
                  "nameLocation": "5883:12:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7364,
                  "src": "5875:20:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7136,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5875:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5874:22:39"
            },
            "returnParameters": {
              "id": 7142,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7141,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7364,
                  "src": "5929:4:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7140,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5929:4:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5928:6:39"
            },
            "scope": 7490,
            "src": "5855:2163:39",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6521
            ],
            "body": {
              "id": 7383,
              "nodeType": "Block",
              "src": "8203:149:39",
              "statements": [
                {
                  "expression": {
                    "id": 7377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 7373,
                      "name": "tokenIdentityStorage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6881,
                      "src": "8213:20:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
                        "typeString": "contract IIdentityRegistryStorage"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 7375,
                          "name": "_identityRegistryStorage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7367,
                          "src": "8261:24:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 7374,
                        "name": "IIdentityRegistryStorage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6759,
                        "src": "8236:24:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IIdentityRegistryStorage_$6759_$",
                          "typeString": "type(contract IIdentityRegistryStorage)"
                        }
                      },
                      "id": 7376,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8236:50:39",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
                        "typeString": "contract IIdentityRegistryStorage"
                      }
                    },
                    "src": "8213:73:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentityRegistryStorage_$6759",
                      "typeString": "contract IIdentityRegistryStorage"
                    }
                  },
                  "id": 7378,
                  "nodeType": "ExpressionStatement",
                  "src": "8213:73:39"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 7380,
                        "name": "_identityRegistryStorage",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7367,
                        "src": "8320:24:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 7379,
                      "name": "IdentityStorageSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6461,
                      "src": "8301:18:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 7381,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8301:44:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7382,
                  "nodeType": "EmitStatement",
                  "src": "8296:49:39"
                }
              ]
            },
            "documentation": {
              "id": 7365,
              "nodeType": "StructuredDocumentation",
              "src": "8024:76:39",
              "text": "  @dev See {IIdentityRegistry-setIdentityRegistryStorage}."
            },
            "functionSelector": "26d941ae",
            "id": 7384,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 7371,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 7370,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "8193:9:39"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 2424,
                  "src": "8193:9:39"
                },
                "nodeType": "ModifierInvocation",
                "src": "8193:9:39"
              }
            ],
            "name": "setIdentityRegistryStorage",
            "nameLocation": "8114:26:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7369,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8184:8:39"
            },
            "parameters": {
              "id": 7368,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7367,
                  "mutability": "mutable",
                  "name": "_identityRegistryStorage",
                  "nameLocation": "8149:24:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7384,
                  "src": "8141:32:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7366,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8141:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8140:34:39"
            },
            "returnParameters": {
              "id": 7372,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8203:0:39"
            },
            "scope": 7490,
            "src": "8105:247:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6527
            ],
            "body": {
              "id": 7403,
              "nodeType": "Block",
              "src": "8525:140:39",
              "statements": [
                {
                  "expression": {
                    "id": 7397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 7393,
                      "name": "tokenTopicsRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6873,
                      "src": "8535:19:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IClaimTopicsRegistry_$6444",
                        "typeString": "contract IClaimTopicsRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 7395,
                          "name": "_claimTopicsRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7387,
                          "src": "8578:20:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 7394,
                        "name": "IClaimTopicsRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6444,
                        "src": "8557:20:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IClaimTopicsRegistry_$6444_$",
                          "typeString": "type(contract IClaimTopicsRegistry)"
                        }
                      },
                      "id": 7396,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8557:42:39",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IClaimTopicsRegistry_$6444",
                        "typeString": "contract IClaimTopicsRegistry"
                      }
                    },
                    "src": "8535:64:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IClaimTopicsRegistry_$6444",
                      "typeString": "contract IClaimTopicsRegistry"
                    }
                  },
                  "id": 7398,
                  "nodeType": "ExpressionStatement",
                  "src": "8535:64:39"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 7400,
                        "name": "_claimTopicsRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7387,
                        "src": "8637:20:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 7399,
                      "name": "ClaimTopicsRegistrySet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6456,
                      "src": "8614:22:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 7401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8614:44:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7402,
                  "nodeType": "EmitStatement",
                  "src": "8609:49:39"
                }
              ]
            },
            "documentation": {
              "id": 7385,
              "nodeType": "StructuredDocumentation",
              "src": "8358:72:39",
              "text": "  @dev See {IIdentityRegistry-setClaimTopicsRegistry}."
            },
            "functionSelector": "670af6a9",
            "id": 7404,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 7391,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 7390,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "8515:9:39"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 2424,
                  "src": "8515:9:39"
                },
                "nodeType": "ModifierInvocation",
                "src": "8515:9:39"
              }
            ],
            "name": "setClaimTopicsRegistry",
            "nameLocation": "8444:22:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7389,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8506:8:39"
            },
            "parameters": {
              "id": 7388,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7387,
                  "mutability": "mutable",
                  "name": "_claimTopicsRegistry",
                  "nameLocation": "8475:20:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7404,
                  "src": "8467:28:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7386,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8467:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8466:30:39"
            },
            "returnParameters": {
              "id": 7392,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8525:0:39"
            },
            "scope": 7490,
            "src": "8435:230:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6533
            ],
            "body": {
              "id": 7423,
              "nodeType": "Block",
              "src": "8847:153:39",
              "statements": [
                {
                  "expression": {
                    "id": 7417,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 7413,
                      "name": "tokenIssuersRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6877,
                      "src": "8857:20:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                        "typeString": "contract ITrustedIssuersRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 7415,
                          "name": "_trustedIssuersRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7407,
                          "src": "8904:23:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 7414,
                        "name": "ITrustedIssuersRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6856,
                        "src": "8880:23:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ITrustedIssuersRegistry_$6856_$",
                          "typeString": "type(contract ITrustedIssuersRegistry)"
                        }
                      },
                      "id": 7416,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8880:48:39",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                        "typeString": "contract ITrustedIssuersRegistry"
                      }
                    },
                    "src": "8857:71:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                      "typeString": "contract ITrustedIssuersRegistry"
                    }
                  },
                  "id": 7418,
                  "nodeType": "ExpressionStatement",
                  "src": "8857:71:39"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 7420,
                        "name": "_trustedIssuersRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7407,
                        "src": "8969:23:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 7419,
                      "name": "TrustedIssuersRegistrySet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6466,
                      "src": "8943:25:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 7421,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8943:50:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7422,
                  "nodeType": "EmitStatement",
                  "src": "8938:55:39"
                }
              ]
            },
            "documentation": {
              "id": 7405,
              "nodeType": "StructuredDocumentation",
              "src": "8671:75:39",
              "text": "  @dev See {IIdentityRegistry-setTrustedIssuersRegistry}."
            },
            "functionSelector": "e744d789",
            "id": 7424,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 7411,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 7410,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "8837:9:39"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 2424,
                  "src": "8837:9:39"
                },
                "nodeType": "ModifierInvocation",
                "src": "8837:9:39"
              }
            ],
            "name": "setTrustedIssuersRegistry",
            "nameLocation": "8760:25:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7409,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8828:8:39"
            },
            "parameters": {
              "id": 7408,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7407,
                  "mutability": "mutable",
                  "name": "_trustedIssuersRegistry",
                  "nameLocation": "8794:23:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7424,
                  "src": "8786:31:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7406,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8786:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8785:33:39"
            },
            "returnParameters": {
              "id": 7412,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8847:0:39"
            },
            "scope": 7490,
            "src": "8751:249:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6572
            ],
            "body": {
              "id": 7450,
              "nodeType": "Block",
              "src": "9147:125:39",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 7443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 7436,
                              "name": "_userAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7427,
                              "src": "9178:12:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7435,
                            "name": "identity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6938,
                            "src": "9169:8:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_contract$_IIdentity_$1743_$",
                              "typeString": "function (address) view returns (contract IIdentity)"
                            }
                          },
                          "id": 7437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9169:22:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IIdentity_$1743",
                            "typeString": "contract IIdentity"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IIdentity_$1743",
                            "typeString": "contract IIdentity"
                          }
                        ],
                        "id": 7434,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "9161:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 7433,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9161:7:39",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 7438,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9161:31:39",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 7441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9204:1:39",
                          "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": 7440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "9196:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 7439,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9196:7:39",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 7442,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9196:10:39",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9161:45:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7447,
                  "nodeType": "IfStatement",
                  "src": "9157:88:39",
                  "trueBody": {
                    "id": 7446,
                    "nodeType": "Block",
                    "src": "9208:37:39",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "66616c7365",
                          "id": 7444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9229:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 7432,
                        "id": 7445,
                        "nodeType": "Return",
                        "src": "9222:12:39"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "hexValue": "74727565",
                    "id": 7448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "9261:4:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 7432,
                  "id": 7449,
                  "nodeType": "Return",
                  "src": "9254:11:39"
                }
              ]
            },
            "documentation": {
              "id": 7425,
              "nodeType": "StructuredDocumentation",
              "src": "9006:58:39",
              "text": "  @dev See {IIdentityRegistry-contains}."
            },
            "functionSelector": "5dbe47e8",
            "id": 7451,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nameLocation": "9078:8:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7429,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9123:8:39"
            },
            "parameters": {
              "id": 7428,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7427,
                  "mutability": "mutable",
                  "name": "_userAddress",
                  "nameLocation": "9095:12:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7451,
                  "src": "9087:20:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7426,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9087:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9086:22:39"
            },
            "returnParameters": {
              "id": 7432,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7431,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7451,
                  "src": "9141:4:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7430,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9141:4:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9140:6:39"
            },
            "scope": 7490,
            "src": "9069:203:39",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6624
            ],
            "body": {
              "id": 7464,
              "nodeType": "Block",
              "src": "9476:45:39",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7461,
                        "name": "_newOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7454,
                        "src": "9504:9:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 7460,
                      "name": "transferOwnership",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2484,
                      "src": "9486:17:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 7462,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9486:28:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7463,
                  "nodeType": "ExpressionStatement",
                  "src": "9486:28:39"
                }
              ]
            },
            "documentation": {
              "id": 7452,
              "nodeType": "StructuredDocumentation",
              "src": "9278:93:39",
              "text": "  @dev See {IIdentityRegistry-transferOwnershipOnIdentityRegistryContract}."
            },
            "functionSelector": "ce240d9c",
            "id": 7465,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 7458,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 7457,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "9466:9:39"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 2424,
                  "src": "9466:9:39"
                },
                "nodeType": "ModifierInvocation",
                "src": "9466:9:39"
              }
            ],
            "name": "transferOwnershipOnIdentityRegistryContract",
            "nameLocation": "9385:43:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7456,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9457:8:39"
            },
            "parameters": {
              "id": 7455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7454,
                  "mutability": "mutable",
                  "name": "_newOwner",
                  "nameLocation": "9437:9:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7465,
                  "src": "9429:17:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7453,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9429:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9428:19:39"
            },
            "returnParameters": {
              "id": 7459,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9476:0:39"
            },
            "scope": 7490,
            "src": "9376:145:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6630
            ],
            "body": {
              "id": 7476,
              "nodeType": "Block",
              "src": "9694:33:39",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7473,
                        "name": "_agent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7468,
                        "src": "9713:6:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 7472,
                      "name": "addAgent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9101,
                      "src": "9704:8:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 7474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9704:16:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7475,
                  "nodeType": "ExpressionStatement",
                  "src": "9704:16:39"
                }
              ]
            },
            "documentation": {
              "id": 7466,
              "nodeType": "StructuredDocumentation",
              "src": "9527:84:39",
              "text": "  @dev See {IIdentityRegistry-addAgentOnIdentityRegistryContract}."
            },
            "functionSelector": "50bc7bda",
            "id": 7477,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addAgentOnIdentityRegistryContract",
            "nameLocation": "9625:34:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7470,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9685:8:39"
            },
            "parameters": {
              "id": 7469,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7468,
                  "mutability": "mutable",
                  "name": "_agent",
                  "nameLocation": "9668:6:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7477,
                  "src": "9660:14:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7467,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9660:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9659:16:39"
            },
            "returnParameters": {
              "id": 7471,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9694:0:39"
            },
            "scope": 7490,
            "src": "9616:111:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6636
            ],
            "body": {
              "id": 7488,
              "nodeType": "Block",
              "src": "9906:36:39",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 7485,
                        "name": "_agent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7480,
                        "src": "9928:6:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 7484,
                      "name": "removeAgent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9119,
                      "src": "9916:11:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 7486,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9916:19:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7487,
                  "nodeType": "ExpressionStatement",
                  "src": "9916:19:39"
                }
              ]
            },
            "documentation": {
              "id": 7478,
              "nodeType": "StructuredDocumentation",
              "src": "9733:87:39",
              "text": "  @dev See {IIdentityRegistry-removeAgentOnIdentityRegistryContract}."
            },
            "functionSelector": "5e5741f3",
            "id": 7489,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeAgentOnIdentityRegistryContract",
            "nameLocation": "9834:37:39",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7482,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9897:8:39"
            },
            "parameters": {
              "id": 7481,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7480,
                  "mutability": "mutable",
                  "name": "_agent",
                  "nameLocation": "9880:6:39",
                  "nodeType": "VariableDeclaration",
                  "scope": 7489,
                  "src": "9872:14:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7479,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9872:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9871:16:39"
            },
            "returnParameters": {
              "id": 7483,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9906:0:39"
            },
            "scope": 7490,
            "src": "9825:117:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 7491,
        "src": "1479:8465:39",
        "usedErrors": []
      }
    ],
    "src": "1093:8852:39"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.17+commit.8df45f5f.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.8",
  "updatedAt": "2022-12-08T12:51:01.372Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "addAgentOnIdentityRegistryContract(address)": {
        "details": "See {IIdentityRegistry-addAgentOnIdentityRegistryContract}."
      },
      "batchRegisterIdentity(address[],address[],uint16[])": {
        "details": "See {IIdentityRegistry-batchRegisterIdentity}."
      },
      "constructor": {
        "details": "the constructor initiates the Identity Registry smart contract",
        "params": {
          "_claimTopicsRegistry": "the claim topics registry linked to the Identity Registry",
          "_identityStorage": "the identity registry storage linked to the Identity Registry  emits a `ClaimTopicsRegistrySet` event  emits a `TrustedIssuersRegistrySet` event  emits an `IdentityStorageSet` event",
          "_trustedIssuersRegistry": "the trusted issuers registry linked to the Identity Registry"
        }
      },
      "contains(address)": {
        "details": "See {IIdentityRegistry-contains}."
      },
      "deleteIdentity(address)": {
        "details": "See {IIdentityRegistry-deleteIdentity}."
      },
      "identity(address)": {
        "details": "See {IIdentityRegistry-identity}."
      },
      "identityStorage()": {
        "details": "See {IIdentityRegistry-identityStorage}."
      },
      "investorCountry(address)": {
        "details": "See {IIdentityRegistry-investorCountry}."
      },
      "isVerified(address)": {
        "details": "See {IIdentityRegistry-isVerified}."
      },
      "issuersRegistry()": {
        "details": "See {IIdentityRegistry-issuersRegistry}."
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "registerIdentity(address,address,uint16)": {
        "details": "See {IIdentityRegistry-registerIdentity}."
      },
      "removeAgentOnIdentityRegistryContract(address)": {
        "details": "See {IIdentityRegistry-removeAgentOnIdentityRegistryContract}."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "setClaimTopicsRegistry(address)": {
        "details": "See {IIdentityRegistry-setClaimTopicsRegistry}."
      },
      "setIdentityRegistryStorage(address)": {
        "details": "See {IIdentityRegistry-setIdentityRegistryStorage}."
      },
      "setTrustedIssuersRegistry(address)": {
        "details": "See {IIdentityRegistry-setTrustedIssuersRegistry}."
      },
      "topicsRegistry()": {
        "details": "See {IIdentityRegistry-topicsRegistry}."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      },
      "transferOwnershipOnIdentityRegistryContract(address)": {
        "details": "See {IIdentityRegistry-transferOwnershipOnIdentityRegistryContract}."
      },
      "updateCountry(address,uint16)": {
        "details": "See {IIdentityRegistry-updateCountry}."
      },
      "updateIdentity(address,address)": {
        "details": "See {IIdentityRegistry-updateIdentity}."
      }
    },
    "stateVariables": {
      "tokenIdentityStorage": {
        "details": "Address of the IdentityRegistryStorage Contract"
      },
      "tokenIssuersRegistry": {
        "details": "Address of the TrustedIssuersRegistry Contract"
      },
      "tokenTopicsRegistry": {
        "details": "Address of the ClaimTopicsRegistry Contract"
      }
    },
    "version": 1
  },
  "userdoc": {
    "events": {
      "ClaimTopicsRegistrySet(address)": {
        "notice": "this event is emitted when the ClaimTopicsRegistry has been set for the IdentityRegistry  the event is emitted by the IdentityRegistry constructor  `claimTopicsRegistry` is the address of the Claim Topics Registry contract"
      },
      "CountryUpdated(address,uint16)": {
        "notice": "this event is emitted when an Identity's country has been updated  the event is emitted by the 'updateCountry' function  `investorAddress` is the address on which the country has been updated  `country` is the numeric code (ISO 3166-1) of the new country"
      },
      "IdentityRegistered(address,address)": {
        "notice": "this event is emitted when an Identity is registered into the Identity Registry.  the event is emitted by the 'registerIdentity' function  `investorAddress` is the address of the investor's wallet  `identity` is the address of the Identity smart contract (onchainID)"
      },
      "IdentityRemoved(address,address)": {
        "notice": "this event is emitted when an Identity is removed from the Identity Registry.  the event is emitted by the 'deleteIdentity' function  `investorAddress` is the address of the investor's wallet  `identity` is the address of the Identity smart contract (onchainID)"
      },
      "IdentityStorageSet(address)": {
        "notice": "this event is emitted when the IdentityRegistryStorage has been set for the IdentityRegistry  the event is emitted by the IdentityRegistry constructor  `identityStorage` is the address of the Identity Registry Storage contract"
      },
      "IdentityUpdated(address,address)": {
        "notice": "this event is emitted when an Identity has been updated  the event is emitted by the 'updateIdentity' function  `oldIdentity` is the old Identity contract's address to update  `newIdentity` is the new Identity contract's"
      },
      "TrustedIssuersRegistrySet(address)": {
        "notice": "this event is emitted when the ClaimTopicsRegistry has been set for the IdentityRegistry  the event is emitted by the IdentityRegistry constructor  `trustedIssuersRegistry` is the address of the Trusted Issuers Registry contract"
      }
    },
    "kind": "user",
    "methods": {},
    "version": 1
  }
}