{
  "contractName": "ClaimIssuer",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "initialManagementKey",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "executionId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "Approved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "claimId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "topic",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "scheme",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "issuer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "ClaimAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "claimId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "topic",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "scheme",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "issuer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "ClaimChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "claimId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "topic",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "scheme",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "issuer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "ClaimRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "claimRequestId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "topic",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "scheme",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "issuer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "ClaimRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "executionId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "Executed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "executionId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "ExecutionFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "executionId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "ExecutionRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "purpose",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "keyType",
          "type": "uint256"
        }
      ],
      "name": "KeyAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "purpose",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "keyType",
          "type": "uint256"
        }
      ],
      "name": "KeyRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "purpose",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "number",
          "type": "uint256"
        }
      ],
      "name": "KeysRequiredChanged",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_topic",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_scheme",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_issuer",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_signature",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        },
        {
          "internalType": "string",
          "name": "_uri",
          "type": "string"
        }
      ],
      "name": "addClaim",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "claimRequestId",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_key",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_purpose",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_type",
          "type": "uint256"
        }
      ],
      "name": "addKey",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_id",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "_approve",
          "type": "bool"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "execute",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "executionId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_claimId",
          "type": "bytes32"
        }
      ],
      "name": "getClaim",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "topic",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "scheme",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "issuer",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_topic",
          "type": "uint256"
        }
      ],
      "name": "getClaimIdsByTopic",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "claimIds",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_key",
          "type": "bytes32"
        }
      ],
      "name": "getKey",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "purposes",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "keyType",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_key",
          "type": "bytes32"
        }
      ],
      "name": "getKeyPurposes",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "_purposes",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_purpose",
          "type": "uint256"
        }
      ],
      "name": "getKeysByPurpose",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "_keys",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "initialManagementKey",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_key",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_purpose",
          "type": "uint256"
        }
      ],
      "name": "keyHasPurpose",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_claimId",
          "type": "bytes32"
        }
      ],
      "name": "removeClaim",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_key",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_purpose",
          "type": "uint256"
        }
      ],
      "name": "removeKey",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "revokedClaims",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_claimId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_identity",
          "type": "address"
        }
      ],
      "name": "revokeClaim",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_sig",
          "type": "bytes"
        }
      ],
      "name": "isClaimRevoked",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IIdentity",
          "name": "_identity",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "claimTopic",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "sig",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "isClaimValid",
      "outputs": [
        {
          "internalType": "bool",
          "name": "claimValid",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "sig",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "dataHash",
          "type": "bytes32"
        }
      ],
      "name": "getRecoveredAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialManagementKey\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"executionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"Approved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"topic\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"scheme\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"ClaimAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"topic\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"scheme\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"ClaimChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"claimId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"topic\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"scheme\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"ClaimRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"claimRequestId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"topic\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"scheme\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"ClaimRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"executionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"executionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"executionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutionRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"purpose\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"keyType\",\"type\":\"uint256\"}],\"name\":\"KeyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"purpose\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"keyType\",\"type\":\"uint256\"}],\"name\":\"KeyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"purpose\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"name\":\"KeysRequiredChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_topic\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_scheme\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_issuer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"name\":\"addClaim\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"claimRequestId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_key\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_purpose\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_type\",\"type\":\"uint256\"}],\"name\":\"addKey\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_approve\",\"type\":\"bool\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"executionId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_claimId\",\"type\":\"bytes32\"}],\"name\":\"getClaim\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"topic\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"scheme\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_topic\",\"type\":\"uint256\"}],\"name\":\"getClaimIdsByTopic\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"claimIds\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_key\",\"type\":\"bytes32\"}],\"name\":\"getKey\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"purposes\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"keyType\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_key\",\"type\":\"bytes32\"}],\"name\":\"getKeyPurposes\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_purposes\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_purpose\",\"type\":\"uint256\"}],\"name\":\"getKeysByPurpose\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_keys\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"getRecoveredAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialManagementKey\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_sig\",\"type\":\"bytes\"}],\"name\":\"isClaimRevoked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIdentity\",\"name\":\"_identity\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"claimTopic\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"isClaimValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"claimValid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_key\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_purpose\",\"type\":\"uint256\"}],\"name\":\"keyHasPurpose\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_claimId\",\"type\":\"bytes32\"}],\"name\":\"removeClaim\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_key\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_purpose\",\"type\":\"uint256\"}],\"name\":\"removeKey\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_claimId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_identity\",\"type\":\"address\"}],\"name\":\"revokeClaim\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"revokedClaims\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addClaim(uint256,uint256,address,bytes,bytes,string)\":{\"params\":{\"_data\":\"The hash of the claim data, sitting in another location, a bit-mask, call data, or actual data based on the claim scheme.\",\"_issuer\":\"The issuers identity contract address, or the address used to sign the above signature.\",\"_scheme\":\"The scheme with which this claim SHOULD be verified or how it should be processed.\",\"_signature\":\"Signature which is the proof that the claim issuer issued a claim of topic for this identity. it MUST be a signed message of the following structure: keccak256(abi.encode(address identityHolder_address, uint256 _ topic, bytes data))\",\"_topic\":\"The type of claim\",\"_uri\":\"The location of the claim, this can be HTTP links, swarm hashes, IPFS hashes, and such.\"},\"returns\":{\"claimRequestId\":\"Returns claimRequestId: COULD be send to the approve function, to approve or reject this claim. triggers ClaimAdded event.\"}},\"addKey(bytes32,uint256,uint256)\":{\"params\":{\"_key\":\"keccak256 representation of an ethereum address\",\"_purpose\":\"a uint256[] Array of the key types, like 1 = MANAGEMENT, 2 = ACTION, 3 = CLAIM, 4 = ENCRYPTION\",\"_type\":\"type of key used, which would be a uint256 for different key types. e.g. 1 = ECDSA, 2 = RSA, etc.\"},\"returns\":{\"success\":\"Returns TRUE if the addition was successful and FALSE if not\"}},\"execute(address,uint256,bytes)\":{\"returns\":{\"executionId\":\"SHOULD be sent to the approve function, to approve or reject this execution.\"}},\"getClaim(bytes32)\":{\"params\":{\"_claimId\":\"The identity of the claim i.e. keccak256(abi.encode(_issuer, _topic))\"},\"returns\":{\"data\":\"Returns all the parameters of the claim for the specified _claimId (topic, scheme, signature, issuer, data, uri) .\",\"issuer\":\"Returns all the parameters of the claim for the specified _claimId (topic, scheme, signature, issuer, data, uri) .\",\"scheme\":\"Returns all the parameters of the claim for the specified _claimId (topic, scheme, signature, issuer, data, uri) .\",\"signature\":\"Returns all the parameters of the claim for the specified _claimId (topic, scheme, signature, issuer, data, uri) .\",\"topic\":\"Returns all the parameters of the claim for the specified _claimId (topic, scheme, signature, issuer, data, uri) .\",\"uri\":\"Returns all the parameters of the claim for the specified _claimId (topic, scheme, signature, issuer, data, uri) .\"}},\"getClaimIdsByTopic(uint256)\":{\"params\":{\"_topic\":\"The identity of the claim i.e. keccak256(abi.encode(_issuer, _topic))\"},\"returns\":{\"claimIds\":\"Returns an array of claim IDs by topic.\"}},\"getKey(bytes32)\":{\"params\":{\"_key\":\"The public key.  for non-hex and long keys, its the Keccak256 hash of the key\"},\"returns\":{\"key\":\"Returns the full key data, if present in the identity.\",\"keyType\":\"Returns the full key data, if present in the identity.\",\"purposes\":\"Returns the full key data, if present in the identity.\"}},\"getKeyPurposes(bytes32)\":{\"params\":{\"_key\":\"The public key.  for non-hex and long keys, its the Keccak256 hash of the key\"},\"returns\":{\"_purposes\":\"Returns the purposes of the specified key\"}},\"getKeysByPurpose(uint256)\":{\"params\":{\"_purpose\":\"a uint256[] Array of the key types, like 1 = MANAGEMENT, 2 = ACTION, 3 = CLAIM, 4 = ENCRYPTION\"},\"returns\":{\"_keys\":\"Returns an array of public key bytes32 hold by this identity and having the specified purpose\"}},\"initialize(address)\":{\"params\":{\"initialManagementKey\":\"The ethereum address to be set as the management key of the ONCHAINID.\"}},\"isClaimRevoked(bytes)\":{\"details\":\"Returns revocation status of a claim.\",\"params\":{\"_sig\":\"the signature of the claim\"},\"returns\":{\"_0\":\"isRevoked true if the claim is revoked and false otherwise\"}},\"isClaimValid(address,uint256,bytes,bytes)\":{\"details\":\"Checks if a claim is valid.\",\"params\":{\"_identity\":\"the identity contract related to the claim\",\"claimTopic\":\"the claim topic of the claim\",\"data\":\"the data field of the claim\",\"sig\":\"the signature of the claim\"},\"returns\":{\"claimValid\":\"true if the claim is valid, false otherwise\"}},\"removeClaim(bytes32)\":{\"params\":{\"_claimId\":\"The identity of the claim i.e. keccak256(abi.encode(_issuer, _topic))\"},\"returns\":{\"success\":\"Returns TRUE when the claim was removed. triggers ClaimRemoved event\"}},\"revokeClaim(bytes32,address)\":{\"details\":\"Revoke a claim previously issued, the claim is no longer considered as valid after revocation.\",\"params\":{\"_claimId\":\"the id of the claim\",\"_identity\":\"the address of the identity contract\"},\"returns\":{\"_0\":\"isRevoked true when the claim is revoked\"}},\"version()\":{\"details\":\"Returns the string of the current version.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addClaim(uint256,uint256,address,bytes,bytes,string)\":{\"notice\":\"Implementation of the addClaim function from the ERC-735 standard  Require that the msg.sender has claim signer key.\"},\"addKey(bytes32,uint256,uint256)\":{\"notice\":\"implementation of the addKey function of the ERC-734 standard Adds a _key to the identity. The _purpose specifies the purpose of key. Initially we propose four purposes: 1: MANAGEMENT keys, which can manage the identity 2: ACTION keys, which perform actions in this identities name (signing, logins, transactions, etc.) 3: CLAIM signer keys, used to sign claims on other identities which need to be revokable. 4: ENCRYPTION keys, used to encrypt data e.g. hold in claims. MUST only be done by keys of purpose 1, or the identity itself. If its the identity itself, the approval process will determine its approval.\"},\"approve(uint256,bool)\":{\"notice\":\"Approves an execution or claim addition. This SHOULD require n of m approvals of keys purpose 1, if the _to of the execution is the identity contract itself, to successfully approve an execution. And COULD require n of m approvals of keys purpose 2, if the _to of the execution is another contract, to successfully approve an execution.\"},\"execute(address,uint256,bytes)\":{\"notice\":\"Passes an execution instruction to the keymanager. SHOULD require approve to be called with one or more keys of purpose 1 or 2 to approve this execution. Execute COULD be used as the only accessor for addKey, removeKey and replaceKey and removeClaim.\"},\"getClaim(bytes32)\":{\"notice\":\"Implementation of the getClaim function from the ERC-735 standard.\"},\"getClaimIdsByTopic(uint256)\":{\"notice\":\"Implementation of the getClaimIdsByTopic function from the ERC-735 standard. used to get all the claims from the specified topic\"},\"getKey(bytes32)\":{\"notice\":\"Implementation of the getKey function from the ERC-734 standard\"},\"getKeyPurposes(bytes32)\":{\"notice\":\"gets the purposes of a key\"},\"getKeysByPurpose(uint256)\":{\"notice\":\"gets all the keys with a specific purpose from an identity\"},\"initialize(address)\":{\"notice\":\"When using this contract as an implementation for a proxy, call this initializer with a delegatecall.\"},\"keyHasPurpose(bytes32,uint256)\":{\"notice\":\"Returns true if the key has MANAGEMENT purpose or the specified purpose.\"},\"removeClaim(bytes32)\":{\"notice\":\"Implementation of the removeClaim function from the ERC-735 standard Require that the msg.sender has management key. Can only be removed by the claim issuer, or the claim holder itself.\"},\"removeKey(bytes32,uint256)\":{\"notice\":\"Remove the purpose from a key.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@onchain-id/solidity/contracts/ClaimIssuer.sol\":\"ClaimIssuer\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10},\"remappings\":[]},\"sources\":{\"@onchain-id/solidity/contracts/ClaimIssuer.sol\":{\"keccak256\":\"0xbc9c3864c6308e39a8f95fea2809d77c3d37c8b63966218df124e94536126a40\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f244f865f942b200a4045ca633c080cee8cc98f8088f3af286ca5e9f61aaed12\",\"dweb:/ipfs/QmTpND1yKzwut3ViVsGd1pMSFGtQgMXbfQpoXyiGBmUtg2\"]},\"@onchain-id/solidity/contracts/Identity.sol\":{\"keccak256\":\"0xb7a32a84e675769c5f3d5d20ec29db72f1edb6ceae75cf75f1ac026240d1aabb\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b69b1b493d497697a357f9887576e9ea8331dd452283b14c0ff1cd0e79f46e67\",\"dweb:/ipfs/QmXrZAHgvokKrjXcru1CWkA1nRdR6Cx8oe9Yg55aDr5dkw\"]},\"@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\"]},\"@onchain-id/solidity/contracts/storage/Storage.sol\":{\"keccak256\":\"0x44c57bea4b4904ef4cffd2658add38b550ddaf8d756f4915b9e62ec5fe0f8c99\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://23d4a3ce1ff09db584522cb4873b7b8d0d248706641f86fd86cef9458c207708\",\"dweb:/ipfs/QmaDBSYFvztY31ZWs4UsAEyVpbKQ1ok6GA3o8bMJUyZGsW\"]},\"@onchain-id/solidity/contracts/storage/Structs.sol\":{\"keccak256\":\"0xcf99abc76909c43388a5faa1493970dfe54d647dd95ee1fb9ef3682b095e0f61\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://02eb7e1a9b4931503fc304bf5564a75d872b8b7e5a661d7b458ba0a1c96e6d6c\",\"dweb:/ipfs/QmSqhvCHTABCDhVPN8wX1HwkvWLeNYSa1dKa2xt4F7qbD1\"]},\"@onchain-id/solidity/contracts/version/Version.sol\":{\"keccak256\":\"0x6fb49164a0fa97b52a8f335dd7b7cdf575ebb16962a764033bd7be2e39f296b8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7ba47d9ceface848db9145fba6c77f782f5b73fb5c7a753a14e4f8d8943c5f6f\",\"dweb:/ipfs/QmXyXA9LAGdpN3BEHWSCXhgVdFdWTbvizZxgg8BrRsdYAk\"]}},\"version\":1}",
  "bytecode": "0x60806040526006805461ffff19166101001790553480156200002057600080fd5b5060405162002b0138038062002b01833981016040819052620000439162000268565b6006805461ff001916610100908117918290558291600091900460ff1615620000775762000071826200008e565b62000085565b6006805460ff191660011790555b5050506200029a565b60065460ff161580620000a05750303b155b620000f15760405162461bcd60e51b815260206004820152601e60248201527f496e697469616c206b65792077617320616c72656164792073657475702e0000604482015260640160405180910390fd5b6006805461ffff1916610101179055604080516001600160a01b03831660208201526000910160408051601f198184030181528282528051602091820120600081815260018084528482206002810184905586850190955280865290829052918290529350620001629290620001fc565b506000818152600160208181526040808420830183905560029091527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0805480840182559084527f7fef4bf8f63cf9dd467136c679c02b5c17fcf6322d9562512bf5eb952cf7cc5301849055519091829184917f480000bb1edad8ca1470381cc334b1917fbd51c6531f3a623ea8e0ec7e38a6e991a45050565b8280548282559060005260206000209081019282156200023f579160200282015b828111156200023f578251829060ff169055916020019190600101906200021d565b506200024d92915062000251565b5090565b5b808211156200024d576000815560010162000252565b6000602082840312156200027b57600080fd5b81516001600160a01b03811681146200029357600080fd5b9392505050565b61285780620002aa6000396000f3fe6080604052600436106100e45760003560e01c806312aaac70146100e95780631d381240146101215780632646b264146101515780634eee424a1461017157806353d413c51461019157806354fd4d50146101b157806373c33708146101e5578063747442d31461020557806380e9e9e1146102255780639010f72614610252578063b1a34e0d14610272578063b61d27f6146102a0578063c0969a6e146102b3578063c3b129e3146102d3578063c4d66de814610300578063c9100bcb14610322578063d202158d14610354578063d234524914610374578063fb307b34146103af575b600080fd5b3480156100f557600080fd5b50610109610104366004611d59565b6103dc565b60405161011893929190611dad565b60405180910390f35b34801561012d57600080fd5b5061014161013c366004611dd2565b610455565b6040519015158152602001610118565b34801561015d57600080fd5b5061014161016c366004611ec9565b610667565b34801561017d57600080fd5b5061014161018c366004611d59565b6106a1565b34801561019d57600080fd5b506101416101ac366004611efd565b6109ab565b3480156101bd57600080fd5b5060408051808201825260058152640312e342e360dc1b602082015290516101189190611f6f565b3480156101f157600080fd5b50610141610200366004611f97565b610d40565b34801561021157600080fd5b50610141610220366004611fc7565b610e6c565b34801561023157600080fd5b50610245610240366004611d59565b611112565b6040516101189190611ff1565b34801561025e57600080fd5b5061024561026d366004611d59565b611174565b34801561027e57600080fd5b5061029261028d366004612035565b6111d4565b604051908152602001610118565b6102926102ae3660046120f5565b611486565b3480156102bf57600080fd5b506101416102ce36600461214d565b6115f4565b3480156102df57600080fd5b506102f36102ee3660046121cc565b6116f1565b6040516101189190612210565b34801561030c57600080fd5b5061032061031b366004612224565b6117a2565b005b34801561032e57600080fd5b5061034261033d366004611d59565b6117ae565b60405161011896959493929190612241565b34801561036057600080fd5b5061014161036f366004611efd565b6119af565b34801561038057600080fd5b5061014161038f366004611ec9565b805160208183018101805160078252928201919093012091525460ff1681565b3480156103bb57600080fd5b506103cf6103ca366004611d59565b611ab0565b60405161011891906122a1565b60008181526001602081815260408084209283015460028401548454835181860281018601909452808452606096958695909491859183018282801561044157602002820191906000526020600020905b81548152602001906001019080831161042d575b505050505092509250925092509193909250565b60065460009060ff61010090910416151560011461048e5760405162461bcd60e51b8152600401610485906122b4565b60405180910390fd5b3330146104e2576104c6336040516020016104a99190612210565b6040516020818303038152906040528051906020012060016119af565b6104e25760405162461bcd60e51b815260040161048590612307565b6000848152600160205260409020600201548490036105d35760005b6000858152600160205260409020548110156105ad57600085815260016020526040812080548390811061053457610534612345565b9060005260206000200154905084810361059a5760405162461bcd60e51b815260206004820152602160248201527f436f6e666c6963743a204b657920616c72656164792068617320707572706f736044820152606560f81b6064820152608401610485565b50806105a581612371565b9150506104fe565b50600084815260016020818152604083208054928301815583529091200183905561061f565b600084815260016020818152604080842060028101899055815180840190925287825293889052908290526106089291611c61565b506000848152600160208190526040909120018290555b60008381526002602090815260408083208054600181018255908452918320909101869055518391859187916000805160206127e283398151915291a45060015b9392505050565b6000600782604051610679919061238a565b9081526040519081900360200190205460ff161561069957506001919050565b506000919050565b60065460009060ff6101009091041615156001146106d15760405162461bcd60e51b8152600401610485906122b4565b33301461075757610709336040516020016106ec9190612210565b6040516020818303038152906040528051906020012060036119af565b6107575760405162461bcd60e51b815260206004820152602b602482015260008051602061280283398151915260448201526a6520434c41494d206b657960a81b6064820152608401610485565b60008281526004602052604081205490036107c85760405162461bcd60e51b815260206004820152602b60248201527f4e6f6e4578697374696e673a205468657265206973206e6f20636c61696d207760448201526a1a5d1a081d1a1a5cc8125160aa1b6064820152608401610485565b60005b6000838152600460209081526040808320548352600590915290208054849190839081106107fb576107fb612345565b90600052602060002001541461081d578061081581612371565b9150506107cb565b6000838152600460209081526040808320548352600590915290208054610846906001906123a6565b8154811061085657610856612345565b60009182526020808320909101548583526004825260408084205484526005909252912080548390811061088c5761088c612345565b60009182526020808320909101929092558481526004825260408082205482526005909252208054806108c1576108c16123b9565b60008281526020808220830160001990810183905590920190925584825260049081905260409182902060028101548154600183015494516001600160a01b0390921694909388937f3cf57863a89432c61c4a27073c6ee39e8a764bff5a05aebfbcdcdc80b2e6130a936109449392600383019290810191600590910190612486565b60405180910390a46000838152600460205260408120818155600181018290556002810180546001600160a01b0319169055906109846003830182611cac565b610992600483016000611cac565b6109a0600583016000611cac565b506001949350505050565b60065460009060ff6101009091041615156001146109db5760405162461bcd60e51b8152600401610485906122b4565b6000838152600160205260409020600201548314610a455760405162461bcd60e51b815260206004820152602160248201527f4e6f6e4578697374696e673a204b65792069736e2774207265676973746572656044820152601960fa1b6064820152608401610485565b333014610a7c57610a60336040516020016104a99190612210565b610a7c5760405162461bcd60e51b815260040161048590612307565b600083815260016020526040902054610aa75760405162461bcd60e51b8152600401610485906124c5565b60005b6000848152600160205260409020805484919083908110610acd57610acd612345565b906000526020600020015414610b025780610ae781612371565b60008681526001602052604090205490925082109050610aaa575b6000848152600160205260409020548110610b2f5760405162461bcd60e51b8152600401610485906124c5565b600084815260016020819052604090912080549091610b4d916123a6565b81548110610b5d57610b5d612345565b9060005260206000200154600160008681526020019081526020016000206000018281548110610b8f57610b8f612345565b6000918252602080832090910192909255858152600190915260409020805480610bbb57610bbb6123b9565b6001900381819060005260206000200160009055905560005b6000848152600260205260409020805486919083908110610bf757610bf7612345565b906000526020600020015414610c195780610c1181612371565b915050610bd4565b60008481526002602052604090208054610c35906001906123a6565b81548110610c4557610c45612345565b9060005260206000200154600260008681526020019081526020016000208281548110610c7457610c74612345565b906000526020600020018190555060026000858152602001908152602001600020805480610ca457610ca46123b9565b60008281526020808220830160001990810183905590920190925586825260019081905260408220908101549054909103610d0357600086815260016020526040812090610cf28282611ce6565b506000600182018190556002909101555b8085877f585a4aef50f8267a92b32412b331b20f7f8b96f2245b253b9cc50dcc621d339760405160405180910390a4600193505050505b92915050565b60065460009060ff610100909104161515600114610d705760405162461bcd60e51b8152600401610485906122b4565b60008080606080333014610dae57610d92336040516020016104a99190612210565b610dae5760405162461bcd60e51b815260040161048590612307565b60405163c9100bcb60e01b8152600481018990526001600160a01b0388169063c9100bcb90602401600060405180830381865afa158015610df3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e1b919081019061255f565b5060405194995092975090955093509150600190600790610e3d90859061238a565b908152604051908190036020019020805491151560ff1990921691909117905550600194505050505092915050565b60065460009060ff610100909104161515600114610e9c5760405162461bcd60e51b8152600401610485906122b4565b610ecd33604051602001610eb09190612210565b6040516020818303038152906040528051906020012060026119af565b610f195760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f74206861766520616374696f6e206b6579006044820152606401610485565b827fb3932da477fe5d6c8ff2eafef050c0f3a1af18fc07121001482600f36f3715d883604051610f4d911515815260200190565b60405180910390a28115156001036110f1576000838152600360208181526040808420928301805460ff1916600190811790915583549084015491516001600160a01b03909116949193610fa8936002909101929101612613565b60408051601f1981840301815290829052610fc29161238a565b60006040518083038185875af1925050503d8060008114610fff576040519150601f19603f3d011682016040523d82523d6000602084013e611004565b606091505b5090915050801561108957600083815260036020819052604091829020908101805461ff00191661010017905560018101548154925190926001600160a01b03169186917f1f920dbda597d7bf95035464170fa58d0a4b57f13a1c315ace6793b9f63688b89161107991600290910190612638565b60405180910390a4506001610d3a565b6000838152600360205260409081902060018101548154925190926001600160a01b03169186917fe10c49d9f7c71da23262367013434763cfdb2332267641728d25cd712c5c6a68916110e191600290910190612638565b60405180910390a4506000610d3a565b5050600090815260036020819052604090912001805460ff19169055600190565b60008181526005602090815260409182902080548351818402810184019094528084526060939283018282801561116857602002820191906000526020600020905b815481526020019060010190808311611154575b50505050509050919050565b60008181526002602090815260409182902080548351818402810184019094528084526060939283018282801561116857602002820191906000526020600020908154815260200190600101908083116111545750505050509050919050565b60065460009060ff6101009091041615156001146112045760405162461bcd60e51b8152600401610485906122b4565b604080516001600160a01b0387166020808301919091528183018a9052825180830384018152606090920190925280519101203033146112a757611252336040516020016106ec9190612210565b6112a75760405162461bcd60e51b815260206004820152603260248201526000805160206128028339815191526044820152716520636c61696d207369676e6572206b657960701b6064820152608401610485565b6000818152600460205260409020600201546001600160a01b038781169116146113b55760008881526005602090815260408083208054600180820183559185528385200185905584845260049092529091208981559081018890556002810180546001600160a01b0319166001600160a01b03891617905560030161132d868261269a565b5060008181526004602081905260409091200161134a858261269a565b506000818152600460205260409020600501611366848261269a565b50856001600160a01b031688827f46149b18aa084502c3f12bc75e19eda8bda8d102b82cce8474677a6d0d5f43c58a8989896040516113a89493929190612759565b60405180910390a461147b565b6000818152600460205260409020888155600181018890556002810180546001600160a01b0319166001600160a01b0389161790556003016113f7868261269a565b50600081815260046020819052604090912001611414858261269a565b506000818152600460205260409020600501611430848261269a565b50856001600160a01b031688827f3bab293fc00db832d7619a9299914251b8747c036867ec056cbd506f60135b138a8989896040516114729493929190612759565b60405180910390a45b979650505050505050565b60065460009060ff6101009091041615156001146114b65760405162461bcd60e51b8152600401610485906122b4565b6000805481526003602081905260409091200154610100900460ff16156115125760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48195e1958dd5d195960821b6044820152606401610485565b6000805481526003602052604080822080546001600160a01b0319166001600160a01b0388161790558154825280822060010185905581548252902060020161155b838261269a565b5082846001600160a01b03166000547f8afcfabcb00e47a53a8fc3e9f23ff47ee1926194bb1350dd007c50b412a6cee8856040516115999190611f6f565b60405180910390a46115b533604051602001610eb09190612210565b156115c9576115c76000546001610e6c565b505b6000805490806115d883612371565b919050555060016000546115ec91906123a6565b949350505050565b60008085858460405160200161160c93929190612798565b60405160208183030381529060405280519060200120905060008160405160200161166291907b0ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d05199960211b8152601c810191909152603c0190565b604051602081830303815290604052805190602001209050600061168686836116f1565b905060008160405160200161169b9190612210565b6040516020818303038152906040528051906020012090506116be8160036119af565b80156116d057506116ce87610667565b155b156116e25760019450505050506115ec565b50600098975050505050505050565b600080600080855160411461170c5760009350505050610d3a565b50505060208301516040840151606085015160001a601b81101561173857611735601b826127c8565b90505b6040805160008082526020820180845288905260ff841692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa15801561178c573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b6117ab81611b10565b50565b600081815260046020819052604082208054600182015460028301546003840180548796879660609687968796919590946001600160a01b03909216939092908101916005909101908390611802906123cf565b80601f016020809104026020016040519081016040528092919081815260200182805461182e906123cf565b801561187b5780601f106118505761010080835404028352916020019161187b565b820191906000526020600020905b81548152906001019060200180831161185e57829003601f168201915b5050505050925081805461188e906123cf565b80601f01602080910402602001604051908101604052809291908181526020018280546118ba906123cf565b80156119075780601f106118dc57610100808354040283529160200191611907565b820191906000526020600020905b8154815290600101906020018083116118ea57829003601f168201915b5050505050915080805461191a906123cf565b80601f0160208091040260200160405190810160405280929190818152602001828054611946906123cf565b80156119935780601f1061196857610100808354040283529160200191611993565b820191906000526020600020905b81548152906001019060200180831161197657829003601f168201915b5050505050905095509550955095509550955091939550919395565b60008281526001602090815260408083208151815460809481028201850190935260608101838152859491938492849190840182828015611a0f57602002820191906000526020600020905b8154815260200190600101908083116119fb575b505050918352505060018201546020820152600290910154604091820152810151909150600003611a44576000915050610d3a565b60005b815151811015611aa557600082600001518281518110611a6957611a69612345565b602002602001015190508060011480611a8157508481145b15611a925760019350505050610d3a565b5080611a9d81612371565b915050611a47565b506000949350505050565b60008181526001602090815260409182902080548351818402810184019094528084526060939283018282801561116857602002820191906000526020600020908154815260200190600101908083116111545750505050509050919050565b60065460ff161580611b215750303b155b611b6d5760405162461bcd60e51b815260206004820152601e60248201527f496e697469616c206b65792077617320616c72656164792073657475702e00006044820152606401610485565b6006805461ffff1916610101179055604051600090611b90908390602001612210565b60408051601f198184030181528282528051602091820120600081815260018084528482206002810184905586850190955280865290829052918290529350611bd99290611d04565b506000818152600160208181526040808420830183905560029091527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0805480840182559084527f7fef4bf8f63cf9dd467136c679c02b5c17fcf6322d9562512bf5eb952cf7cc5301849055519091829184916000805160206127e283398151915291a45050565b828054828255906000526020600020908101928215611c9c579160200282015b82811115611c9c578251825591602001919060010190611c81565b50611ca8929150611d44565b5090565b508054611cb8906123cf565b6000825580601f10611cc8575050565b601f0160209004906000526020600020908101906117ab9190611d44565b50805460008255906000526020600020908101906117ab9190611d44565b828054828255906000526020600020908101928215611c9c579160200282015b82811115611c9c578251829060ff16905591602001919060010190611d24565b5b80821115611ca85760008155600101611d45565b600060208284031215611d6b57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015611da257815187529582019590820190600101611d86565b509495945050505050565b606081526000611dc06060830186611d72565b60208301949094525060400152919050565b600080600060608486031215611de757600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611e3c57611e3c611dfe565b604052919050565b60006001600160401b03821115611e5d57611e5d611dfe565b50601f01601f191660200190565b6000611e7e611e7984611e44565b611e14565b9050828152838383011115611e9257600080fd5b828260208301376000602084830101529392505050565b600082601f830112611eba57600080fd5b61066083833560208501611e6b565b600060208284031215611edb57600080fd5b81356001600160401b03811115611ef157600080fd5b6115ec84828501611ea9565b60008060408385031215611f1057600080fd5b50508035926020909101359150565b60005b83811015611f3a578181015183820152602001611f22565b50506000910152565b60008151808452611f5b816020860160208601611f1f565b601f01601f19169290920160200192915050565b6020815260006106606020830184611f43565b6001600160a01b03811681146117ab57600080fd5b60008060408385031215611faa57600080fd5b823591506020830135611fbc81611f82565b809150509250929050565b60008060408385031215611fda57600080fd5b8235915060208301358015158114611fbc57600080fd5b6020808252825182820181905260009190848201906040850190845b818110156120295783518352928401929184019160010161200d565b50909695505050505050565b60008060008060008060c0878903121561204e57600080fd5b8635955060208701359450604087013561206781611f82565b935060608701356001600160401b038082111561208357600080fd5b61208f8a838b01611ea9565b945060808901359150808211156120a557600080fd5b6120b18a838b01611ea9565b935060a08901359150808211156120c757600080fd5b508701601f810189136120d957600080fd5b6120e889823560208401611e6b565b9150509295509295509295565b60008060006060848603121561210a57600080fd5b833561211581611f82565b92506020840135915060408401356001600160401b0381111561213757600080fd5b61214386828701611ea9565b9150509250925092565b6000806000806080858703121561216357600080fd5b843561216e81611f82565b93506020850135925060408501356001600160401b038082111561219157600080fd5b61219d88838901611ea9565b935060608701359150808211156121b357600080fd5b506121c087828801611ea9565b91505092959194509250565b600080604083850312156121df57600080fd5b82356001600160401b038111156121f557600080fd5b61220185828601611ea9565b95602094909401359450505050565b6001600160a01b0391909116815260200190565b60006020828403121561223657600080fd5b813561066081611f82565b86815285602082015260018060a01b038516604082015260c06060820152600061226e60c0830186611f43565b82810360808401526122808186611f43565b905082810360a08401526122948185611f43565b9998505050505050505050565b6020815260006106606020830184611d72565b60208082526033908201527f496e746572616374696e67207769746820746865206c69627261727920636f6e6040820152723a3930b1ba1034b9903337b93134b23232b71760691b606082015260800190565b602080825260309082015260008051602061280283398151915260408201526f65206d616e6167656d656e74206b657960801b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016123835761238361235b565b5060010190565b6000825161239c818460208701611f1f565b9190910192915050565b81810381811115610d3a57610d3a61235b565b634e487b7160e01b600052603160045260246000fd5b600181811c908216806123e357607f821691505b60208210810361240357634e487b7160e01b600052602260045260246000fd5b50919050565b60008154612416816123cf565b808552602060018381168015612433576001811461244d5761247b565b60ff1985168884015283151560051b88018301955061247b565b866000528260002060005b858110156124735781548a8201860152908301908401612458565b890184019650505b505050505092915050565b84815260806020820152600061249f6080830186612409565b82810360408401526124b18186612409565b9050828103606084015261147b8185612409565b6020808252602a908201527f4e6f6e4578697374696e673a204b657920646f65736e27742068617665207375604082015269636820707572706f736560b01b606082015260800190565b600061251d611e7984611e44565b905082815283838301111561253157600080fd5b610660836020830184611f1f565b600082601f83011261255057600080fd5b6106608383516020850161250f565b60008060008060008060c0878903121561257857600080fd5b8651955060208701519450604087015161259181611f82565b60608801519094506001600160401b03808211156125ae57600080fd5b6125ba8a838b0161253f565b945060808901519150808211156125d057600080fd5b6125dc8a838b0161253f565b935060a08901519150808211156125f257600080fd5b508701601f8101891361260457600080fd5b6120e88982516020840161250f565b6040815260006126266040830185612409565b905060ff831660208301529392505050565b6020815260006106606020830184612409565b601f82111561269557600081815260208120601f850160051c810160208610156126725750805b601f850160051c820191505b818110156126915782815560010161267e565b5050505b505050565b81516001600160401b038111156126b3576126b3611dfe565b6126c7816126c184546123cf565b8461264b565b602080601f8311600181146126fc57600084156126e45750858301515b600019600386901b1c1916600185901b178555612691565b600085815260208120601f198616915b8281101561272b5788860151825594840194600190910190840161270c565b50858210156127495787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8481526080602082015260006127726080830186611f43565b82810360408401526127848186611f43565b9050828103606084015261147b8185611f43565b60018060a01b03841681528260208201526060604082015260006127bf6060830184611f43565b95945050505050565b60ff8181168382160190811115610d3a57610d3a61235b56fe480000bb1edad8ca1470381cc334b1917fbd51c6531f3a623ea8e0ec7e38a6e95065726d697373696f6e733a2053656e64657220646f6573206e6f7420686176a2646970667358221220e4ca4aa0037b57edca7310e299408b583a65edc7b834100b1a48c832ebf6ff1d64736f6c63430008110033",
  "deployedBytecode": "0x6080604052600436106100e45760003560e01c806312aaac70146100e95780631d381240146101215780632646b264146101515780634eee424a1461017157806353d413c51461019157806354fd4d50146101b157806373c33708146101e5578063747442d31461020557806380e9e9e1146102255780639010f72614610252578063b1a34e0d14610272578063b61d27f6146102a0578063c0969a6e146102b3578063c3b129e3146102d3578063c4d66de814610300578063c9100bcb14610322578063d202158d14610354578063d234524914610374578063fb307b34146103af575b600080fd5b3480156100f557600080fd5b50610109610104366004611d59565b6103dc565b60405161011893929190611dad565b60405180910390f35b34801561012d57600080fd5b5061014161013c366004611dd2565b610455565b6040519015158152602001610118565b34801561015d57600080fd5b5061014161016c366004611ec9565b610667565b34801561017d57600080fd5b5061014161018c366004611d59565b6106a1565b34801561019d57600080fd5b506101416101ac366004611efd565b6109ab565b3480156101bd57600080fd5b5060408051808201825260058152640312e342e360dc1b602082015290516101189190611f6f565b3480156101f157600080fd5b50610141610200366004611f97565b610d40565b34801561021157600080fd5b50610141610220366004611fc7565b610e6c565b34801561023157600080fd5b50610245610240366004611d59565b611112565b6040516101189190611ff1565b34801561025e57600080fd5b5061024561026d366004611d59565b611174565b34801561027e57600080fd5b5061029261028d366004612035565b6111d4565b604051908152602001610118565b6102926102ae3660046120f5565b611486565b3480156102bf57600080fd5b506101416102ce36600461214d565b6115f4565b3480156102df57600080fd5b506102f36102ee3660046121cc565b6116f1565b6040516101189190612210565b34801561030c57600080fd5b5061032061031b366004612224565b6117a2565b005b34801561032e57600080fd5b5061034261033d366004611d59565b6117ae565b60405161011896959493929190612241565b34801561036057600080fd5b5061014161036f366004611efd565b6119af565b34801561038057600080fd5b5061014161038f366004611ec9565b805160208183018101805160078252928201919093012091525460ff1681565b3480156103bb57600080fd5b506103cf6103ca366004611d59565b611ab0565b60405161011891906122a1565b60008181526001602081815260408084209283015460028401548454835181860281018601909452808452606096958695909491859183018282801561044157602002820191906000526020600020905b81548152602001906001019080831161042d575b505050505092509250925092509193909250565b60065460009060ff61010090910416151560011461048e5760405162461bcd60e51b8152600401610485906122b4565b60405180910390fd5b3330146104e2576104c6336040516020016104a99190612210565b6040516020818303038152906040528051906020012060016119af565b6104e25760405162461bcd60e51b815260040161048590612307565b6000848152600160205260409020600201548490036105d35760005b6000858152600160205260409020548110156105ad57600085815260016020526040812080548390811061053457610534612345565b9060005260206000200154905084810361059a5760405162461bcd60e51b815260206004820152602160248201527f436f6e666c6963743a204b657920616c72656164792068617320707572706f736044820152606560f81b6064820152608401610485565b50806105a581612371565b9150506104fe565b50600084815260016020818152604083208054928301815583529091200183905561061f565b600084815260016020818152604080842060028101899055815180840190925287825293889052908290526106089291611c61565b506000848152600160208190526040909120018290555b60008381526002602090815260408083208054600181018255908452918320909101869055518391859187916000805160206127e283398151915291a45060015b9392505050565b6000600782604051610679919061238a565b9081526040519081900360200190205460ff161561069957506001919050565b506000919050565b60065460009060ff6101009091041615156001146106d15760405162461bcd60e51b8152600401610485906122b4565b33301461075757610709336040516020016106ec9190612210565b6040516020818303038152906040528051906020012060036119af565b6107575760405162461bcd60e51b815260206004820152602b602482015260008051602061280283398151915260448201526a6520434c41494d206b657960a81b6064820152608401610485565b60008281526004602052604081205490036107c85760405162461bcd60e51b815260206004820152602b60248201527f4e6f6e4578697374696e673a205468657265206973206e6f20636c61696d207760448201526a1a5d1a081d1a1a5cc8125160aa1b6064820152608401610485565b60005b6000838152600460209081526040808320548352600590915290208054849190839081106107fb576107fb612345565b90600052602060002001541461081d578061081581612371565b9150506107cb565b6000838152600460209081526040808320548352600590915290208054610846906001906123a6565b8154811061085657610856612345565b60009182526020808320909101548583526004825260408084205484526005909252912080548390811061088c5761088c612345565b60009182526020808320909101929092558481526004825260408082205482526005909252208054806108c1576108c16123b9565b60008281526020808220830160001990810183905590920190925584825260049081905260409182902060028101548154600183015494516001600160a01b0390921694909388937f3cf57863a89432c61c4a27073c6ee39e8a764bff5a05aebfbcdcdc80b2e6130a936109449392600383019290810191600590910190612486565b60405180910390a46000838152600460205260408120818155600181018290556002810180546001600160a01b0319169055906109846003830182611cac565b610992600483016000611cac565b6109a0600583016000611cac565b506001949350505050565b60065460009060ff6101009091041615156001146109db5760405162461bcd60e51b8152600401610485906122b4565b6000838152600160205260409020600201548314610a455760405162461bcd60e51b815260206004820152602160248201527f4e6f6e4578697374696e673a204b65792069736e2774207265676973746572656044820152601960fa1b6064820152608401610485565b333014610a7c57610a60336040516020016104a99190612210565b610a7c5760405162461bcd60e51b815260040161048590612307565b600083815260016020526040902054610aa75760405162461bcd60e51b8152600401610485906124c5565b60005b6000848152600160205260409020805484919083908110610acd57610acd612345565b906000526020600020015414610b025780610ae781612371565b60008681526001602052604090205490925082109050610aaa575b6000848152600160205260409020548110610b2f5760405162461bcd60e51b8152600401610485906124c5565b600084815260016020819052604090912080549091610b4d916123a6565b81548110610b5d57610b5d612345565b9060005260206000200154600160008681526020019081526020016000206000018281548110610b8f57610b8f612345565b6000918252602080832090910192909255858152600190915260409020805480610bbb57610bbb6123b9565b6001900381819060005260206000200160009055905560005b6000848152600260205260409020805486919083908110610bf757610bf7612345565b906000526020600020015414610c195780610c1181612371565b915050610bd4565b60008481526002602052604090208054610c35906001906123a6565b81548110610c4557610c45612345565b9060005260206000200154600260008681526020019081526020016000208281548110610c7457610c74612345565b906000526020600020018190555060026000858152602001908152602001600020805480610ca457610ca46123b9565b60008281526020808220830160001990810183905590920190925586825260019081905260408220908101549054909103610d0357600086815260016020526040812090610cf28282611ce6565b506000600182018190556002909101555b8085877f585a4aef50f8267a92b32412b331b20f7f8b96f2245b253b9cc50dcc621d339760405160405180910390a4600193505050505b92915050565b60065460009060ff610100909104161515600114610d705760405162461bcd60e51b8152600401610485906122b4565b60008080606080333014610dae57610d92336040516020016104a99190612210565b610dae5760405162461bcd60e51b815260040161048590612307565b60405163c9100bcb60e01b8152600481018990526001600160a01b0388169063c9100bcb90602401600060405180830381865afa158015610df3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e1b919081019061255f565b5060405194995092975090955093509150600190600790610e3d90859061238a565b908152604051908190036020019020805491151560ff1990921691909117905550600194505050505092915050565b60065460009060ff610100909104161515600114610e9c5760405162461bcd60e51b8152600401610485906122b4565b610ecd33604051602001610eb09190612210565b6040516020818303038152906040528051906020012060026119af565b610f195760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f74206861766520616374696f6e206b6579006044820152606401610485565b827fb3932da477fe5d6c8ff2eafef050c0f3a1af18fc07121001482600f36f3715d883604051610f4d911515815260200190565b60405180910390a28115156001036110f1576000838152600360208181526040808420928301805460ff1916600190811790915583549084015491516001600160a01b03909116949193610fa8936002909101929101612613565b60408051601f1981840301815290829052610fc29161238a565b60006040518083038185875af1925050503d8060008114610fff576040519150601f19603f3d011682016040523d82523d6000602084013e611004565b606091505b5090915050801561108957600083815260036020819052604091829020908101805461ff00191661010017905560018101548154925190926001600160a01b03169186917f1f920dbda597d7bf95035464170fa58d0a4b57f13a1c315ace6793b9f63688b89161107991600290910190612638565b60405180910390a4506001610d3a565b6000838152600360205260409081902060018101548154925190926001600160a01b03169186917fe10c49d9f7c71da23262367013434763cfdb2332267641728d25cd712c5c6a68916110e191600290910190612638565b60405180910390a4506000610d3a565b5050600090815260036020819052604090912001805460ff19169055600190565b60008181526005602090815260409182902080548351818402810184019094528084526060939283018282801561116857602002820191906000526020600020905b815481526020019060010190808311611154575b50505050509050919050565b60008181526002602090815260409182902080548351818402810184019094528084526060939283018282801561116857602002820191906000526020600020908154815260200190600101908083116111545750505050509050919050565b60065460009060ff6101009091041615156001146112045760405162461bcd60e51b8152600401610485906122b4565b604080516001600160a01b0387166020808301919091528183018a9052825180830384018152606090920190925280519101203033146112a757611252336040516020016106ec9190612210565b6112a75760405162461bcd60e51b815260206004820152603260248201526000805160206128028339815191526044820152716520636c61696d207369676e6572206b657960701b6064820152608401610485565b6000818152600460205260409020600201546001600160a01b038781169116146113b55760008881526005602090815260408083208054600180820183559185528385200185905584845260049092529091208981559081018890556002810180546001600160a01b0319166001600160a01b03891617905560030161132d868261269a565b5060008181526004602081905260409091200161134a858261269a565b506000818152600460205260409020600501611366848261269a565b50856001600160a01b031688827f46149b18aa084502c3f12bc75e19eda8bda8d102b82cce8474677a6d0d5f43c58a8989896040516113a89493929190612759565b60405180910390a461147b565b6000818152600460205260409020888155600181018890556002810180546001600160a01b0319166001600160a01b0389161790556003016113f7868261269a565b50600081815260046020819052604090912001611414858261269a565b506000818152600460205260409020600501611430848261269a565b50856001600160a01b031688827f3bab293fc00db832d7619a9299914251b8747c036867ec056cbd506f60135b138a8989896040516114729493929190612759565b60405180910390a45b979650505050505050565b60065460009060ff6101009091041615156001146114b65760405162461bcd60e51b8152600401610485906122b4565b6000805481526003602081905260409091200154610100900460ff16156115125760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48195e1958dd5d195960821b6044820152606401610485565b6000805481526003602052604080822080546001600160a01b0319166001600160a01b0388161790558154825280822060010185905581548252902060020161155b838261269a565b5082846001600160a01b03166000547f8afcfabcb00e47a53a8fc3e9f23ff47ee1926194bb1350dd007c50b412a6cee8856040516115999190611f6f565b60405180910390a46115b533604051602001610eb09190612210565b156115c9576115c76000546001610e6c565b505b6000805490806115d883612371565b919050555060016000546115ec91906123a6565b949350505050565b60008085858460405160200161160c93929190612798565b60405160208183030381529060405280519060200120905060008160405160200161166291907b0ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d05199960211b8152601c810191909152603c0190565b604051602081830303815290604052805190602001209050600061168686836116f1565b905060008160405160200161169b9190612210565b6040516020818303038152906040528051906020012090506116be8160036119af565b80156116d057506116ce87610667565b155b156116e25760019450505050506115ec565b50600098975050505050505050565b600080600080855160411461170c5760009350505050610d3a565b50505060208301516040840151606085015160001a601b81101561173857611735601b826127c8565b90505b6040805160008082526020820180845288905260ff841692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa15801561178c573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b6117ab81611b10565b50565b600081815260046020819052604082208054600182015460028301546003840180548796879660609687968796919590946001600160a01b03909216939092908101916005909101908390611802906123cf565b80601f016020809104026020016040519081016040528092919081815260200182805461182e906123cf565b801561187b5780601f106118505761010080835404028352916020019161187b565b820191906000526020600020905b81548152906001019060200180831161185e57829003601f168201915b5050505050925081805461188e906123cf565b80601f01602080910402602001604051908101604052809291908181526020018280546118ba906123cf565b80156119075780601f106118dc57610100808354040283529160200191611907565b820191906000526020600020905b8154815290600101906020018083116118ea57829003601f168201915b5050505050915080805461191a906123cf565b80601f0160208091040260200160405190810160405280929190818152602001828054611946906123cf565b80156119935780601f1061196857610100808354040283529160200191611993565b820191906000526020600020905b81548152906001019060200180831161197657829003601f168201915b5050505050905095509550955095509550955091939550919395565b60008281526001602090815260408083208151815460809481028201850190935260608101838152859491938492849190840182828015611a0f57602002820191906000526020600020905b8154815260200190600101908083116119fb575b505050918352505060018201546020820152600290910154604091820152810151909150600003611a44576000915050610d3a565b60005b815151811015611aa557600082600001518281518110611a6957611a69612345565b602002602001015190508060011480611a8157508481145b15611a925760019350505050610d3a565b5080611a9d81612371565b915050611a47565b506000949350505050565b60008181526001602090815260409182902080548351818402810184019094528084526060939283018282801561116857602002820191906000526020600020908154815260200190600101908083116111545750505050509050919050565b60065460ff161580611b215750303b155b611b6d5760405162461bcd60e51b815260206004820152601e60248201527f496e697469616c206b65792077617320616c72656164792073657475702e00006044820152606401610485565b6006805461ffff1916610101179055604051600090611b90908390602001612210565b60408051601f198184030181528282528051602091820120600081815260018084528482206002810184905586850190955280865290829052918290529350611bd99290611d04565b506000818152600160208181526040808420830183905560029091527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0805480840182559084527f7fef4bf8f63cf9dd467136c679c02b5c17fcf6322d9562512bf5eb952cf7cc5301849055519091829184916000805160206127e283398151915291a45050565b828054828255906000526020600020908101928215611c9c579160200282015b82811115611c9c578251825591602001919060010190611c81565b50611ca8929150611d44565b5090565b508054611cb8906123cf565b6000825580601f10611cc8575050565b601f0160209004906000526020600020908101906117ab9190611d44565b50805460008255906000526020600020908101906117ab9190611d44565b828054828255906000526020600020908101928215611c9c579160200282015b82811115611c9c578251829060ff16905591602001919060010190611d24565b5b80821115611ca85760008155600101611d45565b600060208284031215611d6b57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015611da257815187529582019590820190600101611d86565b509495945050505050565b606081526000611dc06060830186611d72565b60208301949094525060400152919050565b600080600060608486031215611de757600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611e3c57611e3c611dfe565b604052919050565b60006001600160401b03821115611e5d57611e5d611dfe565b50601f01601f191660200190565b6000611e7e611e7984611e44565b611e14565b9050828152838383011115611e9257600080fd5b828260208301376000602084830101529392505050565b600082601f830112611eba57600080fd5b61066083833560208501611e6b565b600060208284031215611edb57600080fd5b81356001600160401b03811115611ef157600080fd5b6115ec84828501611ea9565b60008060408385031215611f1057600080fd5b50508035926020909101359150565b60005b83811015611f3a578181015183820152602001611f22565b50506000910152565b60008151808452611f5b816020860160208601611f1f565b601f01601f19169290920160200192915050565b6020815260006106606020830184611f43565b6001600160a01b03811681146117ab57600080fd5b60008060408385031215611faa57600080fd5b823591506020830135611fbc81611f82565b809150509250929050565b60008060408385031215611fda57600080fd5b8235915060208301358015158114611fbc57600080fd5b6020808252825182820181905260009190848201906040850190845b818110156120295783518352928401929184019160010161200d565b50909695505050505050565b60008060008060008060c0878903121561204e57600080fd5b8635955060208701359450604087013561206781611f82565b935060608701356001600160401b038082111561208357600080fd5b61208f8a838b01611ea9565b945060808901359150808211156120a557600080fd5b6120b18a838b01611ea9565b935060a08901359150808211156120c757600080fd5b508701601f810189136120d957600080fd5b6120e889823560208401611e6b565b9150509295509295509295565b60008060006060848603121561210a57600080fd5b833561211581611f82565b92506020840135915060408401356001600160401b0381111561213757600080fd5b61214386828701611ea9565b9150509250925092565b6000806000806080858703121561216357600080fd5b843561216e81611f82565b93506020850135925060408501356001600160401b038082111561219157600080fd5b61219d88838901611ea9565b935060608701359150808211156121b357600080fd5b506121c087828801611ea9565b91505092959194509250565b600080604083850312156121df57600080fd5b82356001600160401b038111156121f557600080fd5b61220185828601611ea9565b95602094909401359450505050565b6001600160a01b0391909116815260200190565b60006020828403121561223657600080fd5b813561066081611f82565b86815285602082015260018060a01b038516604082015260c06060820152600061226e60c0830186611f43565b82810360808401526122808186611f43565b905082810360a08401526122948185611f43565b9998505050505050505050565b6020815260006106606020830184611d72565b60208082526033908201527f496e746572616374696e67207769746820746865206c69627261727920636f6e6040820152723a3930b1ba1034b9903337b93134b23232b71760691b606082015260800190565b602080825260309082015260008051602061280283398151915260408201526f65206d616e6167656d656e74206b657960801b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016123835761238361235b565b5060010190565b6000825161239c818460208701611f1f565b9190910192915050565b81810381811115610d3a57610d3a61235b565b634e487b7160e01b600052603160045260246000fd5b600181811c908216806123e357607f821691505b60208210810361240357634e487b7160e01b600052602260045260246000fd5b50919050565b60008154612416816123cf565b808552602060018381168015612433576001811461244d5761247b565b60ff1985168884015283151560051b88018301955061247b565b866000528260002060005b858110156124735781548a8201860152908301908401612458565b890184019650505b505050505092915050565b84815260806020820152600061249f6080830186612409565b82810360408401526124b18186612409565b9050828103606084015261147b8185612409565b6020808252602a908201527f4e6f6e4578697374696e673a204b657920646f65736e27742068617665207375604082015269636820707572706f736560b01b606082015260800190565b600061251d611e7984611e44565b905082815283838301111561253157600080fd5b610660836020830184611f1f565b600082601f83011261255057600080fd5b6106608383516020850161250f565b60008060008060008060c0878903121561257857600080fd5b8651955060208701519450604087015161259181611f82565b60608801519094506001600160401b03808211156125ae57600080fd5b6125ba8a838b0161253f565b945060808901519150808211156125d057600080fd5b6125dc8a838b0161253f565b935060a08901519150808211156125f257600080fd5b508701601f8101891361260457600080fd5b6120e88982516020840161250f565b6040815260006126266040830185612409565b905060ff831660208301529392505050565b6020815260006106606020830184612409565b601f82111561269557600081815260208120601f850160051c810160208610156126725750805b601f850160051c820191505b818110156126915782815560010161267e565b5050505b505050565b81516001600160401b038111156126b3576126b3611dfe565b6126c7816126c184546123cf565b8461264b565b602080601f8311600181146126fc57600084156126e45750858301515b600019600386901b1c1916600185901b178555612691565b600085815260208120601f198616915b8281101561272b5788860151825594840194600190910190840161270c565b50858210156127495787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8481526080602082015260006127726080830186611f43565b82810360408401526127848186611f43565b9050828103606084015261147b8185611f43565b60018060a01b03841681528260208201526060604082015260006127bf6060830184611f43565b95945050505050565b60ff8181168382160190811115610d3a57610d3a61235b56fe480000bb1edad8ca1470381cc334b1917fbd51c6531f3a623ea8e0ec7e38a6e95065726d697373696f6e733a2053656e64657220646f6573206e6f7420686176a2646970667358221220e4ca4aa0037b57edca7310e299408b583a65edc7b834100b1a48c832ebf6ff1d64736f6c63430008110033",
  "immutableReferences": {},
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:873:54",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:54",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "95:209:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "141:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "150:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "153:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "143:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "143:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "143:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "116:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "125:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "112:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "112:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "137:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "108:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "108:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "105:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "166:29:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "185:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "179:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "179:16:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "170:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "258:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "267:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "270:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "260:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "260:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "260:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "217:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "228:5:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "243:3:54",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "248:1:54",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "239:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "239:11:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "252:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "235:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "235:19:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "224:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "224:31:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "214:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "214:42:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "207:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "207:50:54"
                  },
                  "nodeType": "YulIf",
                  "src": "204:70:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "283:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "293:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "283:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "61:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "72:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "84:6:54",
                "type": ""
              }
            ],
            "src": "14:290:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "483:180:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "500:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "511:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "493:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "493:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "493:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "534:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "545:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "530:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "530:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "550:2:54",
                        "type": "",
                        "value": "30"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "523:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "523:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "523:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "573:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "584:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "569:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "569:18:54"
                      },
                      {
                        "hexValue": "496e697469616c206b65792077617320616c72656164792073657475702e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "589:32:54",
                        "type": "",
                        "value": "Initial key was already setup."
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "562:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "562:60:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "562:60:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "631:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "643:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "654:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "639:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "639:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "631:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_f97b6c8710e53ddda282a80ef5956d499e3405b5bb60ff3bc53f8e99e471fc0e__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "460:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "474:4:54",
                "type": ""
              }
            ],
            "src": "309:354:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "769:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "779:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "791:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "802:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "787:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "787:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "779:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "821:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "836:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "852:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "857:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "848:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "848:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "861:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "844:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "844:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "832:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "832:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "814:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "814:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "814:51:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "738:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "749:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "760:4:54",
                "type": ""
              }
            ],
            "src": "668:203:54"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_f97b6c8710e53ddda282a80ef5956d499e3405b5bb60ff3bc53f8e99e471fc0e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"Initial key was already setup.\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n}",
      "id": 54,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:25784:54",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:54",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "84:110:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "130:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "139:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "142:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "132:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "132:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "132:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "105:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "114:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "101:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "101:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "126:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "97:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "97:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "94:52:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "155:33:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "178:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "165:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "165:23:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "155:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "50:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "61:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "73:6:54",
                "type": ""
              }
            ],
            "src": "14:180:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "260:374:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "270:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "290:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "284:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "284:12:54"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "274:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "312:3:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "317:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "305:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "305:19:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "305:19:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "333:14:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "343:4:54",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "337:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "356:19:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "367:3:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "372:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "363:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "363:12:54"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "356:3:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "384:28:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "402:5:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "409:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "398:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "398:14:54"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "388:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "421:10:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "430:1:54",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "425:1:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "489:120:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "510:3:54"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "521:6:54"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "515:5:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "515:13:54"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "503:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "503:26:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "503:26:54"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "542:19:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "553:3:54"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "558:2:54"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "549:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "549:12:54"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "542:3:54"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "574:25:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "588:6:54"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "596:2:54"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "584:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "584:15:54"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "574:6:54"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "451:1:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "454:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "448:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "448:13:54"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "462:18:54",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "464:14:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "473:1:54"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "476:1:54",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "469:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "469:9:54"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "464:1:54"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "444:3:54",
                    "statements": []
                  },
                  "src": "440:169:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "618:10:54",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "625:3:54"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "618:3:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_array_uint256_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "237:5:54",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "244:3:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "252:3:54",
                "type": ""
              }
            ],
            "src": "199:435:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "846:196:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "863:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "874:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "856:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "856:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "856:21:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "886:64:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "923:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "935:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "946:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "931:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "931:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "894:28:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "894:56:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "886:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "970:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "981:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "966:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "966:18:54"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "986:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "959:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "959:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "959:34:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1013:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1024:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1009:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1009:18:54"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "1029:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1002:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1002:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1002:34:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_uint256_t_bytes32__to_t_array$_t_uint256_$dyn_memory_ptr_t_uint256_t_bytes32__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "799:9:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "810:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "818:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "826:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "837:4:54",
                "type": ""
              }
            ],
            "src": "639:403:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1151:212:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1197:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1206:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1209:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1199:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1199:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1199:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1172:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1181:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1168:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1168:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1193:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1164:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1164:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "1161:52:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1222:33:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1245:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1232:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1232:23:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1222:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1264:42:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1291:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1302:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1287:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1287:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1274:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1274:32:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "1264:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1315:42:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1342:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1353:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1338:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1338:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1325:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1325:32:54"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "1315:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_uint256t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1101:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1112:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1124:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1132:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "1140:6:54",
                "type": ""
              }
            ],
            "src": "1047:316:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1463:92:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1473:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1485:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1496:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1481:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1481:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1473:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1515:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "1540:6:54"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "1533:6:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1533:14:54"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "1526:6:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1526:22:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1508:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1508:41:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1508:41:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1432:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1443:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1454:4:54",
                "type": ""
              }
            ],
            "src": "1368:187:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1592:95:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1609:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1616:3:54",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1621:10:54",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "1612:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1612:20:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1602:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1602:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1602:31:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1649:1:54",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1652:4:54",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1642:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1642:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1642:15:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1673:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1676:4:54",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "1666:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1666:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1666:15:54"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "1560:127:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1737:230:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1747:19:54",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1763:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1757:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1757:9:54"
                  },
                  "variableNames": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulIdentifier",
                      "src": "1747:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1775:58:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "1797:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "size",
                                "nodeType": "YulIdentifier",
                                "src": "1813:4:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1819:2:54",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1809:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1809:13:54"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1828:2:54",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "1824:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1824:7:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "1805:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1805:27:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1793:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1793:40:54"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "1779:10:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1908:22:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "1910:16:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1910:18:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1910:18:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "1851:10:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1871:2:54",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1875:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "1867:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1867:10:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1879:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "1863:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1863:18:54"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "1848:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1848:34:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "1887:10:54"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "1899:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "1884:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1884:22:54"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "1845:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1845:62:54"
                  },
                  "nodeType": "YulIf",
                  "src": "1842:88:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1946:2:54",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "1950:10:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1939:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1939:22:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1939:22:54"
                }
              ]
            },
            "name": "allocate_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "1717:4:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "1726:6:54",
                "type": ""
              }
            ],
            "src": "1692:275:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2029:129:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2073:22:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "2075:16:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2075:18:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2075:18:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2045:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2061:2:54",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2065:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "2057:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2057:10:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2069:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2053:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2053:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2042:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2042:30:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2039:56:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2104:48:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "2124:6:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2132:2:54",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2120:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2120:15:54"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2141:2:54",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "2137:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2137:7:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "2116:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2116:29:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2147:4:54",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2112:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2112:40:54"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "2104:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "array_allocation_size_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "2009:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "2020:4:54",
                "type": ""
              }
            ],
            "src": "1972:186:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2237:262:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2247:61:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "2300:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_bytes",
                          "nodeType": "YulIdentifier",
                          "src": "2272:27:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2272:35:54"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "2256:15:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2256:52:54"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "2247:5:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "2324:5:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2331:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2317:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2317:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2317:21:54"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2376:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2385:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2388:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2378:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2378:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2378:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "2357:3:54"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "2362:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2353:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2353:16:54"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "2371:3:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2350:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2350:25:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2347:45:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "array",
                            "nodeType": "YulIdentifier",
                            "src": "2418:5:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2425:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2414:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2414:16:54"
                      },
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "2432:3:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2437:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "2401:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2401:43:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2401:43:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "2468:5:54"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "2475:6:54"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2464:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2464:18:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2484:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2460:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2460:29:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2491:1:54",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2453:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2453:40:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2453:40:54"
                }
              ]
            },
            "name": "abi_decode_available_length_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "2206:3:54",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "2211:6:54",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "2219:3:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "2227:5:54",
                "type": ""
              }
            ],
            "src": "2163:336:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2556:168:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2605:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2614:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2617:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2607:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2607:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2607:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "2584:6:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2592:4:54",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2580:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2580:17:54"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "2599:3:54"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "2576:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2576:27:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "2569:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2569:35:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2566:55:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2630:88:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2677:6:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2685:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2673:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2673:17:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2705:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "2692:12:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2692:20:54"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "2714:3:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_available_length_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "2639:33:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2639:79:54"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "2630:5:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "2530:6:54",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "2538:3:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "2546:5:54",
                "type": ""
              }
            ],
            "src": "2504:220:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2808:241:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2854:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2863:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2866:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2856:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2856:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2856:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2829:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2838:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2825:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2825:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2850:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2821:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2821:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2818:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2879:37:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2906:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2893:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2893:23:54"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "2883:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2959:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2968:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2971:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2961:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2961:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2961:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2931:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2947:2:54",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2951:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "2943:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2943:10:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2955:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2939:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2939:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2928:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2928:30:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2925:50:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2984:59:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3015:9:54"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "3026:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3011:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3011:22:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3035:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "2994:16:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2994:49:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2984:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2774:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2785:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2797:6:54",
                "type": ""
              }
            ],
            "src": "2729:320:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3141:161:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3187:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3196:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3199:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3189:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3189:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3189:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3162:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3171:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3158:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3158:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3183:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3154:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3154:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "3151:52:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3212:33:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3235:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3222:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3222:23:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3212:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3254:42:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3281:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3292:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3277:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3277:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3264:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3264:32:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "3254:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3099:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3110:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3122:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3130:6:54",
                "type": ""
              }
            ],
            "src": "3054:248:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3373:184:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3383:10:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "3392:1:54",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "3387:1:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3452:63:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "3477:3:54"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "3482:1:54"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "3473:3:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3473:11:54"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "3496:3:54"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "3501:1:54"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "3492:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "3492:11:54"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "3486:5:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3486:18:54"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "3466:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3466:39:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3466:39:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "3413:1:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3416:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "3410:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3410:13:54"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "3424:19:54",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "3426:15:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "3435:1:54"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3438:2:54",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "3431:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3431:10:54"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "3426:1:54"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "3406:3:54",
                    "statements": []
                  },
                  "src": "3402:113:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "3535:3:54"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "3540:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3531:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3531:16:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3549:1:54",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3524:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3524:27:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3524:27:54"
                }
              ]
            },
            "name": "copy_memory_to_memory_with_cleanup",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "3351:3:54",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "3356:3:54",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "3361:6:54",
                "type": ""
              }
            ],
            "src": "3307:250:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3612:221:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3622:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "3642:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "3636:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3636:12:54"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "3626:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3664:3:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3669:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3657:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3657:19:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3657:19:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "3724:5:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3731:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3720:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3720:16:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "3742:3:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3747:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3738:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3738:14:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "3754:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "3685:34:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3685:76:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3685:76:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3770:57:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "3785:3:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3798:6:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3806:2:54",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3794:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3794:15:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3815:2:54",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "3811:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3811:7:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "3790:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3790:29:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3781:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3781:39:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3822:4:54",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3777:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3777:50:54"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "3770:3:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_string",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "3589:5:54",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "3596:3:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "3604:3:54",
                "type": ""
              }
            ],
            "src": "3562:271:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3959:99:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3976:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3987:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3969:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3969:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3969:21:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3999:53:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "4025:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4037:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4048:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4033:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4033:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "4007:17:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4007:45:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "3999:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3928:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3939:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3950:4:54",
                "type": ""
              }
            ],
            "src": "3838:220:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4108:86:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4172:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4181:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4184:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4174:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4174:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4174:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "4131:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4142:5:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4157:3:54",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4162:1:54",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "4153:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4153:11:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4166:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "4149:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4149:19:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "4138:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4138:31:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "4128:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4128:42:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "4121:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4121:50:54"
                  },
                  "nodeType": "YulIf",
                  "src": "4118:70:54"
                }
              ]
            },
            "name": "validator_revert_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "4097:5:54",
                "type": ""
              }
            ],
            "src": "4063:131:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4286:228:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4332:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4341:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4344:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4334:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4334:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4334:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4307:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4316:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4303:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4303:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4328:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4299:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4299:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "4296:52:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4357:33:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4380:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4367:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4367:23:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4357:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4399:45:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4429:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4440:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4425:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4425:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4412:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4412:32:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "4403:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "4478:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "4453:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4453:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4453:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4493:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "4503:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "4493:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4244:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4255:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4267:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "4275:6:54",
                "type": ""
              }
            ],
            "src": "4199:315:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4603:257:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4649:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4658:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4661:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4651:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4651:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4651:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4624:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4633:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4620:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4620:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4645:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4616:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4616:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "4613:52:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4674:33:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4697:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4684:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4684:23:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4674:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4716:45:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4746:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4757:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4742:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4742:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4729:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4729:32:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "4720:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4814:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4823:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4826:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4816:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4816:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4816:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "4783:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4804:5:54"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4797:6:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4797:13:54"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "4790:6:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4790:21:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "4780:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4780:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "4773:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4773:40:54"
                  },
                  "nodeType": "YulIf",
                  "src": "4770:60:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4839:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "4849:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "4839:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4561:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4572:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4584:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "4592:6:54",
                "type": ""
              }
            ],
            "src": "4519:341:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4935:110:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4981:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4990:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4993:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4983:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4983:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4983:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4956:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4965:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4952:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4952:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4977:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4948:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4948:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "4945:52:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5006:33:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5029:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5016:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5016:23:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "5006:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4901:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4912:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4924:6:54",
                "type": ""
              }
            ],
            "src": "4865:180:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5201:481:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5211:12:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "5221:2:54",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "5215:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5232:32:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5250:9:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5261:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5246:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5246:18:54"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "5236:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5280:9:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5291:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5273:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5273:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5273:21:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5303:17:54",
                  "value": {
                    "name": "tail_1",
                    "nodeType": "YulIdentifier",
                    "src": "5314:6:54"
                  },
                  "variables": [
                    {
                      "name": "pos",
                      "nodeType": "YulTypedName",
                      "src": "5307:3:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5329:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "5349:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "5343:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5343:13:54"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "5333:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "5372:6:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "5380:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5365:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5365:22:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5365:22:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5396:25:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5407:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5418:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5403:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5403:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "5396:3:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5430:29:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "5448:6:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5456:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5444:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5444:15:54"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "5434:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5468:10:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "5477:1:54",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "5472:1:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5536:120:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "5557:3:54"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "5568:6:54"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "5562:5:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5562:13:54"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "5550:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5550:26:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5550:26:54"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5589:19:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "5600:3:54"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "5605:2:54"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "5596:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5596:12:54"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "5589:3:54"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5621:25:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "5635:6:54"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "5643:2:54"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "5631:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5631:15:54"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "5621:6:54"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "5498:1:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "5501:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "5495:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5495:13:54"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "5509:18:54",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "5511:14:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "5520:1:54"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5523:1:54",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "5516:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5516:9:54"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "5511:1:54"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "5491:3:54",
                    "statements": []
                  },
                  "src": "5487:169:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5665:11:54",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "5673:3:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5665:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5170:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5181:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5192:4:54",
                "type": ""
              }
            ],
            "src": "5050:632:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5870:958:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5917:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5926:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5929:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5919:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5919:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5919:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5891:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5900:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5887:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5887:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5912:3:54",
                        "type": "",
                        "value": "192"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5883:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5883:33:54"
                  },
                  "nodeType": "YulIf",
                  "src": "5880:53:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5942:33:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5965:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5952:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5952:23:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "5942:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5984:42:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6011:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6022:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6007:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6007:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5994:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5994:32:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "5984:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6035:45:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6065:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6076:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6061:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6061:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6048:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6048:32:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "6039:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "6114:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "6089:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6089:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6089:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6129:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "6139:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "6129:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6153:46:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6184:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6195:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6180:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6180:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6167:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6167:32:54"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "6157:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6208:28:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6226:2:54",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6230:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "6222:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6222:10:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6234:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "6218:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6218:18:54"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "6212:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6263:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6272:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6275:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6265:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6265:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6265:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "6251:6:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6259:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6248:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6248:14:54"
                  },
                  "nodeType": "YulIf",
                  "src": "6245:34:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6288:59:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6319:9:54"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "6330:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6315:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6315:22:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6339:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "6298:16:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6298:49:54"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "6288:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6356:49:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6389:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6400:3:54",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6385:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6385:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6372:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6372:33:54"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "6360:8:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6434:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6443:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6446:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6436:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6436:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6436:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "6420:8:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6430:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6417:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6417:16:54"
                  },
                  "nodeType": "YulIf",
                  "src": "6414:36:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6459:61:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6490:9:54"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "6501:8:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6486:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6486:24:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6512:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "6469:16:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6469:51:54"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "6459:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6529:49:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6562:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6573:3:54",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6558:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6558:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6545:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6545:33:54"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "6533:8:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6607:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6616:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6619:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6609:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6609:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6609:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "6593:8:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6603:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6590:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6590:16:54"
                  },
                  "nodeType": "YulIf",
                  "src": "6587:36:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6632:34:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6646:9:54"
                      },
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "6657:8:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6642:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6642:24:54"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "6636:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6714:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6723:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6726:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6716:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6716:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6716:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "6693:2:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6697:4:54",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "6689:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6689:13:54"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6704:7:54"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "6685:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6685:27:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "6678:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6678:35:54"
                  },
                  "nodeType": "YulIf",
                  "src": "6675:55:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6739:83:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "6787:2:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6791:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6783:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6783:11:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "6809:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "6796:12:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6796:16:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6814:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_available_length_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "6749:33:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6749:73:54"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "6739:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_uint256t_addresst_bytes_memory_ptrt_bytes_memory_ptrt_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5796:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "5807:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5819:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5827:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "5835:6:54",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "5843:6:54",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "5851:6:54",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "5859:6:54",
                "type": ""
              }
            ],
            "src": "5687:1141:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6934:76:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "6944:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6956:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6967:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6952:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6952:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6944:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6986:9:54"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "6997:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6979:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6979:25:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6979:25:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6903:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6914:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6925:4:54",
                "type": ""
              }
            ],
            "src": "6833:177:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7128:410:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7174:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7183:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7186:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7176:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7176:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7176:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7149:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7158:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7145:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7145:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7170:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7141:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7141:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "7138:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7199:36:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7225:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7212:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7212:23:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "7203:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "7269:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "7244:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7244:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7244:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7284:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "7294:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "7284:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7308:42:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7335:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7346:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7331:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7331:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7318:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7318:32:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "7308:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7359:46:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7390:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7401:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7386:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7386:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7373:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7373:32:54"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "7363:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7448:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7457:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7460:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7450:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7450:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7450:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "7420:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7436:2:54",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7440:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "7432:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7432:10:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7444:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7428:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7428:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "7417:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7417:30:54"
                  },
                  "nodeType": "YulIf",
                  "src": "7414:50:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7473:59:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7504:9:54"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "7515:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7500:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7500:22:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "7524:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "7483:16:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7483:49:54"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "7473:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7078:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "7089:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7101:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "7109:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "7117:6:54",
                "type": ""
              }
            ],
            "src": "7015:523:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7644:76:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "7654:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7666:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7677:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7662:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7662:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7654:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7696:9:54"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "7707:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7689:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7689:25:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7689:25:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7613:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7624:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7635:4:54",
                "type": ""
              }
            ],
            "src": "7543:177:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7882:604:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7929:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7938:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7941:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7931:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7931:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7931:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7903:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7912:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7899:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7899:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7924:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7895:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7895:33:54"
                  },
                  "nodeType": "YulIf",
                  "src": "7892:53:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7954:36:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7980:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7967:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7967:23:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "7958:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "8024:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "7999:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7999:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7999:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8039:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "8049:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8039:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8063:42:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8090:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8101:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8086:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8086:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8073:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8073:32:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "8063:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8114:46:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8145:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8156:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8141:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8141:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8128:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8128:32:54"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "8118:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8169:28:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8187:2:54",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8191:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "8183:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8183:10:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8195:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "8179:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8179:18:54"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "8173:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8224:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8233:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8236:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8226:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8226:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8226:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "8212:6:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8220:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8209:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8209:14:54"
                  },
                  "nodeType": "YulIf",
                  "src": "8206:34:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8249:59:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8280:9:54"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "8291:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8276:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8276:22:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8300:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "8259:16:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8259:49:54"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "8249:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8317:48:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8350:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8361:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8346:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8346:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8333:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8333:32:54"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "8321:8:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8394:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8403:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8406:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8396:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8396:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8396:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "8380:8:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8390:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8377:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8377:16:54"
                  },
                  "nodeType": "YulIf",
                  "src": "8374:36:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8419:61:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8450:9:54"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "8461:8:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8446:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8446:24:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8472:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "8429:16:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8429:51:54"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "8419:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_contract$_IIdentity_$1743t_uint256t_bytes_memory_ptrt_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7824:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "7835:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7847:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "7855:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "7863:6:54",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "7871:6:54",
                "type": ""
              }
            ],
            "src": "7725:761:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8587:292:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8633:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8642:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8645:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8635:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8635:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8635:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8608:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8617:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8604:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8604:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8629:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8600:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8600:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "8597:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8658:37:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8685:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8672:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8672:23:54"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "8662:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8738:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8747:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8750:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8740:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8740:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8740:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "8710:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8726:2:54",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8730:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "8722:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8722:10:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8734:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8718:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8718:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8707:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8707:30:54"
                  },
                  "nodeType": "YulIf",
                  "src": "8704:50:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8763:59:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8794:9:54"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "8805:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8790:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8790:22:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8814:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "8773:16:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8773:49:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8763:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8831:42:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8858:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8869:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8854:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8854:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8841:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8841:32:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "8831:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes_memory_ptrt_bytes32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8545:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "8556:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8568:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "8576:6:54",
                "type": ""
              }
            ],
            "src": "8491:388:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8985:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "8995:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9007:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9018:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9003:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9003:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "8995:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9037:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "9052:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9068:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9073:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "9064:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9064:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9077:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "9060:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9060:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "9048:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9048:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9030:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9030:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9030:51:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8954:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8965:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "8976:4:54",
                "type": ""
              }
            ],
            "src": "8884:203:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9162:177:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9208:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9217:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9220:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9210:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9210:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9210:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9183:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9192:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9179:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9179:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9204:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "9175:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9175:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "9172:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9233:36:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9259:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9246:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9246:23:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "9237:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "9303:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "9278:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9278:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9278:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9318:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "9328:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "9318:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9128:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "9139:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9151:6:54",
                "type": ""
              }
            ],
            "src": "9092:247:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9641:488:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9658:9:54"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "9669:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9651:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9651:25:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9651:25:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9696:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9707:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9692:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9692:18:54"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "9712:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9685:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9685:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9685:34:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9739:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9750:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9735:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9735:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nodeType": "YulIdentifier",
                            "src": "9759:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9775:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9780:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "9771:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9771:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9784:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "9767:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9767:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "9755:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9755:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9728:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9728:60:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9728:60:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9808:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9819:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9804:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9804:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9824:3:54",
                        "type": "",
                        "value": "192"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9797:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9797:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9797:31:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9837:60:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "9869:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9881:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9892:3:54",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9877:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9877:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "9851:17:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9851:46:54"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "9841:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9917:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9928:3:54",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9913:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9913:19:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "9938:6:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9946:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9934:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9934:22:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9906:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9906:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9906:51:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9966:47:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "9998:6:54"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "10006:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "9980:17:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9980:33:54"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nodeType": "YulTypedName",
                      "src": "9970:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10033:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10044:3:54",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10029:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10029:19:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_2",
                            "nodeType": "YulIdentifier",
                            "src": "10054:6:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10062:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "10050:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10050:22:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10022:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10022:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10022:51:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10082:41:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value5",
                        "nodeType": "YulIdentifier",
                        "src": "10108:6:54"
                      },
                      {
                        "name": "tail_2",
                        "nodeType": "YulIdentifier",
                        "src": "10116:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "10090:17:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10090:33:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "10082:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256_t_uint256_t_address_t_bytes_memory_ptr_t_bytes_memory_ptr_t_string_memory_ptr__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr_t_bytes_memory_ptr_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9570:9:54",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "9581:6:54",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "9589:6:54",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "9597:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "9605:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "9613:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9621:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "9632:4:54",
                "type": ""
              }
            ],
            "src": "9344:785:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10285:110:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10302:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10313:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10295:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10295:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10295:21:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10325:64:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "10362:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10374:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10385:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10370:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10370:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_array_uint256_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "10333:28:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10333:56:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "10325:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10254:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "10265:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "10276:4:54",
                "type": ""
              }
            ],
            "src": "10134:261:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10574:241:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10591:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10602:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10584:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10584:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10584:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10625:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10636:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10621:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10621:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10641:2:54",
                        "type": "",
                        "value": "51"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10614:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10614:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10614:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10664:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10675:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10660:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10660:18:54"
                      },
                      {
                        "hexValue": "496e746572616374696e67207769746820746865206c69627261727920636f6e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10680:34:54",
                        "type": "",
                        "value": "Interacting with the library con"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10653:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10653:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10653:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10735:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10746:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10731:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10731:18:54"
                      },
                      {
                        "hexValue": "747261637420697320666f7262696464656e2e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10751:21:54",
                        "type": "",
                        "value": "tract is forbidden."
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10724:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10724:49:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10724:49:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10782:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10794:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10805:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10790:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10790:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "10782:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_3c5bfa18ac85c8d1f4d8c63a7d33e2c24b63b20654ca46146bece560cc5642df__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10551:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "10565:4:54",
                "type": ""
              }
            ],
            "src": "10400:415:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10994:238:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11011:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11022:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11004:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11004:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11004:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11045:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11056:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11041:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11041:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11061:2:54",
                        "type": "",
                        "value": "48"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11034:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11034:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11034:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11084:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11095:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11080:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11080:18:54"
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a2053656e64657220646f6573206e6f7420686176",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11100:34:54",
                        "type": "",
                        "value": "Permissions: Sender does not hav"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11073:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11073:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11073:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11155:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11166:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11151:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11151:18:54"
                      },
                      {
                        "hexValue": "65206d616e6167656d656e74206b6579",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11171:18:54",
                        "type": "",
                        "value": "e management key"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11144:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11144:46:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11144:46:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11199:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11211:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11222:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11207:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11207:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "11199:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_6f6b3247450dc94fc6574303b07d6b95320782b0ece8a8d742601c64b874e995__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10971:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "10985:4:54",
                "type": ""
              }
            ],
            "src": "10820:412:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11269:95:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11286:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11293:3:54",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11298:10:54",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "11289:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11289:20:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11279:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11279:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11279:31:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11326:1:54",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11329:4:54",
                        "type": "",
                        "value": "0x32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11319:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11319:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11319:15:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11350:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11353:4:54",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "11343:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11343:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11343:15:54"
                }
              ]
            },
            "name": "panic_error_0x32",
            "nodeType": "YulFunctionDefinition",
            "src": "11237:127:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11543:223:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11560:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11571:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11553:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11553:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11553:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11594:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11605:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11590:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11590:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11610:2:54",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11583:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11583:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11583:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11633:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11644:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11629:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11629:18:54"
                      },
                      {
                        "hexValue": "436f6e666c6963743a204b657920616c72656164792068617320707572706f73",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11649:34:54",
                        "type": "",
                        "value": "Conflict: Key already has purpos"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11622:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11622:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11622:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11704:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11715:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11700:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11700:18:54"
                      },
                      {
                        "hexValue": "65",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11720:3:54",
                        "type": "",
                        "value": "e"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11693:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11693:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11693:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11733:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11745:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11756:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11741:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11741:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "11733:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_ced1bafc369b7e2b0ca5f6ed9c6c1eb753593d516580b4f3f74fc55e230be91e__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11520:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "11534:4:54",
                "type": ""
              }
            ],
            "src": "11369:397:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11803:95:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11820:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11827:3:54",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11832:10:54",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "11823:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11823:20:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11813:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11813:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11813:31:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11860:1:54",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11863:4:54",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11853:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11853:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11853:15:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11884:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11887:4:54",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "11877:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11877:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11877:15:54"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nodeType": "YulFunctionDefinition",
            "src": "11771:127:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11950:88:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11981:22:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "11983:16:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11983:18:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11983:18:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "11966:5:54"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11977:1:54",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "11973:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11973:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "11963:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11963:17:54"
                  },
                  "nodeType": "YulIf",
                  "src": "11960:43:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12012:20:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "12023:5:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12030:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12019:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12019:13:54"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "12012:3:54"
                    }
                  ]
                }
              ]
            },
            "name": "increment_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "11932:5:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "11942:3:54",
                "type": ""
              }
            ],
            "src": "11903:135:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12180:150:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12190:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "12210:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "12204:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12204:13:54"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "12194:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "12265:6:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12273:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12261:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12261:17:54"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "12280:3:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "12285:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "12226:34:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12226:66:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12226:66:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12301:23:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "12312:3:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "12317:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12308:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12308:16:54"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "12301:3:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "12156:3:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "12161:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "12172:3:54",
                "type": ""
              }
            ],
            "src": "12043:287:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12509:233:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12526:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12537:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12519:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12519:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12519:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12560:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12571:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12556:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12556:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12576:2:54",
                        "type": "",
                        "value": "43"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12549:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12549:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12549:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12599:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12610:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12595:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12595:18:54"
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a2053656e64657220646f6573206e6f7420686176",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12615:34:54",
                        "type": "",
                        "value": "Permissions: Sender does not hav"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12588:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12588:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12588:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12670:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12681:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12666:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12666:18:54"
                      },
                      {
                        "hexValue": "6520434c41494d206b6579",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12686:13:54",
                        "type": "",
                        "value": "e CLAIM key"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12659:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12659:41:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12659:41:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12709:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12721:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12732:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12717:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12717:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "12709:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_86f6f17a299db15bd5520d80701f10acbd3f85058227676cf3a946fcbf6dc7be__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12486:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "12500:4:54",
                "type": ""
              }
            ],
            "src": "12335:407:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12921:233:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12938:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12949:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12931:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12931:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12931:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12972:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12983:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12968:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12968:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12988:2:54",
                        "type": "",
                        "value": "43"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12961:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12961:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12961:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13011:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13022:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13007:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13007:18:54"
                      },
                      {
                        "hexValue": "4e6f6e4578697374696e673a205468657265206973206e6f20636c61696d2077",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "13027:34:54",
                        "type": "",
                        "value": "NonExisting: There is no claim w"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13000:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13000:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13000:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13082:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13093:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13078:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13078:18:54"
                      },
                      {
                        "hexValue": "6974682074686973204944",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "13098:13:54",
                        "type": "",
                        "value": "ith this ID"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13071:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13071:41:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13071:41:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13121:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13133:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13144:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13129:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13129:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13121:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_5abac270f6dfe9fec0cffc69c1e2c0be20d5e956877e37120e8a684061fa199a__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12898:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "12912:4:54",
                "type": ""
              }
            ],
            "src": "12747:407:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13208:79:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "13218:17:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "13230:1:54"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "13233:1:54"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "13226:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13226:9:54"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nodeType": "YulIdentifier",
                      "src": "13218:4:54"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13259:22:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "13261:16:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13261:18:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13261:18:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "diff",
                        "nodeType": "YulIdentifier",
                        "src": "13250:4:54"
                      },
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "13256:1:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "13247:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13247:11:54"
                  },
                  "nodeType": "YulIf",
                  "src": "13244:37:54"
                }
              ]
            },
            "name": "checked_sub_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "13190:1:54",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "13193:1:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nodeType": "YulTypedName",
                "src": "13199:4:54",
                "type": ""
              }
            ],
            "src": "13159:128:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13324:95:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13341:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13348:3:54",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13353:10:54",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "13344:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13344:20:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13334:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13334:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13334:31:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13381:1:54",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13384:4:54",
                        "type": "",
                        "value": "0x31"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13374:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13374:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13374:15:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13405:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13408:4:54",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "13398:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13398:15:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13398:15:54"
                }
              ]
            },
            "name": "panic_error_0x31",
            "nodeType": "YulFunctionDefinition",
            "src": "13292:127:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13479:325:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "13489:22:54",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13503:1:54",
                        "type": "",
                        "value": "1"
                      },
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "13506:4:54"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nodeType": "YulIdentifier",
                      "src": "13499:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13499:12:54"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "13489:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13520:38:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "13550:4:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13556:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "13546:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13546:12:54"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nodeType": "YulTypedName",
                      "src": "13524:18:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13597:31:54",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "13599:27:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "13613:6:54"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13621:4:54",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "13609:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13609:17:54"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "13599:6:54"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "13577:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "13570:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13570:26:54"
                  },
                  "nodeType": "YulIf",
                  "src": "13567:61:54"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13687:111:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13708:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "13715:3:54",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "13720:10:54",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "13711:3:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "13711:20:54"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "13701:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13701:31:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13701:31:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13752:1:54",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13755:4:54",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "13745:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13745:15:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13745:15:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13780:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "13783:4:54",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "13773:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13773:15:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13773:15:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "13643:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "13666:6:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13674:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "13663:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13663:14:54"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "13640:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13640:38:54"
                  },
                  "nodeType": "YulIf",
                  "src": "13637:161:54"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "13459:4:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "13468:6:54",
                "type": ""
              }
            ],
            "src": "13424:380:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13864:65:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13881:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "name": "ptr",
                        "nodeType": "YulIdentifier",
                        "src": "13884:3:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13874:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13874:14:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13874:14:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13897:26:54",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13915:1:54",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13918:4:54",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "keccak256",
                      "nodeType": "YulIdentifier",
                      "src": "13905:9:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13905:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nodeType": "YulIdentifier",
                      "src": "13897:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "array_dataslot_bytes_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nodeType": "YulTypedName",
                "src": "13847:3:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "13855:4:54",
                "type": ""
              }
            ],
            "src": "13809:120:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13991:714:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14001:29:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "14024:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "sload",
                      "nodeType": "YulIdentifier",
                      "src": "14018:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14018:12:54"
                  },
                  "variables": [
                    {
                      "name": "slotValue",
                      "nodeType": "YulTypedName",
                      "src": "14005:9:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14039:50:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "slotValue",
                        "nodeType": "YulIdentifier",
                        "src": "14079:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "extract_byte_array_length",
                      "nodeType": "YulIdentifier",
                      "src": "14053:25:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14053:36:54"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "14043:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "14105:3:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "14110:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14098:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14098:19:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14098:19:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14126:14:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "14136:4:54",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "14130:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14149:11:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "14159:1:54",
                    "type": "",
                    "value": "1"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "14153:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "14210:139:54",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "pos",
                                      "nodeType": "YulIdentifier",
                                      "src": "14235:3:54"
                                    },
                                    {
                                      "name": "_1",
                                      "nodeType": "YulIdentifier",
                                      "src": "14240:2:54"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "14231:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "14231:12:54"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "slotValue",
                                      "nodeType": "YulIdentifier",
                                      "src": "14249:9:54"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14264:3:54",
                                          "type": "",
                                          "value": "255"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "not",
                                        "nodeType": "YulIdentifier",
                                        "src": "14260:3:54"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14260:8:54"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "and",
                                    "nodeType": "YulIdentifier",
                                    "src": "14245:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "14245:24:54"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nodeType": "YulIdentifier",
                                "src": "14224:6:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "14224:46:54"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "14224:46:54"
                          },
                          {
                            "nodeType": "YulAssignment",
                            "src": "14283:56:54",
                            "value": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "pos",
                                      "nodeType": "YulIdentifier",
                                      "src": "14298:3:54"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14307:1:54",
                                          "type": "",
                                          "value": "5"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14324:6:54"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "iszero",
                                                "nodeType": "YulIdentifier",
                                                "src": "14317:6:54"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "14317:14:54"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "14310:6:54"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14310:22:54"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "14303:3:54"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14303:30:54"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "14294:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "14294:40:54"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "14336:2:54"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "14290:3:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "14290:49:54"
                            },
                            "variableNames": [
                              {
                                "name": "ret",
                                "nodeType": "YulIdentifier",
                                "src": "14283:3:54"
                              }
                            ]
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "14203:146:54",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14208:1:54",
                        "type": "",
                        "value": "0"
                      }
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "14365:334:54",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "14386:1:54",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "14389:5:54"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nodeType": "YulIdentifier",
                                "src": "14379:6:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "14379:16:54"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "14379:16:54"
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "14408:31:54",
                            "value": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "14433:1:54",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "14436:2:54"
                                }
                              ],
                              "functionName": {
                                "name": "keccak256",
                                "nodeType": "YulIdentifier",
                                "src": "14423:9:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "14423:16:54"
                            },
                            "variables": [
                              {
                                "name": "dataPos",
                                "nodeType": "YulTypedName",
                                "src": "14412:7:54",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "14452:10:54",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "14461:1:54",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nodeType": "YulTypedName",
                                "src": "14456:1:54",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "14529:120:54",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "14562:3:54"
                                              },
                                              {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "14567:1:54"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "14558:3:54"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "14558:11:54"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "14571:2:54"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "14554:3:54"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14554:20:54"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "dataPos",
                                            "nodeType": "YulIdentifier",
                                            "src": "14582:7:54"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "14576:5:54"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14576:14:54"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "14547:6:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14547:44:54"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "14547:44:54"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "14608:27:54",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dataPos",
                                        "nodeType": "YulIdentifier",
                                        "src": "14623:7:54"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "14632:2:54"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14619:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14619:16:54"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dataPos",
                                      "nodeType": "YulIdentifier",
                                      "src": "14608:7:54"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "14486:1:54"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "14489:6:54"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "14483:2:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "14483:13:54"
                            },
                            "nodeType": "YulForLoop",
                            "post": {
                              "nodeType": "YulBlock",
                              "src": "14497:19:54",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "14499:15:54",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "14508:1:54"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14511:2:54"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14504:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14504:10:54"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "14499:1:54"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nodeType": "YulBlock",
                              "src": "14479:3:54",
                              "statements": []
                            },
                            "src": "14475:174:54"
                          },
                          {
                            "nodeType": "YulAssignment",
                            "src": "14662:27:54",
                            "value": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "pos",
                                      "nodeType": "YulIdentifier",
                                      "src": "14677:3:54"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "14682:1:54"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "14673:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "14673:11:54"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "14686:2:54"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "14669:3:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "14669:20:54"
                            },
                            "variableNames": [
                              {
                                "name": "ret",
                                "nodeType": "YulIdentifier",
                                "src": "14662:3:54"
                              }
                            ]
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "14358:341:54",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14363:1:54",
                        "type": "",
                        "value": "1"
                      }
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "slotValue",
                        "nodeType": "YulIdentifier",
                        "src": "14180:9:54"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "14191:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "14176:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14176:18:54"
                  },
                  "nodeType": "YulSwitch",
                  "src": "14169:530:54"
                }
              ]
            },
            "name": "abi_encode_bytes_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "13968:5:54",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "13975:3:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "13983:3:54",
                "type": ""
              }
            ],
            "src": "13934:771:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14942:395:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14959:9:54"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "14970:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14952:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14952:25:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14952:25:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14997:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15008:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14993:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14993:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15013:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14986:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14986:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14986:31:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15026:67:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "15065:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15077:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15088:3:54",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15073:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15073:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes_storage",
                      "nodeType": "YulIdentifier",
                      "src": "15040:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15040:53:54"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "15030:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15113:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15124:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15109:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15109:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "15133:6:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15141:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "15129:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15129:22:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15102:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15102:50:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15102:50:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15161:54:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "15200:6:54"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "15208:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes_storage",
                      "nodeType": "YulIdentifier",
                      "src": "15175:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15175:40:54"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nodeType": "YulTypedName",
                      "src": "15165:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15235:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15246:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15231:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15231:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_2",
                            "nodeType": "YulIdentifier",
                            "src": "15255:6:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15263:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "15251:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15251:22:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15224:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15224:50:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15224:50:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15283:48:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "15316:6:54"
                      },
                      {
                        "name": "tail_2",
                        "nodeType": "YulIdentifier",
                        "src": "15324:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes_storage",
                      "nodeType": "YulIdentifier",
                      "src": "15291:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15291:40:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "15283:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256_t_bytes_storage_t_bytes_storage_t_string_storage__to_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "14887:9:54",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "14898:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "14906:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "14914:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "14922:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "14933:4:54",
                "type": ""
              }
            ],
            "src": "14710:627:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15516:223:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15533:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15544:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15526:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15526:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15526:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15567:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15578:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15563:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15563:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15583:2:54",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15556:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15556:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15556:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15606:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15617:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15602:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15602:18:54"
                      },
                      {
                        "hexValue": "4e6f6e4578697374696e673a204b65792069736e277420726567697374657265",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "15622:34:54",
                        "type": "",
                        "value": "NonExisting: Key isn't registere"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15595:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15595:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15595:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15677:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15688:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15673:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15673:18:54"
                      },
                      {
                        "hexValue": "64",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "15693:3:54",
                        "type": "",
                        "value": "d"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15666:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15666:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15666:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15706:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15718:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15729:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "15714:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15714:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "15706:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_ecf72bc49d7f73c31e2e6c0aa61a9da361706713b0b2d9f242245b62877b78d2__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15493:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "15507:4:54",
                "type": ""
              }
            ],
            "src": "15342:397:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15918:232:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15935:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15946:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15928:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15928:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15928:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15969:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15980:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15965:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15965:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15985:2:54",
                        "type": "",
                        "value": "42"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15958:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15958:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15958:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16008:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16019:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16004:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16004:18:54"
                      },
                      {
                        "hexValue": "4e6f6e4578697374696e673a204b657920646f65736e27742068617665207375",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "16024:34:54",
                        "type": "",
                        "value": "NonExisting: Key doesn't have su"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15997:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15997:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15997:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16079:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16090:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16075:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16075:18:54"
                      },
                      {
                        "hexValue": "636820707572706f7365",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "16095:12:54",
                        "type": "",
                        "value": "ch purpose"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16068:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16068:40:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16068:40:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16117:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16129:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16140:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "16125:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16125:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "16117:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_c5c6d7bd64c120db0a0dc884afccd0850100d55ba7968801315e930cfbbcdba6__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15895:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "15909:4:54",
                "type": ""
              }
            ],
            "src": "15744:406:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16240:235:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "16250:61:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "16303:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_bytes",
                          "nodeType": "YulIdentifier",
                          "src": "16275:27:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16275:35:54"
                      }
                    ],
                    "functionName": {
                      "name": "allocate_memory",
                      "nodeType": "YulIdentifier",
                      "src": "16259:15:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16259:52:54"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "16250:5:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "16327:5:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "16334:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16320:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16320:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16320:21:54"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "16379:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "16388:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "16391:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "16381:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16381:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "16381:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "16360:3:54"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "16365:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16356:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16356:16:54"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "16374:3:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "16353:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16353:25:54"
                  },
                  "nodeType": "YulIf",
                  "src": "16350:45:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "16439:3:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "array",
                            "nodeType": "YulIdentifier",
                            "src": "16448:5:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16455:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16444:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16444:16:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "16462:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory_with_cleanup",
                      "nodeType": "YulIdentifier",
                      "src": "16404:34:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16404:65:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16404:65:54"
                }
              ]
            },
            "name": "abi_decode_available_length_bytes_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "16209:3:54",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "16214:6:54",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "16222:3:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "16230:5:54",
                "type": ""
              }
            ],
            "src": "16155:320:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16543:172:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "16592:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "16601:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "16604:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "16594:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16594:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "16594:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "16571:6:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16579:4:54",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "16567:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "16567:17:54"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "16586:3:54"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "16563:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16563:27:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "16556:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16556:35:54"
                  },
                  "nodeType": "YulIf",
                  "src": "16553:55:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16617:92:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "16675:6:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16683:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16671:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16671:17:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "16696:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "16690:5:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16690:13:54"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "16705:3:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_available_length_bytes_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "16626:44:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16626:83:54"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "16617:5:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_bytes_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "16517:6:54",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "16525:3:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "16533:5:54",
                "type": ""
              }
            ],
            "src": "16480:235:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16914:942:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "16961:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "16970:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "16973:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "16963:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16963:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "16963:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "16935:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16944:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "16931:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16931:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16956:3:54",
                        "type": "",
                        "value": "192"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "16927:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16927:33:54"
                  },
                  "nodeType": "YulIf",
                  "src": "16924:53:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16986:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17002:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "16996:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16996:16:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "16986:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17021:35:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17041:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17052:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17037:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17037:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "17031:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17031:25:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "17021:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17065:38:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17088:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17099:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17084:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17084:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "17078:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17078:25:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "17069:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "17137:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "17112:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17112:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17112:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17152:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "17162:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "17152:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17176:39:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17200:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17211:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17196:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17196:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "17190:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17190:25:54"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "17180:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17224:28:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17242:2:54",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17246:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "17238:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17238:10:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17250:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "17234:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17234:18:54"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "17228:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "17279:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17288:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17291:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "17281:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17281:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "17281:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "17267:6:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "17275:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "17264:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17264:14:54"
                  },
                  "nodeType": "YulIf",
                  "src": "17261:34:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17304:70:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17346:9:54"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "17357:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17342:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17342:22:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "17366:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "17314:27:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17314:60:54"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "17304:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17383:42:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17409:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17420:3:54",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17405:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17405:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "17399:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17399:26:54"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "17387:8:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "17454:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17463:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17466:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "17456:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17456:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "17456:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "17440:8:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "17450:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "17437:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17437:16:54"
                  },
                  "nodeType": "YulIf",
                  "src": "17434:36:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17479:72:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17521:9:54"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "17532:8:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17517:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17517:24:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "17543:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "17489:27:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17489:62:54"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "17479:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17560:42:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17586:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17597:3:54",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17582:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17582:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "17576:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17576:26:54"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "17564:8:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "17631:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17640:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17643:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "17633:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17633:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "17633:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "17617:8:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "17627:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "17614:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17614:16:54"
                  },
                  "nodeType": "YulIf",
                  "src": "17611:36:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17656:34:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17670:9:54"
                      },
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "17681:8:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17666:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17666:24:54"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "17660:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "17738:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17747:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17750:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "17740:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17740:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "17740:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "17717:2:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17721:4:54",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "17713:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "17713:13:54"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "17728:7:54"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "17709:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17709:27:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "17702:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17702:35:54"
                  },
                  "nodeType": "YulIf",
                  "src": "17699:55:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17763:87:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "17822:2:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17826:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17818:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17818:11:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "17837:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "17831:5:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17831:9:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "17842:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_available_length_bytes_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "17773:44:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17773:77:54"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "17763: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": "16840:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "16851:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "16863:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "16871:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "16879:6:54",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "16887:6:54",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "16895:6:54",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "16903:6:54",
                "type": ""
              }
            ],
            "src": "16720:1136:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18035:181:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18052:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18063:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18045:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18045:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18045:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18086:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18097:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18082:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18082:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18102:2:54",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18075:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18075:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18075:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18125:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18136:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18121:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18121:18:54"
                      },
                      {
                        "hexValue": "53656e64657220646f6573206e6f74206861766520616374696f6e206b6579",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "18141:33:54",
                        "type": "",
                        "value": "Sender does not have action key"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18114:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18114:61:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18114:61:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18184:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18196:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18207:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "18192:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18192:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18184:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_2239811702909a77ce5c35bc6905c72e29655cd69df6a5b32bf74fddbc156a6c__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18012:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18026:4:54",
                "type": ""
              }
            ],
            "src": "17861:355:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18371:160:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18388:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18399:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18381:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18381:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18381:21:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18411:60:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "18444:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18456:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18467:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18452:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18452:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes_storage",
                      "nodeType": "YulIdentifier",
                      "src": "18419:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18419:52:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18411:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18491:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18502:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18487:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18487:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "18511:6:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18519:4:54",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "18507:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18507:17:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18480:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18480:45:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18480:45:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes_storage_t_rational_0_by_1__to_t_bytes_memory_ptr_t_uint8__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18332:9:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "18343:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "18351:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18362:4:54",
                "type": ""
              }
            ],
            "src": "18221:310:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18652:106:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18669:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18680:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18662:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18662:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18662:21:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18692:60:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "18725:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18737:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18748:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18733:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18733:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes_storage",
                      "nodeType": "YulIdentifier",
                      "src": "18700:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18700:52:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18692:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes_storage__to_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18621:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "18632:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18643:4:54",
                "type": ""
              }
            ],
            "src": "18536:222:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18892:145:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "18902:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18914:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18925:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "18910:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18910:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18902:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18944:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "18959:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18975:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18980:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "18971:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18971:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "18984:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "18967:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "18967:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "18955:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18955:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18937:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18937:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18937:51:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19008:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19019:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19004:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19004:18:54"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "19024:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18997:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18997:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18997: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": "18853:9:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "18864:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "18872:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18883:4:54",
                "type": ""
              }
            ],
            "src": "18763:274:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19216:240:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19233:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19244:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19226:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19226:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19226:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19267:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19278:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19263:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19263:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19283:2:54",
                        "type": "",
                        "value": "50"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19256:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19256:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19256:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19306:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19317:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19302:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19302:18:54"
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a2053656e64657220646f6573206e6f7420686176",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "19322:34:54",
                        "type": "",
                        "value": "Permissions: Sender does not hav"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19295:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19295:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19295:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19377:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19388:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19373:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19373:18:54"
                      },
                      {
                        "hexValue": "6520636c61696d207369676e6572206b6579",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "19393:20:54",
                        "type": "",
                        "value": "e claim signer key"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19366:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19366:48:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19366:48:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "19423:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19435:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19446:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19431:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19431:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19423:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_7b35df432d579b46a32d099f957987ceecae8614c49c5a100b4430714240d197__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19193:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19207:4:54",
                "type": ""
              }
            ],
            "src": "19042:414:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19541:464:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "19574:425:54",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "19588:11:54",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "19598:1:54",
                          "type": "",
                          "value": "0"
                        },
                        "variables": [
                          {
                            "name": "_1",
                            "nodeType": "YulTypedName",
                            "src": "19592:2:54",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "19619:2:54"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "19623:5:54"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "19612:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "19612:17:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "19612:17:54"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "19642:31:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "19664:2:54"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "19668:4:54",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "keccak256",
                            "nodeType": "YulIdentifier",
                            "src": "19654:9:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "19654:19:54"
                        },
                        "variables": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "19646:4:54",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "19686:57:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nodeType": "YulIdentifier",
                              "src": "19709:4:54"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "19719:1:54",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "startIndex",
                                      "nodeType": "YulIdentifier",
                                      "src": "19726:10:54"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "19738:2:54",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "19722:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "19722:19:54"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nodeType": "YulIdentifier",
                                "src": "19715:3:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "19715:27:54"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "19705:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "19705:38:54"
                        },
                        "variables": [
                          {
                            "name": "deleteStart",
                            "nodeType": "YulTypedName",
                            "src": "19690:11:54",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19780:23:54",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19782:19:54",
                              "value": {
                                "name": "data",
                                "nodeType": "YulIdentifier",
                                "src": "19797:4:54"
                              },
                              "variableNames": [
                                {
                                  "name": "deleteStart",
                                  "nodeType": "YulIdentifier",
                                  "src": "19782:11:54"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "startIndex",
                              "nodeType": "YulIdentifier",
                              "src": "19762:10:54"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "19774:4:54",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "19759:2:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "19759:20:54"
                        },
                        "nodeType": "YulIf",
                        "src": "19756:47:54"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "19816:41:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "data",
                              "nodeType": "YulIdentifier",
                              "src": "19830:4:54"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "19840:1:54",
                                  "type": "",
                                  "value": "5"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "len",
                                      "nodeType": "YulIdentifier",
                                      "src": "19847:3:54"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "19852:2:54",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "19843:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "19843:12:54"
                                }
                              ],
                              "functionName": {
                                "name": "shr",
                                "nodeType": "YulIdentifier",
                                "src": "19836:3:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "19836:20:54"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "19826:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "19826:31:54"
                        },
                        "variables": [
                          {
                            "name": "_2",
                            "nodeType": "YulTypedName",
                            "src": "19820:2:54",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "19870:24:54",
                        "value": {
                          "name": "deleteStart",
                          "nodeType": "YulIdentifier",
                          "src": "19883:11:54"
                        },
                        "variables": [
                          {
                            "name": "start",
                            "nodeType": "YulTypedName",
                            "src": "19874:5:54",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19968:21:54",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "19977:5:54"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19984:2:54"
                                  }
                                ],
                                "functionName": {
                                  "name": "sstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19970:6:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19970:17:54"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19970:17:54"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "start",
                              "nodeType": "YulIdentifier",
                              "src": "19918:5:54"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "19925:2:54"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "19915:2:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "19915:13:54"
                        },
                        "nodeType": "YulForLoop",
                        "post": {
                          "nodeType": "YulBlock",
                          "src": "19929:26:54",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19931:22:54",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "19944:5:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19951:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19940:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19940:13:54"
                              },
                              "variableNames": [
                                {
                                  "name": "start",
                                  "nodeType": "YulIdentifier",
                                  "src": "19931:5:54"
                                }
                              ]
                            }
                          ]
                        },
                        "pre": {
                          "nodeType": "YulBlock",
                          "src": "19911:3:54",
                          "statements": []
                        },
                        "src": "19907:82:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "len",
                        "nodeType": "YulIdentifier",
                        "src": "19557:3:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19562:2:54",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "19554:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19554:11:54"
                  },
                  "nodeType": "YulIf",
                  "src": "19551:448:54"
                }
              ]
            },
            "name": "clean_up_bytearray_end_slots_bytes_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "19513:5:54",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "19520:3:54",
                "type": ""
              },
              {
                "name": "startIndex",
                "nodeType": "YulTypedName",
                "src": "19525:10:54",
                "type": ""
              }
            ],
            "src": "19461:544:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20095:81:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "20105:65:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "data",
                            "nodeType": "YulIdentifier",
                            "src": "20120:4:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20138:1:54",
                                        "type": "",
                                        "value": "3"
                                      },
                                      {
                                        "name": "len",
                                        "nodeType": "YulIdentifier",
                                        "src": "20141:3:54"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "20134:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20134:11:54"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20151:1:54",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "20147:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20147:6:54"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "20130:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20130:24:54"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "20126:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "20126:29:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "20116:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20116:40:54"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20162:1:54",
                            "type": "",
                            "value": "1"
                          },
                          {
                            "name": "len",
                            "nodeType": "YulIdentifier",
                            "src": "20165:3:54"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "20158:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20158:11:54"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "20113:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20113:57:54"
                  },
                  "variableNames": [
                    {
                      "name": "used",
                      "nodeType": "YulIdentifier",
                      "src": "20105:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "extract_used_part_and_set_length_of_short_byte_array",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "20072:4:54",
                "type": ""
              },
              {
                "name": "len",
                "nodeType": "YulTypedName",
                "src": "20078:3:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "used",
                "nodeType": "YulTypedName",
                "src": "20086:4:54",
                "type": ""
              }
            ],
            "src": "20010:166:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20275:1254:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "20285:24:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "20305:3:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "20299:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20299:10:54"
                  },
                  "variables": [
                    {
                      "name": "newLen",
                      "nodeType": "YulTypedName",
                      "src": "20289:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "20352:22:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "20354:16:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "20354:18:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "20354:18:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "20324:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "20340:2:54",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "20344:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "20336:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "20336:10:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20348:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "20332:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20332:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "20321:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20321:30:54"
                  },
                  "nodeType": "YulIf",
                  "src": "20318:56:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nodeType": "YulIdentifier",
                        "src": "20426:4:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "20464:4:54"
                              }
                            ],
                            "functionName": {
                              "name": "sload",
                              "nodeType": "YulIdentifier",
                              "src": "20458:5:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "20458:11:54"
                          }
                        ],
                        "functionName": {
                          "name": "extract_byte_array_length",
                          "nodeType": "YulIdentifier",
                          "src": "20432:25:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20432:38:54"
                      },
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "20472:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "clean_up_bytearray_end_slots_bytes_storage",
                      "nodeType": "YulIdentifier",
                      "src": "20383:42:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20383:96:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20383:96:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "20488:18:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "20505:1:54",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "srcOffset",
                      "nodeType": "YulTypedName",
                      "src": "20492:9:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "20515:23:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "20534:4:54",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "srcOffset_1",
                      "nodeType": "YulTypedName",
                      "src": "20519:11:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "20547:24:54",
                  "value": {
                    "name": "srcOffset_1",
                    "nodeType": "YulIdentifier",
                    "src": "20560:11:54"
                  },
                  "variableNames": [
                    {
                      "name": "srcOffset",
                      "nodeType": "YulIdentifier",
                      "src": "20547:9:54"
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "20617:655:54",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "20631:35:54",
                            "value": {
                              "arguments": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulIdentifier",
                                  "src": "20650:6:54"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "20662:2:54",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nodeType": "YulIdentifier",
                                    "src": "20658:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "20658:7:54"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "20646:3:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "20646:20:54"
                            },
                            "variables": [
                              {
                                "name": "loopEnd",
                                "nodeType": "YulTypedName",
                                "src": "20635:7:54",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "20679:48:54",
                            "value": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "20722:4:54"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_bytes_storage",
                                "nodeType": "YulIdentifier",
                                "src": "20693:28:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "20693:34:54"
                            },
                            "variables": [
                              {
                                "name": "dstPtr",
                                "nodeType": "YulTypedName",
                                "src": "20683:6:54",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "20740:10:54",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "20749:1:54",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nodeType": "YulTypedName",
                                "src": "20744:1:54",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "20827:172:54",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "20852:6:54"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "src",
                                                "nodeType": "YulIdentifier",
                                                "src": "20870:3:54"
                                              },
                                              {
                                                "name": "srcOffset",
                                                "nodeType": "YulIdentifier",
                                                "src": "20875:9:54"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "20866:3:54"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "20866:19:54"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "20860:5:54"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20860:26:54"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "20845:6:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20845:42:54"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "20845:42:54"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "20904:24:54",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "20918:6:54"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20926:1:54",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20914:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20914:14:54"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dstPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "20904:6:54"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "20945:40:54",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "srcOffset",
                                        "nodeType": "YulIdentifier",
                                        "src": "20962:9:54"
                                      },
                                      {
                                        "name": "srcOffset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20973:11:54"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20958:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20958:27:54"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "srcOffset",
                                      "nodeType": "YulIdentifier",
                                      "src": "20945:9:54"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "20774:1:54"
                                },
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "20777:7:54"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "20771:2:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "20771:14:54"
                            },
                            "nodeType": "YulForLoop",
                            "post": {
                              "nodeType": "YulBlock",
                              "src": "20786:28:54",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "20788:24:54",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "20797:1:54"
                                      },
                                      {
                                        "name": "srcOffset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20800:11:54"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20793:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20793:19:54"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "20788:1:54"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nodeType": "YulBlock",
                              "src": "20767:3:54",
                              "statements": []
                            },
                            "src": "20763:236:54"
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "21047:166:54",
                              "statements": [
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "21065:43:54",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "21092:3:54"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "21097:9:54"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "21088:3:54"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21088:19:54"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "21082:5:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21082:26:54"
                                  },
                                  "variables": [
                                    {
                                      "name": "lastValue",
                                      "nodeType": "YulTypedName",
                                      "src": "21069:9:54",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "21132:6:54"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "lastValue",
                                            "nodeType": "YulIdentifier",
                                            "src": "21144:9:54"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "21171:1:54",
                                                            "type": "",
                                                            "value": "3"
                                                          },
                                                          {
                                                            "name": "newLen",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "21174:6:54"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "shl",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "21167:3:54"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "21167:14:54"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "21183:3:54",
                                                        "type": "",
                                                        "value": "248"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "21163:3:54"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "21163:24:54"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "21193:1:54",
                                                        "type": "",
                                                        "value": "0"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "not",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "21189:3:54"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "21189:6:54"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "21159:3:54"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "21159:37:54"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "21155:3:54"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "21155:42:54"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "21140:3:54"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21140:58:54"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "21125:6:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21125:74:54"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "21125:74:54"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "21018:7:54"
                                },
                                {
                                  "name": "newLen",
                                  "nodeType": "YulIdentifier",
                                  "src": "21027:6:54"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "21015:2:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "21015:19:54"
                            },
                            "nodeType": "YulIf",
                            "src": "21012:201:54"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "21233:4:54"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21247:1:54",
                                          "type": "",
                                          "value": "1"
                                        },
                                        {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "21250:6:54"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "21243:3:54"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21243:14:54"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "21259:1:54",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "21239:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "21239:22:54"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "21226:6:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "21226:36:54"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "21226:36:54"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "20610:662:54",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20615:1:54",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "21289:234:54",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "21303:14:54",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "21316:1:54",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "21307:5:54",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "21352:67:54",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "21370:35:54",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "21389:3:54"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "21394:9:54"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "21385:3:54"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21385:19:54"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "21379:5:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21379:26:54"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "21370:5:54"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "name": "newLen",
                              "nodeType": "YulIdentifier",
                              "src": "21333:6:54"
                            },
                            "nodeType": "YulIf",
                            "src": "21330:89:54"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "21439:4:54"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "21498:5:54"
                                    },
                                    {
                                      "name": "newLen",
                                      "nodeType": "YulIdentifier",
                                      "src": "21505:6:54"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "extract_used_part_and_set_length_of_short_byte_array",
                                    "nodeType": "YulIdentifier",
                                    "src": "21445:52:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "21445:67:54"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "21432:6:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "21432:81:54"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "21432:81:54"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "21281:242:54",
                      "value": "default"
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "20590:6:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20598:2:54",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "20587:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20587:14:54"
                  },
                  "nodeType": "YulSwitch",
                  "src": "20580:943:54"
                }
              ]
            },
            "name": "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nodeType": "YulTypedName",
                "src": "20260:4:54",
                "type": ""
              },
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "20266:3:54",
                "type": ""
              }
            ],
            "src": "20181:1348:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21630:1254:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "21640:24:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "21660:3:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "21654:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21654:10:54"
                  },
                  "variables": [
                    {
                      "name": "newLen",
                      "nodeType": "YulTypedName",
                      "src": "21644:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "21707:22:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "21709:16:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "21709:18:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "21709:18:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "21679:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "21695:2:54",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "21699:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "21691:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "21691:10:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21703:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "21687:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21687:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "21676:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21676:30:54"
                  },
                  "nodeType": "YulIf",
                  "src": "21673:56:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nodeType": "YulIdentifier",
                        "src": "21781:4:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "slot",
                                "nodeType": "YulIdentifier",
                                "src": "21819:4:54"
                              }
                            ],
                            "functionName": {
                              "name": "sload",
                              "nodeType": "YulIdentifier",
                              "src": "21813:5:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "21813:11:54"
                          }
                        ],
                        "functionName": {
                          "name": "extract_byte_array_length",
                          "nodeType": "YulIdentifier",
                          "src": "21787:25:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21787:38:54"
                      },
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "21827:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "clean_up_bytearray_end_slots_bytes_storage",
                      "nodeType": "YulIdentifier",
                      "src": "21738:42:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21738:96:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21738:96:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "21843:18:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "21860:1:54",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "srcOffset",
                      "nodeType": "YulTypedName",
                      "src": "21847:9:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "21870:23:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "21889:4:54",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "srcOffset_1",
                      "nodeType": "YulTypedName",
                      "src": "21874:11:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21902:24:54",
                  "value": {
                    "name": "srcOffset_1",
                    "nodeType": "YulIdentifier",
                    "src": "21915:11:54"
                  },
                  "variableNames": [
                    {
                      "name": "srcOffset",
                      "nodeType": "YulIdentifier",
                      "src": "21902:9:54"
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "21972:655:54",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "21986:35:54",
                            "value": {
                              "arguments": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulIdentifier",
                                  "src": "22005:6:54"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "22017:2:54",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nodeType": "YulIdentifier",
                                    "src": "22013:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "22013:7:54"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "22001:3:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "22001:20:54"
                            },
                            "variables": [
                              {
                                "name": "loopEnd",
                                "nodeType": "YulTypedName",
                                "src": "21990:7:54",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "22034:48:54",
                            "value": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "22077:4:54"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_bytes_storage",
                                "nodeType": "YulIdentifier",
                                "src": "22048:28:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "22048:34:54"
                            },
                            "variables": [
                              {
                                "name": "dstPtr",
                                "nodeType": "YulTypedName",
                                "src": "22038:6:54",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "22095:10:54",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "22104:1:54",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nodeType": "YulTypedName",
                                "src": "22099:1:54",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "22182:172:54",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "22207:6:54"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "src",
                                                "nodeType": "YulIdentifier",
                                                "src": "22225:3:54"
                                              },
                                              {
                                                "name": "srcOffset",
                                                "nodeType": "YulIdentifier",
                                                "src": "22230:9:54"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "22221:3:54"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "22221:19:54"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "22215:5:54"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22215:26:54"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "22200:6:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22200:42:54"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "22200:42:54"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "22259:24:54",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "22273:6:54"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22281:1:54",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22269:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22269:14:54"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dstPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "22259:6:54"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "22300:40:54",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "srcOffset",
                                        "nodeType": "YulIdentifier",
                                        "src": "22317:9:54"
                                      },
                                      {
                                        "name": "srcOffset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "22328:11:54"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22313:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22313:27:54"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "srcOffset",
                                      "nodeType": "YulIdentifier",
                                      "src": "22300:9:54"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "22129:1:54"
                                },
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "22132:7:54"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "22126:2:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "22126:14:54"
                            },
                            "nodeType": "YulForLoop",
                            "post": {
                              "nodeType": "YulBlock",
                              "src": "22141:28:54",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "22143:24:54",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "22152:1:54"
                                      },
                                      {
                                        "name": "srcOffset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "22155:11:54"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22148:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22148:19:54"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "22143:1:54"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nodeType": "YulBlock",
                              "src": "22122:3:54",
                              "statements": []
                            },
                            "src": "22118:236:54"
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "22402:166:54",
                              "statements": [
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "22420:43:54",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "22447:3:54"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "22452:9:54"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22443:3:54"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22443:19:54"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "22437:5:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22437:26:54"
                                  },
                                  "variables": [
                                    {
                                      "name": "lastValue",
                                      "nodeType": "YulTypedName",
                                      "src": "22424:9:54",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dstPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "22487:6:54"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "lastValue",
                                            "nodeType": "YulIdentifier",
                                            "src": "22499:9:54"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "22526:1:54",
                                                            "type": "",
                                                            "value": "3"
                                                          },
                                                          {
                                                            "name": "newLen",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "22529:6:54"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "shl",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "22522:3:54"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "22522:14:54"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "22538:3:54",
                                                        "type": "",
                                                        "value": "248"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "and",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "22518:3:54"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "22518:24:54"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "22548:1:54",
                                                        "type": "",
                                                        "value": "0"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "not",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "22544:3:54"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "22544:6:54"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22514:3:54"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "22514:37:54"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "22510:3:54"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "22510:42:54"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "22495:3:54"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22495:58:54"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "22480:6:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22480:74:54"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "22480:74:54"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "loopEnd",
                                  "nodeType": "YulIdentifier",
                                  "src": "22373:7:54"
                                },
                                {
                                  "name": "newLen",
                                  "nodeType": "YulIdentifier",
                                  "src": "22382:6:54"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "22370:2:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "22370:19:54"
                            },
                            "nodeType": "YulIf",
                            "src": "22367:201:54"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "22588:4:54"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22602:1:54",
                                          "type": "",
                                          "value": "1"
                                        },
                                        {
                                          "name": "newLen",
                                          "nodeType": "YulIdentifier",
                                          "src": "22605:6:54"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "22598:3:54"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22598:14:54"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "22614:1:54",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "22594:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "22594:22:54"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "22581:6:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "22581:36:54"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "22581:36:54"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "21965:662:54",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21970:1:54",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "22644:234:54",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "22658:14:54",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "22671:1:54",
                              "type": "",
                              "value": "0"
                            },
                            "variables": [
                              {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "22662:5:54",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "22707:67:54",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "22725:35:54",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nodeType": "YulIdentifier",
                                            "src": "22744:3:54"
                                          },
                                          {
                                            "name": "srcOffset",
                                            "nodeType": "YulIdentifier",
                                            "src": "22749:9:54"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22740:3:54"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22740:19:54"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "22734:5:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22734:26:54"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "22725:5:54"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "name": "newLen",
                              "nodeType": "YulIdentifier",
                              "src": "22688:6:54"
                            },
                            "nodeType": "YulIf",
                            "src": "22685:89:54"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "slot",
                                  "nodeType": "YulIdentifier",
                                  "src": "22794:4:54"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "value",
                                      "nodeType": "YulIdentifier",
                                      "src": "22853:5:54"
                                    },
                                    {
                                      "name": "newLen",
                                      "nodeType": "YulIdentifier",
                                      "src": "22860:6:54"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "extract_used_part_and_set_length_of_short_byte_array",
                                    "nodeType": "YulIdentifier",
                                    "src": "22800:52:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "22800:67:54"
                                }
                              ],
                              "functionName": {
                                "name": "sstore",
                                "nodeType": "YulIdentifier",
                                "src": "22787:6:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "22787:81:54"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "22787:81:54"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "22636:242:54",
                      "value": "default"
                    }
                  ],
                  "expression": {
                    "arguments": [
                      {
                        "name": "newLen",
                        "nodeType": "YulIdentifier",
                        "src": "21945:6:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21953:2:54",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "21942:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21942:14:54"
                  },
                  "nodeType": "YulSwitch",
                  "src": "21935:943:54"
                }
              ]
            },
            "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nodeType": "YulTypedName",
                "src": "21615:4:54",
                "type": ""
              },
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "21621:3:54",
                "type": ""
              }
            ],
            "src": "21534:1350:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23130:374:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23147:9:54"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "23158:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23140:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23140:25:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23140:25:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23185:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23196:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23181:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23181:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23201:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23174:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23174:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23174:31:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "23214:60:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "23246:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23258:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23269:3:54",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23254:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23254:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "23228:17:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23228:46:54"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "23218:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23294:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23305:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23290:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23290:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "23314:6:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23322:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "23310:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23310:22:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23283:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23283:50:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23283:50:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "23342:47:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "23374:6:54"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "23382:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "23356:17:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23356:33:54"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nodeType": "YulTypedName",
                      "src": "23346:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23409:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23420:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23405:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23405:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_2",
                            "nodeType": "YulIdentifier",
                            "src": "23429:6:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23437:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "23425:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23425:22:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23398:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23398:50:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23398:50:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23457:41:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "23483:6:54"
                      },
                      {
                        "name": "tail_2",
                        "nodeType": "YulIdentifier",
                        "src": "23491:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "23465:17:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23465:33:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "23457:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_string_memory_ptr__to_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "23075:9:54",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "23086:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "23094:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "23102:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "23110:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "23121:4:54",
                "type": ""
              }
            ],
            "src": "22889:615:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23683:166:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23700:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23711:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23693:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23693:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23693:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23734:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23745:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23730:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23730:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23750:2:54",
                        "type": "",
                        "value": "16"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23723:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23723:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23723:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23773:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23784:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23769:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23769:18:54"
                      },
                      {
                        "hexValue": "416c7265616479206578656375746564",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "23789:18:54",
                        "type": "",
                        "value": "Already executed"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23762:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23762:46:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23762:46:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23817:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23829:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23840:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "23825:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23825:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "23817:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_58f47ea4e737df2d9cc4764db26c111751884cf0a1856aca9f4c66cadc811e1b__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "23660:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "23674:4:54",
                "type": ""
              }
            ],
            "src": "23509:340:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23973:99:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23990:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24001:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23983:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23983:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23983:21:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24013:53:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "24039:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24051:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24062:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24047:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24047:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "24021:17:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24021:45:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "24013:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "23942:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "23953:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "23964:4:54",
                "type": ""
              }
            ],
            "src": "23854:218:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24270:211:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24287:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "24302:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24318:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24323:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "24314:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24314:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "24327:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "24310:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "24310:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "24298:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24298:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24280:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24280:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24280:51:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24351:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24362:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24347:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24347:18:54"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "24367:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24340:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24340:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24340:34:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24394:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24405:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24390:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24390:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24410:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24383:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24383:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24383:30:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24422:53:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "24448:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24460:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24471:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24456:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24456:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_string",
                      "nodeType": "YulIdentifier",
                      "src": "24430:17:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24430:45:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "24422:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_IIdentity_$1743_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "24223:9:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "24234:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "24242:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "24250:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "24261:4:54",
                "type": ""
              }
            ],
            "src": "24077:404:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24706:161:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "24723:3:54"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24732:2:54",
                            "type": "",
                            "value": "33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24736:58:54",
                            "type": "",
                            "value": "0x0ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d051999"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "24728:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24728:67:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24716:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24716:80:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24716:80:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "24816:3:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24821:2:54",
                            "type": "",
                            "value": "28"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24812:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24812:12:54"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "24826:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24805:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24805:28:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24805:28:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24842:19:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "24853:3:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24858:2:54",
                        "type": "",
                        "value": "60"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "24849:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24849:12:54"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "24842:3:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "24682:3:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "24687:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "24698:3:54",
                "type": ""
              }
            ],
            "src": "24486:381:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24918:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "24928:38:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "x",
                            "nodeType": "YulIdentifier",
                            "src": "24943:1:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24946:4:54",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "24939:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24939:12:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "y",
                            "nodeType": "YulIdentifier",
                            "src": "24957:1:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24960:4:54",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "24953:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24953:12:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "24935:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24935:31:54"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nodeType": "YulIdentifier",
                      "src": "24928:3:54"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "24992:22:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "24994:16:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "24994:18:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "24994:18:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "sum",
                        "nodeType": "YulIdentifier",
                        "src": "24981:3:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24986:4:54",
                        "type": "",
                        "value": "0xff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "24978:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24978:13:54"
                  },
                  "nodeType": "YulIf",
                  "src": "24975:39:54"
                }
              ]
            },
            "name": "checked_add_t_uint8",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "24901:1:54",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "24904:1:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nodeType": "YulTypedName",
                "src": "24910:3:54",
                "type": ""
              }
            ],
            "src": "24872:148:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25206:217:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "25216:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "25228:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25239:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "25224:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25224:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "25216:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "25259:9:54"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "25270:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25252:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25252:25:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25252:25:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25297:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25308:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25293:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25293:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "25317:6:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25325:4:54",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "25313:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25313:17:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25286:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25286:45:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25286:45:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25351:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25362:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25347:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25347:18:54"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "25367:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25340:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25340:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25340:34:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25394:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25405:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25390:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25390:18:54"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "25410:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25383:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25383:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25383:34:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "25151:9:54",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "25162:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "25170:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "25178:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "25186:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "25197:4:54",
                "type": ""
              }
            ],
            "src": "25025:398:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25602:180:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "25619:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25630:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25612:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25612:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25612:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25653:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25664:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25649:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25649:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25669:2:54",
                        "type": "",
                        "value": "30"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25642:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25642:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25642:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25692:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25703:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25688:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25688:18:54"
                      },
                      {
                        "hexValue": "496e697469616c206b65792077617320616c72656164792073657475702e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "25708:32:54",
                        "type": "",
                        "value": "Initial key was already setup."
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25681:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25681:60:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25681:60:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "25750:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "25762:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25773:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "25758:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25758:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "25750:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_f97b6c8710e53ddda282a80ef5956d499e3405b5bb60ff3bc53f8e99e471fc0e__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "25579:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "25593:4:54",
                "type": ""
              }
            ],
            "src": "25428:354:54"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_array_uint256_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_uint256_t_bytes32__to_t_array$_t_uint256_$dyn_memory_ptr_t_uint256_t_bytes32__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        tail := abi_encode_array_uint256_dyn(value0, add(headStart, 96))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_decode_tuple_t_bytes32t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 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_bytes(length) -> size\n    {\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        size := add(and(add(length, 31), not(31)), 0x20)\n    }\n    function abi_decode_available_length_bytes(src, length, end) -> array\n    {\n        array := allocate_memory(array_allocation_size_bytes(length))\n        mstore(array, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(array, 0x20), src, length)\n        mstore(add(add(array, length), 0x20), 0)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        array := abi_decode_available_length_bytes(add(offset, 0x20), calldataload(offset), end)\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function 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_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_uint256t_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_decode_tuple_t_uint256t_uint256t_addresst_bytes_memory_ptrt_bytes_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let value := calldataload(add(headStart, 64))\n        validator_revert_address(value)\n        value2 := value\n        let offset := calldataload(add(headStart, 96))\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 128))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value4 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(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(add(_2, 32), calldataload(_2), dataEnd)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\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_contract$_IIdentity_$1743t_uint256t_bytes_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value3 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_bytes32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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_uint256_t_uint256_t_address_t_bytes_memory_ptr_t_bytes_memory_ptr_t_string_memory_ptr__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr_t_bytes_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 96), 192)\n        let tail_1 := abi_encode_string(value3, add(headStart, 192))\n        mstore(add(headStart, 128), sub(tail_1, headStart))\n        let tail_2 := abi_encode_string(value4, tail_1)\n        mstore(add(headStart, 160), sub(tail_2, headStart))\n        tail := abi_encode_string(value5, tail_2)\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_array_uint256_dyn(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_3c5bfa18ac85c8d1f4d8c63a7d33e2c24b63b20654ca46146bece560cc5642df__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 51)\n        mstore(add(headStart, 64), \"Interacting with the library con\")\n        mstore(add(headStart, 96), \"tract is forbidden.\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6f6b3247450dc94fc6574303b07d6b95320782b0ece8a8d742601c64b874e995__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 48)\n        mstore(add(headStart, 64), \"Permissions: Sender does not hav\")\n        mstore(add(headStart, 96), \"e management key\")\n        tail := add(headStart, 128)\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_encode_tuple_t_stringliteral_ced1bafc369b7e2b0ca5f6ed9c6c1eb753593d516580b4f3f74fc55e230be91e__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), \"Conflict: Key already has purpos\")\n        mstore(add(headStart, 96), \"e\")\n        tail := add(headStart, 128)\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_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_stringliteral_86f6f17a299db15bd5520d80701f10acbd3f85058227676cf3a946fcbf6dc7be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"Permissions: Sender does not hav\")\n        mstore(add(headStart, 96), \"e CLAIM key\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_5abac270f6dfe9fec0cffc69c1e2c0be20d5e956877e37120e8a684061fa199a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"NonExisting: There is no claim w\")\n        mstore(add(headStart, 96), \"ith this ID\")\n        tail := add(headStart, 128)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function panic_error_0x31()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x31)\n        revert(0, 0x24)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_bytes_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function abi_encode_bytes_storage(value, pos) -> ret\n    {\n        let slotValue := sload(value)\n        let length := extract_byte_array_length(slotValue)\n        mstore(pos, length)\n        let _1 := 0x20\n        let _2 := 1\n        switch and(slotValue, _2)\n        case 0 {\n            mstore(add(pos, _1), and(slotValue, not(255)))\n            ret := add(add(pos, shl(5, iszero(iszero(length)))), _1)\n        }\n        case 1 {\n            mstore(0, value)\n            let dataPos := keccak256(0, _1)\n            let i := 0\n            for { } lt(i, length) { i := add(i, _1) }\n            {\n                mstore(add(add(pos, i), _1), sload(dataPos))\n                dataPos := add(dataPos, _2)\n            }\n            ret := add(add(pos, i), _1)\n        }\n    }\n    function abi_encode_tuple_t_uint256_t_bytes_storage_t_bytes_storage_t_string_storage__to_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 128)\n        let tail_1 := abi_encode_bytes_storage(value1, add(headStart, 128))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        let tail_2 := abi_encode_bytes_storage(value2, tail_1)\n        mstore(add(headStart, 96), sub(tail_2, headStart))\n        tail := abi_encode_bytes_storage(value3, tail_2)\n    }\n    function abi_encode_tuple_t_stringliteral_ecf72bc49d7f73c31e2e6c0aa61a9da361706713b0b2d9f242245b62877b78d2__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), \"NonExisting: Key isn't registere\")\n        mstore(add(headStart, 96), \"d\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c5c6d7bd64c120db0a0dc884afccd0850100d55ba7968801315e930cfbbcdba6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"NonExisting: Key doesn't have su\")\n        mstore(add(headStart, 96), \"ch purpose\")\n        tail := add(headStart, 128)\n    }\n    function abi_decode_available_length_bytes_fromMemory(src, length, end) -> array\n    {\n        array := allocate_memory(array_allocation_size_bytes(length))\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_tuple_t_stringliteral_2239811702909a77ce5c35bc6905c72e29655cd69df6a5b32bf74fddbc156a6c__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), \"Sender does not have action key\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes_storage_t_rational_0_by_1__to_t_bytes_memory_ptr_t_uint8__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        tail := abi_encode_bytes_storage(value0, add(headStart, 64))\n        mstore(add(headStart, 32), and(value1, 0xff))\n    }\n    function abi_encode_tuple_t_bytes_storage__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes_storage(value0, add(headStart, 32))\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_encode_tuple_t_stringliteral_7b35df432d579b46a32d099f957987ceecae8614c49c5a100b4430714240d197__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"Permissions: Sender does not hav\")\n        mstore(add(headStart, 96), \"e claim signer key\")\n        tail := add(headStart, 128)\n    }\n    function clean_up_bytearray_end_slots_bytes_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_bytes_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_bytes_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_bytes_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_bytes_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_encode_tuple_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_string_memory_ptr__to_t_uint256_t_bytes_memory_ptr_t_bytes_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 128)\n        let tail_1 := abi_encode_string(value1, add(headStart, 128))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        let tail_2 := abi_encode_string(value2, tail_1)\n        mstore(add(headStart, 96), sub(tail_2, headStart))\n        tail := abi_encode_string(value3, tail_2)\n    }\n    function abi_encode_tuple_t_stringliteral_58f47ea4e737df2d9cc4764db26c111751884cf0a1856aca9f4c66cadc811e1b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Already executed\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_contract$_IIdentity_$1743_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, 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), 96)\n        tail := abi_encode_string(value2, add(headStart, 96))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        mstore(pos, shl(33, 0x0ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d051999))\n        mstore(add(pos, 28), value0)\n        end := add(pos, 60)\n    }\n    function checked_add_t_uint8(x, y) -> sum\n    {\n        sum := add(and(x, 0xff), and(y, 0xff))\n        if gt(sum, 0xff) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_stringliteral_f97b6c8710e53ddda282a80ef5956d499e3405b5bb60ff3bc53f8e99e471fc0e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"Initial key was already setup.\")\n        tail := add(headStart, 96)\n    }\n}",
      "id": 54,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "126:3387:0:-:0;;;490:32:1;;;-1:-1:-1;;528:31:1;490:32;528:31;;;230:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;635:11:1;:25;;-1:-1:-1;;635:25:1;;;;;;;;;281:20:0;;303:5;;675:11:1;;635:25;675:11;671:128;;;702:37;718:20;702:15;:37::i;:::-;671:128;;;770:11;:18;;-1:-1:-1;;770:18:1;784:4;770:18;;;671:128;566:239;;230:82:0;126:3387;;2112:451:1;2195:11;;;;2194:12;;:32;;-1:-1:-1;1695:4:1;1803:17;1838:7;2210:16;2186:75;;;;-1:-1:-1;;;2186:75:1;;511:2:54;2186:75:1;;;493:21:54;550:2;530:18;;;523:30;589:32;569:18;;;562:60;639:18;;2186:75:1;;;;;;;;2271:11;:18;;-1:-1:-1;;2299:18:1;;;;;2353:32;;;-1:-1:-1;;;;;832:32:54;;2353::1;;;814:51:54;-1:-1:-1;;787:18:54;2353:32:1;;;-1:-1:-1;;2353:32:1;;;;;;;;;2343:43;;2353:32;2343:43;;;;2396:10;;;;:4;:10;;;;;;:14;;;:21;;;2427:25;;;;;;;;;:10;;;;;;;;2343:43;-1:-1:-1;2427:25:1;;2353:32;2427:25;:::i;:::-;-1:-1:-1;2462:10:1;;;;2483:1;2462:10;;;;;;;;:18;;:22;;;2494:13;:16;;;;:27;;;;;;;;;;;;;;;2536:20;2483:1;;;;2467:4;;2536:20;;;2176:387;2112:451;:::o;126:3387:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;126:3387:0;;;-1:-1:-1;126:3387:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:290:54;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:54;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:54:o;668:203::-;126:3387:0;;;;;;",
  "deployedSourceMap": "126:3387:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3006:217:1;;;;;;;;;;-1:-1:-1;3006:217:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;5230:995;;;;;;;;;;-1:-1:-1;5230:995:1;;;;;:::i;:::-;;:::i;:::-;;;1533:14:54;;1526:22;1508:41;;1496:2;1481:18;5230:995:1;1368:187:54;1374:179:0;;;;;;;;;;-1:-1:-1;1374:179:0;;;;;:::i;:::-;;:::i;14073:1078:1:-;;;;;;;;;;-1:-1:-1;14073:1078:1;;;;;:::i;:::-;;:::i;8867:1462::-;;;;;;;;;;-1:-1:-1;8867:1462:1;;;;;:::i;:::-;;:::i;253:111:8:-;;;;;;;;;;-1:-1:-1;343:14:8;;;;;;;;;;;-1:-1:-1;;;343:14:8;;;;253:111;;;;343:14;253:111;:::i;601:581:0:-;;;;;;;;;;-1:-1:-1;601:581:0;;;;;:::i;:::-;;:::i;6613:1139:1:-;;;;;;;;;;-1:-1:-1;6613:1139:1;;;;;:::i;:::-;;:::i;17006:165::-;;;;;;;;;;-1:-1:-1;17006:165:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3980:164::-;;;;;;;;;;-1:-1:-1;3980:164:1;;;;;:::i;:::-;;:::i;11989:1650::-;;;;;;;;;;-1:-1:-1;11989:1650:1;;;;;:::i;:::-;;:::i;:::-;;;6979:25:54;;;6967:2;6952:18;11989:1650:1;6833:177:54;8165:636:1;;;;;;:::i;:::-;;:::i;1898:923:0:-;;;;;;;;;;-1:-1:-1;1898:923:0;;;;;:::i;:::-;;:::i;2827:684::-;;;;;;;;;;-1:-1:-1;2827:684:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1319:111:1:-;;;;;;;;;;-1:-1:-1;1319:111:1;;;;;:::i;:::-;;:::i;:::-;;16170:501;;;;;;;;;;-1:-1:-1;16170:501:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;10438:462::-;;;;;;;;;;-1:-1:-1;10438:462:1;;;;;:::i;:::-;;:::i;179:44:0:-;;;;;;;;;;-1:-1:-1;179:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3459:160:1;;;;;;;;;;-1:-1:-1;3459:160:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3006:217::-;3108:15;3160:10;;;:4;:10;;;;;;;;3181:18;;;;3201:14;;;;3152:64;;;;;;;;;;;;;;;;;3081:25;;3108:15;;;3160:10;;3152:64;3160:10;;3152:64;;3160:10;3152:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3006:217;;;;;:::o;5230:995::-;974:11;;5348:12;;974:11;;;;;;:19;;:11;:19;966:83;;;;-1:-1:-1;;;966:83:1;;;;;;;:::i;:::-;;;;;;;;;5380:10:::1;5402:4;5380:27;5376:170;;5431:51;5466:10;5455:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;5445:33;;;;;;5480:1;5431:13;:51::i;:::-;5423:112;;;;-1:-1:-1::0;;;5423:112:1::1;;;;;;;:::i;:::-;5560:10;::::0;;;:4:::1;:10;::::0;;;;:14:::1;;::::0;:22;;;5556:549:::1;;5603:20;5598:310;5647:10;::::0;;;:4:::1;:10;::::0;;;;:26;5629:44;::::1;5598:310;;;5712:15;5730:10:::0;;;:4:::1;:10;::::0;;;;:36;;5750:15;;5730:36;::::1;;;;;:::i;:::-;;;;;;;;;5712:54;;5800:8;5789:7;:19:::0;5785:109:::1;;5832:43;::::0;-1:-1:-1;;;5832:43:1;;11571:2:54;5832:43:1::1;::::0;::::1;11553:21:54::0;11610:2;11590:18;;;11583:30;11649:34;11629:18;;;11622:62;-1:-1:-1;;;11700:18:54;;;11693:31;11741:19;;5832:43:1::1;11369:397:54::0;5785:109:1::1;-1:-1:-1::0;5675:17:1;::::1;::::0;::::1;:::i;:::-;;;;5598:310;;;-1:-1:-1::0;5922:10:1::1;::::0;;;:4:::1;:10;::::0;;;;;;:34;;;;::::1;::::0;;;;;;;::::1;::::0;;;5556:549:::1;;;5987:10;::::0;;;:4:::1;:10;::::0;;;;;;;:14:::1;::::0;::::1;:21:::0;;;6022:32;;;;::::1;::::0;;;;;;:10;;;;;;;;:32:::1;::::0;5987:10;6022:32:::1;:::i;:::-;-1:-1:-1::0;6068:10:1::1;::::0;;;:4:::1;:10;::::0;;;;;;;:18:::1;:26:::0;;;5556:549:::1;6115:23;::::0;;;:13:::1;:23;::::0;;;;;;;:34;;::::1;::::0;::::1;::::0;;;;;;;;;;::::1;::::0;;;6165:31;6190:5;;6129:8;;6144:4;;-1:-1:-1;;;;;;;;;;;6165:31:1;::::1;-1:-1:-1::0;6214:4:1::1;1059:1;5230:995:::0;;;;;:::o;1374:179:0:-;1447:4;1467:13;1481:4;1467:19;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1463:61;;;-1:-1:-1;1509:4:0;;1374:179;-1:-1:-1;1374:179:0:o;1463:61::-;-1:-1:-1;1541:5:0;;1374:179;-1:-1:-1;1374:179:0:o;14073:1078:1:-;974:11;;14151:12;;974:11;;;;;;:19;;:11;:19;966:83;;;;-1:-1:-1;;;966:83:1;;;;;;;:::i;:::-;14179:10:::1;14201:4;14179:27;14175:165;;14230:51;14265:10;14254:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;14244:33;;;;;;14279:1;14230:13;:51::i;:::-;14222:107;;;::::0;-1:-1:-1;;;14222:107:1;;12537:2:54;14222:107:1::1;::::0;::::1;12519:21:54::0;12576:2;12556:18;;;12549:30;-1:-1:-1;;;;;;;;;;;12595:18:54;;;12588:62;-1:-1:-1;;;12666:18:54;;;12659:41;12717:19;;14222:107:1::1;12335:407:54::0;14222:107:1::1;14354:16;::::0;;;:6:::1;:16;::::0;;;;:22;:27;;14350:111:::1;;14397:53;::::0;-1:-1:-1;;;14397:53:1;;12949:2:54;14397:53:1::1;::::0;::::1;12931:21:54::0;12988:2;12968:18;;;12961:30;13027:34;13007:18;;;13000:62;-1:-1:-1;;;13078:18:54;;;13071:41;13129:19;;14397:53:1::1;12747:407:54::0;14350:111:1::1;14471:15;14500:107;14507:37;14521:16:::0;;;:6:::1;:16;::::0;;;;;;;:22;14507:37;;:13:::1;:37:::0;;;;;:49;;14560:8;;14507:37;14545:10;;14507:49;::::1;;;;;:::i;:::-;;;;;;;;;:61;14500:107;;14584:12:::0;::::1;::::0;::::1;:::i;:::-;;;;14500:107;;;14669:37;14683:16:::0;;;:6:::1;:16;::::0;;;;;;;:22;14669:37;;:13:::1;:37:::0;;;;;14707:44;;:48:::1;::::0;14754:1:::1;::::0;14707:48:::1;:::i;:::-;14669:87;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;14631:16;;;:6:::1;:16:::0;;;;;;:22;14617:37;;:13:::1;:37:::0;;;;;:49;;14655:10;;14617:49;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;:139:::0;;;;14780:16;;;:6:::1;:16:::0;;;;;;:22;14766:37;;:13:::1;:37:::0;;;;:43;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;-1:-1:-1;;14766:43:1;;;;;;;;;;;;14946:16;;;:6:::1;:16:::0;;;;;;;;;:23:::1;::::0;::::1;::::0;14873:22;;14766:43:::1;14909:23:::0;::::1;::::0;14825:263;;-1:-1:-1;;;;;14946:23:1;;::::1;::::0;14873:22;;14953:8;;14825:263:::1;::::0;::::1;::::0;14909:23;14983:26:::1;::::0;::::1;::::0;15023:21;;::::1;::::0;15058:20:::1;::::0;;::::1;::::0;14825:263:::1;:::i;:::-;;;;;;;;15106:16;::::0;;;:6:::1;:16;::::0;;;;15099:23;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;15099:23:1::1;::::0;;15106:16;15099:23:::1;;::::0;::::1;15106:16:::0;15099:23:::1;:::i;:::-;;;::::0;::::1;;;:::i;:::-;;;::::0;::::1;;;:::i;:::-;-1:-1:-1::0;15140:4:1::1;::::0;14073:1078;-1:-1:-1;;;;14073:1078:1:o;8867:1462::-;974:11;;8973:12;;974:11;;;;;;:19;;:11;:19;966:83;;;;-1:-1:-1;;;966:83:1;;;;;;;:::i;:::-;9009:10:::1;::::0;;;:4:::1;:10;::::0;;;;:14:::1;;::::0;:22;::::1;9001:68;;;::::0;-1:-1:-1;;;9001:68:1;;15544:2:54;9001:68:1::1;::::0;::::1;15526:21:54::0;15583:2;15563:18;;;15556:30;15622:34;15602:18;;;15595:62;-1:-1:-1;;;15673:18:54;;;15666:31;15714:19;;9001:68:1::1;15342:397:54::0;9001:68:1::1;9084:10;9106:4;9084:27;9080:199;;9135:51;9170:10;9159:22;;;;;;;;:::i;9135:51::-;9127:112;;;;-1:-1:-1::0;;;9127:112:1::1;;;;;;;:::i;:::-;9326:1;9297:10:::0;;;:4:::1;:10;::::0;;;;:26;9289:85:::1;;;;-1:-1:-1::0;;;9289:85:1::1;;;;;;;:::i;:::-;9385:17;9416:193;9423:10;::::0;;;:4:::1;:10;::::0;;;;:33;;9460:8;;9423:10;9443:12;;9423:33;::::1;;;;;:::i;:::-;;;;;;;;;:45;9416:193;;9484:14:::0;::::1;::::0;::::1;:::i;:::-;9533:10;::::0;;;:4:::1;:10;::::0;;;;:26;9484:14;;-1:-1:-1;9517:42:1;::::1;::::0;-1:-1:-1;9416:193:1::1;9513:86;9416:193;9642:10;::::0;;;:4:::1;:10;::::0;;;;:26;9627:41;::::1;9619:96;;;;-1:-1:-1::0;;;9619:96:1::1;;;;;;;:::i;:::-;9762:10;::::0;;;:4:::1;:10;::::0;;;;;;;9782:26;;9762:10;;9782:30:::1;::::0;::::1;:::i;:::-;9762:51;;;;;;;;:::i;:::-;;;;;;;;;9726:4;:10;9731:4;9726:10;;;;;;;;;;;:19;;9746:12;9726:33;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;:87:::0;;;;9823:10;;;:4:::1;:10:::0;;;;;;:25;;;::::1;;;;:::i;:::-;;;;;;;;;;;;;;;;;;9859:13;9887:85;9894:23;::::0;;;:13:::1;:23;::::0;;;;:33;;9931:4;;9894:23;9918:8;;9894:33;::::1;;;;;:::i;:::-;;;;;;;;;:41;9887:85;;9951:10:::0;::::1;::::0;::::1;:::i;:::-;;;;9887:85;;;10018:23;::::0;;;:13:::1;:23;::::0;;;;10042:30;;:34:::1;::::0;10075:1:::1;::::0;10042:34:::1;:::i;:::-;10018:59;;;;;;;;:::i;:::-;;;;;;;;;9982:13;:23;9996:8;9982:23;;;;;;;;;;;10006:8;9982:33;;;;;;;;:::i;:::-;;;;;;;;:95;;;;10087:13;:23;10101:8;10087:23;;;;;;;;;;;:29;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;-1:-1:-1;;10087:29:1;;;;;;;;;;;;10142:10;;;10087:29:::1;10142:10:::0;;;;;;;:18;;::::1;::::0;10175:26;;10142:18;;10175:31;10171:79:::1;;10229:10;::::0;;;:4:::1;:10;::::0;;;;;10222:17:::1;10229:10:::0;;10222:17:::1;:::i;:::-;-1:-1:-1::0;10222:17:1::1;;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;10171:79:::1;10292:7;10282:8;10276:4;10265:35;;;;;;;;;;10318:4;10311:11;;;;;1059:1;8867:1462:::0;;;;:::o;601:581:0:-;974:11:1;;697:4:0;;974:11:1;;;;;;:19;;:11;:19;966:83;;;;-1:-1:-1;;;966:83:1;;;;;;;:::i;:::-;713:23:0::1;::::0;;794:17:::1;::::0;854:10:::1;876:4;854:27;850:170;;905:51;940:10;929:22;;;;;;;;:::i;905:51::-;897:112;;;;-1:-1:-1::0;;;897:112:0::1;;;;;;;:::i;:::-;1080:38;::::0;-1:-1:-1;;;1080:38:0;;::::1;::::0;::::1;6979:25:54::0;;;-1:-1:-1;;;;;1080:28:0;::::1;::::0;::::1;::::0;6952:18:54;;1080:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;1080:38:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;1129:18:0::1;::::0;1030:88;;-1:-1:-1;1030:88:0;;-1:-1:-1;1030:88:0;;-1:-1:-1;1030:88:0;-1:-1:-1;1030:88:0;-1:-1:-1;1150:4:0::1;::::0;1129:13:::1;::::0;:18:::1;::::0;1030:88;;1129:18:::1;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;:25;;;::::1;;-1:-1:-1::0;;1129:25:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;1129:25:0;;-1:-1:-1;;;;;601:581:0;;;;:::o;6613:1139:1:-;974:11;;6713:12;;974:11;;;;;;:19;;:11;:19;966:83;;;;-1:-1:-1;;;966:83:1;;;;;;;:::i;:::-;6749:51:::1;6784:10;6773:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;6763:33;;;;;;6798:1;6749:13;:51::i;:::-;6741:95;;;::::0;-1:-1:-1;;;6741:95:1;;18063:2:54;6741:95:1::1;::::0;::::1;18045:21:54::0;18102:2;18082:18;;;18075:30;18141:33;18121:18;;;18114:61;18192:18;;6741:95:1::1;17861:355:54::0;6741:95:1::1;6861:3;6852:23;6866:8;6852:23;;;;1533:14:54::0;1526:22;1508:41;;1496:2;1481:18;;1368:187;6852:23:1::1;;;;;;;;6890:16:::0;::::1;;6902:4;6890:16:::0;6886:839:::1;;6922:15;::::0;;;:10:::1;:15;::::0;;;;;;;:24;;::::1;:31:::0;;-1:-1:-1;;6922:31:1::1;6949:4;6922:31:::0;;::::1;::::0;;;6981:18;;7012:21;;::::1;::::0;7036:35;;-1:-1:-1;;;;;6981:18:1;;::::1;::::0;7012:21;;7036:35:::1;::::0;7047:20:::1;::::0;;::::1;::::0;6922:15;7036:35:::1;;:::i;:::-;;::::0;;-1:-1:-1;;7036:35:1;;::::1;::::0;;;;;;;6981:91:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;6968:104:1;;-1:-1:-1;;7087:565:1;::::1;;;7118:15;::::0;;;:10:::1;:15;::::0;;;;;;;;:24;;::::1;:31:::0;;-1:-1:-1;;7118:31:1::1;;;::::0;;7145:4:::1;7268:21:::0;::::1;::::0;7228:18;;7173:176;;7268:21;;-1:-1:-1;;;;;7228:18:1::1;::::0;7129:3;;7173:176:::1;::::0;::::1;::::0;7311:20:::1;::::0;;::::1;::::0;7173:176:::1;:::i;:::-;;;;;;;;-1:-1:-1::0;7375:4:1::1;7368:11;;7087:565;7525:15;::::0;;;:10:::1;:15;::::0;;;;;;:21:::1;::::0;::::1;::::0;7485:18;;7423:183;;7525:21;;-1:-1:-1;;;;;7485:18:1::1;::::0;7536:3;;7423:183:::1;::::0;::::1;::::0;7568:20:::1;::::0;;::::1;::::0;7423:183:::1;:::i;:::-;;;;;;;;-1:-1:-1::0;7632:5:1::1;7625:12;;6886:839;-1:-1:-1::0;;7709:5:1::1;7682:15:::0;;;:10:::1;:15;::::0;;;;;;;:24:::1;:32:::0;;-1:-1:-1;;7682:32:1::1;::::0;;-1:-1:-1;;6613:1139:1:o;17006:165::-;17143:21;;;;:13;:21;;;;;;;;;17136:28;;;;;;;;;;;;;;;;;17095:25;;17136:28;;;17143:21;17136:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17006:165;;;:::o;3980:164::-;4114:23;;;;:13;:23;;;;;;;;;4107:30;;;;;;;;;;;;;;;;;4069:22;;4107:30;;;4114:23;4107:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3980:164;;;:::o;11989:1650::-;974:11;;12231:22;;974:11;;;;;;:19;;:11;:19;966:83;;;;-1:-1:-1;;;966:83:1;;;;;;;:::i;:::-;12297:27:::1;::::0;;-1:-1:-1;;;;;18955:32:54;;12297:27:1::1;::::0;;::::1;18937:51:54::0;;;;19004:18;;;18997:34;;;12297:27:1;;;;;;;;;18910:18:54;;;;12297:27:1;;;12287:38;;;::::1;::::0;12362:4:::1;12340:10;:27;12336:172;;12391:51;12426:10;12415:22;;;;;;;;:::i;12391:51::-;12383:114;;;::::0;-1:-1:-1;;;12383:114:1;;19244:2:54;12383:114:1::1;::::0;::::1;19226:21:54::0;19283:2;19263:18;;;19256:30;-1:-1:-1;;;;;;;;;;;19302:18:54;;;19295:62;-1:-1:-1;;;19373:18:54;;;19366:48;19431:19;;12383:114:1::1;19042:414:54::0;12383:114:1::1;12522:15;::::0;;;:6:::1;:15;::::0;;;;:22:::1;;::::0;-1:-1:-1;;;;;12522:33:1;;::::1;:22:::0;::::1;:33;12518:1090;;12571:21;::::0;;;:13:::1;:21;::::0;;;;;;;:35;;::::1;::::0;;::::1;::::0;;;;;;;;::::1;::::0;;;12620:15;;;:6:::1;:15:::0;;;;;;:30;;;12664:22;;::::1;:32:::0;;;12710:22:::1;::::0;::::1;:32:::0;;-1:-1:-1;;;;;;12710:32:1::1;-1:-1:-1::0;;;;;12710:32:1;::::1;;::::0;;12756:25:::1;;:38;12784:10:::0;12756:25;:38:::1;:::i;:::-;-1:-1:-1::0;12808:15:1::1;::::0;;;:6:::1;:15;::::0;;;;;;;:20:::1;:28;12831:5:::0;12808:20;:28:::1;:::i;:::-;-1:-1:-1::0;12850:15:1::1;::::0;;;:6:::1;:15;::::0;;;;:19:::1;;:26;12872:4:::0;12850:19;:26:::1;:::i;:::-;;12998:7;-1:-1:-1::0;;;;;12896:196:1::1;12949:6;12924:7;12896:196;12973:7;13023:10;13051:5;13074:4;12896:196;;;;;;;;;:::i;:::-;;;;;;;;12518:1090;;;13123:15;::::0;;;:6:::1;:15;::::0;;;;:30;;;13167:22:::1;::::0;::::1;:32:::0;;;13213:22:::1;::::0;::::1;:32:::0;;-1:-1:-1;;;;;;13213:32:1::1;-1:-1:-1::0;;;;;13213:32:1;::::1;;::::0;;13259:25:::1;;:38;13287:10:::0;13259:25;:38:::1;:::i;:::-;-1:-1:-1::0;13311:15:1::1;::::0;;;:6:::1;:15;::::0;;;;;;;:20:::1;:28;13334:5:::0;13311:20;:28:::1;:::i;:::-;-1:-1:-1::0;13353:15:1::1;::::0;;;:6:::1;:15;::::0;;;;:19:::1;;:26;13375:4:::0;13353:19;:26:::1;:::i;:::-;;13503:7;-1:-1:-1::0;;;;;13399:198:1::1;13454:6;13429:7;13399:198;13478:7;13528:10;13556:5;13579:4;13399:198;;;;;;;;;:::i;:::-;;;;;;;;12518:1090;13625:7:::0;11989:1650;-1:-1:-1;;;;;;;11989:1650:1:o;8165:636::-;974:11;;8298:19;;974:11;;;;;;:19;;:11;:19;966:83;;;;-1:-1:-1;;;966:83:1;;;;;;;:::i;:::-;8342:26:::1;8353:14:::0;;8342:26;;:10:::1;:26;::::0;;;;;;;:35:::1;::::0;::::1;::::0;::::1;;;8341:36;8333:65;;;::::0;-1:-1:-1;;;8333:65:1;;23711:2:54;8333:65:1::1;::::0;::::1;23693:21:54::0;23750:2;23730:18;;;23723:30;-1:-1:-1;;;23769:18:54;;;23762:46;23825:18;;8333:65:1::1;23509:340:54::0;8333:65:1::1;8408:26;8419:14:::0;;8408:26;;:10:::1;:26;::::0;;;;;:35;;-1:-1:-1;;;;;;8408:35:1::1;-1:-1:-1::0;;;;;8408:35:1;::::1;;::::0;;8464:14;;8453:26;;;;;-1:-1:-1;8453:32:1::1;:41:::0;;;8515:14;;8504:26;;;;:31:::1;;:39;8538:5:::0;8504:31;:39:::1;:::i;:::-;;8599:6;8594:3;-1:-1:-1::0;;;;;8559:54:1::1;8578:14;;8559:54;8607:5;8559:54;;;;;;:::i;:::-;;;;;;;;8628:51;8663:10;8652:22;;;;;;;;:::i;8628:51::-;8624:111;;;8695:29;8703:14;;8719:4;8695:7;:29::i;:::-;;8624:111;8745:14;:16:::0;;;:14;:16:::1;::::0;::::1;:::i;:::-;;;;;;8793:1;8778:14;;:16;;;;:::i;:::-;8771:23:::0;8165:636;-1:-1:-1;;;;8165:636:1:o;1898:923:0:-;2028:15;2059:16;2099:9;2110:10;2122:4;2088:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2078:50;;;;;;2059:69;;2229:20;2315:8;2262:62;;;;;;;-1:-1:-1;;;24716:80:54;;24821:2;24812:12;;24805:28;;;;24858:2;24849:12;;24486:381;2262:62:0;;;;;;;;;;;;;2252:73;;;;;;2229:96;;2378:17;2398:38;2418:3;2423:12;2398:19;:38::i;:::-;2378:58;;2489:18;2531:9;2520:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;2510:32;;;;;;2489:53;;2692:28;2706:10;2718:1;2692:13;:28::i;:::-;:62;;;;;2725:19;2740:3;2725:14;:19::i;:::-;:28;2692:62;2688:104;;;2777:4;2770:11;;;;;;;;2688:104;-1:-1:-1;2809:5:0;;1898:923;-1:-1:-1;;;;;;;;1898:923:0:o;2827:684::-;2946:12;2974:10;2994;3014:8;3075:3;:10;3089:2;3075:16;3071:64;;3122:1;3107:17;;;;;;;3071:64;-1:-1:-1;;;3245:2:0;3236:12;;3230:19;3283:2;3274:12;;3268:19;3329:2;3320:12;;3314:19;3311:1;3306:28;3363:2;3358:7;;3354:46;;;3381:8;3387:2;3381:8;;:::i;:::-;;;3354:46;3437:31;;;3410:24;3437:31;;;;;;;;;25252:25:54;;;25325:4;25313:17;;25293:18;;;25286:45;;;;25347:18;;;25340:34;;;25390:18;;;25383:34;;;3437:31:0;;25224:19:54;;3437:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3437:31:0;;-1:-1:-1;;3437:31:0;;;2827:684;-1:-1:-1;;;;;;;;2827:684:0:o;1319:111:1:-;1386:37;1402:20;1386:15;:37::i;:::-;1319:111;:::o;16170:501::-;16260:13;16449:16;;;:6;:16;;;;;;;:22;;16485:23;;;;16522;;;;16559:26;;;16428:236;;16260:13;;;;16331:22;;;;;;16449;;16485:23;;-1:-1:-1;;;;;16522:23:1;;;;16559:26;;16599:21;;;;16634:20;;;;;16559:26;;16428:236;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16170:501;;;;;;;:::o;10438:462::-;10538:11;10582:10;;;:4;:10;;;;;;;;10565:27;;;;;;;;;;;;;;;;;;;;;10538:11;;10565:27;;;;10582:10;;10565:27;;;10582:10;10565:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10565:27:1;;;-1:-1:-1;;10565:27:1;;;;;;;;;;;;;;;;;;10606:7;;;10565:27;;-1:-1:-1;;10606:12:1;10602:30;;10627:5;10620:12;;;;;10602:30;10648:20;10643:228;10692:12;;:19;10674:37;;10643:228;;;10746:15;10764:3;:12;;;10777:15;10764:29;;;;;;;;:::i;:::-;;;;;;;10746:47;;10812:7;10823:1;10812:12;:35;;;;10839:8;10828:7;:19;10812:35;10808:52;;;10856:4;10849:11;;;;;;;10808:52;-1:-1:-1;10713:17:1;;;;:::i;:::-;;;;10643:228;;;-1:-1:-1;10888:5:1;;10438:462;-1:-1:-1;;;;10438:462:1:o;3459:160::-;3592:10;;;;:4;:10;;;;;;;;;3584:28;;;;;;;;;;;;;;;;;3542:26;;3584:28;;;3592:10;3584:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3459:160;;;:::o;2112:451::-;2195:11;;;;2194:12;;:32;;-1:-1:-1;1695:4:1;1803:17;1838:7;2210:16;2186:75;;;;-1:-1:-1;;;2186:75:1;;25630:2:54;2186:75:1;;;25612:21:54;25669:2;25649:18;;;25642:30;25708:32;25688:18;;;25681:60;25758:18;;2186:75:1;25428:354:54;2186:75:1;2271:11;:18;;-1:-1:-1;;2299:18:1;;;;;2353:32;;-1:-1:-1;;2353:32:1;;2364:20;;2353:32;;;:::i;:::-;;;;-1:-1:-1;;2353:32:1;;;;;;;;;2343:43;;2353:32;2343:43;;;;2396:10;;;;:4;:10;;;;;;:14;;;:21;;;2427:25;;;;;;;;;:10;;;;;;;;2343:43;-1:-1:-1;2427:25:1;;2353:32;2427:25;:::i;:::-;-1:-1:-1;2462:10:1;;;;2483:1;2462:10;;;;;;;;:18;;:22;;;2494:13;:16;;;;:27;;;;;;;;;;;;;;;2536:20;2483:1;;;;2467:4;;-1:-1:-1;;;;;;;;;;;2536:20:1;;2176:387;2112:451;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:180:54;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:54;;14:180;-1:-1:-1;14:180:54:o;199:435::-;252:3;290:5;284:12;317:6;312:3;305:19;343:4;372:2;367:3;363:12;356:19;;409:2;402:5;398:14;430:1;440:169;454:6;451:1;448:13;440:169;;;515:13;;503:26;;549:12;;;;584:15;;;;476:1;469:9;440:169;;;-1:-1:-1;625:3:54;;199:435;-1:-1:-1;;;;;199:435:54:o;639:403::-;874:2;863:9;856:21;837:4;894:56;946:2;935:9;931:18;923:6;894:56;:::i;:::-;981:2;966:18;;959:34;;;;-1:-1:-1;1024:2:54;1009:18;1002:34;886:64;639:403;-1:-1:-1;639:403:54:o;1047:316::-;1124:6;1132;1140;1193:2;1181:9;1172:7;1168:23;1164:32;1161:52;;;1209:1;1206;1199:12;1161:52;-1:-1:-1;;1232:23:54;;;1302:2;1287:18;;1274:32;;-1:-1:-1;1353:2:54;1338:18;;;1325:32;;1047:316;-1:-1:-1;1047:316:54:o;1560:127::-;1621:10;1616:3;1612:20;1609:1;1602:31;1652:4;1649:1;1642:15;1676:4;1673:1;1666:15;1692:275;1763:2;1757:9;1828:2;1809:13;;-1:-1:-1;;1805:27:54;1793:40;;-1:-1:-1;;;;;1848:34:54;;1884:22;;;1845:62;1842:88;;;1910:18;;:::i;:::-;1946:2;1939:22;1692:275;;-1:-1:-1;1692:275:54:o;1972:186::-;2020:4;-1:-1:-1;;;;;2042:30:54;;2039:56;;;2075:18;;:::i;:::-;-1:-1:-1;2141:2:54;2120:15;-1:-1:-1;;2116:29:54;2147:4;2112:40;;1972:186::o;2163:336::-;2227:5;2256:52;2272:35;2300:6;2272:35;:::i;:::-;2256:52;:::i;:::-;2247:61;;2331:6;2324:5;2317:21;2371:3;2362:6;2357:3;2353:16;2350:25;2347:45;;;2388:1;2385;2378:12;2347:45;2437:6;2432:3;2425:4;2418:5;2414:16;2401:43;2491:1;2484:4;2475:6;2468:5;2464:18;2460:29;2453:40;2163:336;;;;;:::o;2504:220::-;2546:5;2599:3;2592:4;2584:6;2580:17;2576:27;2566:55;;2617:1;2614;2607:12;2566:55;2639:79;2714:3;2705:6;2692:20;2685:4;2677:6;2673:17;2639:79;:::i;2729:320::-;2797:6;2850:2;2838:9;2829:7;2825:23;2821:32;2818:52;;;2866:1;2863;2856:12;2818:52;2893:23;;-1:-1:-1;;;;;2928:30:54;;2925:50;;;2971:1;2968;2961:12;2925:50;2994:49;3035:7;3026:6;3015:9;3011:22;2994:49;:::i;3054:248::-;3122:6;3130;3183:2;3171:9;3162:7;3158:23;3154:32;3151:52;;;3199:1;3196;3189:12;3151:52;-1:-1:-1;;3222:23:54;;;3292:2;3277:18;;;3264:32;;-1:-1:-1;3054:248:54:o;3307:250::-;3392:1;3402:113;3416:6;3413:1;3410:13;3402:113;;;3492:11;;;3486:18;3473:11;;;3466:39;3438:2;3431:10;3402:113;;;-1:-1:-1;;3549:1:54;3531:16;;3524:27;3307:250::o;3562:271::-;3604:3;3642:5;3636:12;3669:6;3664:3;3657:19;3685:76;3754:6;3747:4;3742:3;3738:14;3731:4;3724:5;3720:16;3685:76;:::i;:::-;3815:2;3794:15;-1:-1:-1;;3790:29:54;3781:39;;;;3822:4;3777:50;;3562:271;-1:-1:-1;;3562:271:54:o;3838:220::-;3987:2;3976:9;3969:21;3950:4;4007:45;4048:2;4037:9;4033:18;4025:6;4007:45;:::i;4063:131::-;-1:-1:-1;;;;;4138:31:54;;4128:42;;4118:70;;4184:1;4181;4174:12;4199:315;4267:6;4275;4328:2;4316:9;4307:7;4303:23;4299:32;4296:52;;;4344:1;4341;4334:12;4296:52;4380:9;4367:23;4357:33;;4440:2;4429:9;4425:18;4412:32;4453:31;4478:5;4453:31;:::i;:::-;4503:5;4493:15;;;4199:315;;;;;:::o;4519:341::-;4584:6;4592;4645:2;4633:9;4624:7;4620:23;4616:32;4613:52;;;4661:1;4658;4651:12;4613:52;4697:9;4684:23;4674:33;;4757:2;4746:9;4742:18;4729:32;4804:5;4797:13;4790:21;4783:5;4780:32;4770:60;;4826:1;4823;4816:12;5050:632;5221:2;5273:21;;;5343:13;;5246:18;;;5365:22;;;5192:4;;5221:2;5444:15;;;;5418:2;5403:18;;;5192:4;5487:169;5501:6;5498:1;5495:13;5487:169;;;5562:13;;5550:26;;5631:15;;;;5596:12;;;;5523:1;5516:9;5487:169;;;-1:-1:-1;5673:3:54;;5050:632;-1:-1:-1;;;;;;5050:632:54:o;5687:1141::-;5819:6;5827;5835;5843;5851;5859;5912:3;5900:9;5891:7;5887:23;5883:33;5880:53;;;5929:1;5926;5919:12;5880:53;5965:9;5952:23;5942:33;;6022:2;6011:9;6007:18;5994:32;5984:42;;6076:2;6065:9;6061:18;6048:32;6089:31;6114:5;6089:31;:::i;:::-;6139:5;-1:-1:-1;6195:2:54;6180:18;;6167:32;-1:-1:-1;;;;;6248:14:54;;;6245:34;;;6275:1;6272;6265:12;6245:34;6298:49;6339:7;6330:6;6319:9;6315:22;6298:49;:::i;:::-;6288:59;;6400:3;6389:9;6385:19;6372:33;6356:49;;6430:2;6420:8;6417:16;6414:36;;;6446:1;6443;6436:12;6414:36;6469:51;6512:7;6501:8;6490:9;6486:24;6469:51;:::i;:::-;6459:61;;6573:3;6562:9;6558:19;6545:33;6529:49;;6603:2;6593:8;6590:16;6587:36;;;6619:1;6616;6609:12;6587:36;-1:-1:-1;6642:24:54;;6697:4;6689:13;;6685:27;-1:-1:-1;6675:55:54;;6726:1;6723;6716:12;6675:55;6749:73;6814:7;6809:2;6796:16;6791:2;6787;6783:11;6749:73;:::i;:::-;6739:83;;;5687:1141;;;;;;;;:::o;7015:523::-;7101:6;7109;7117;7170:2;7158:9;7149:7;7145:23;7141:32;7138:52;;;7186:1;7183;7176:12;7138:52;7225:9;7212:23;7244:31;7269:5;7244:31;:::i;:::-;7294:5;-1:-1:-1;7346:2:54;7331:18;;7318:32;;-1:-1:-1;7401:2:54;7386:18;;7373:32;-1:-1:-1;;;;;7417:30:54;;7414:50;;;7460:1;7457;7450:12;7414:50;7483:49;7524:7;7515:6;7504:9;7500:22;7483:49;:::i;:::-;7473:59;;;7015:523;;;;;:::o;7725:761::-;7847:6;7855;7863;7871;7924:3;7912:9;7903:7;7899:23;7895:33;7892:53;;;7941:1;7938;7931:12;7892:53;7980:9;7967:23;7999:31;8024:5;7999:31;:::i;:::-;8049:5;-1:-1:-1;8101:2:54;8086:18;;8073:32;;-1:-1:-1;8156:2:54;8141:18;;8128:32;-1:-1:-1;;;;;8209:14:54;;;8206:34;;;8236:1;8233;8226:12;8206:34;8259:49;8300:7;8291:6;8280:9;8276:22;8259:49;:::i;:::-;8249:59;;8361:2;8350:9;8346:18;8333:32;8317:48;;8390:2;8380:8;8377:16;8374:36;;;8406:1;8403;8396:12;8374:36;;8429:51;8472:7;8461:8;8450:9;8446:24;8429:51;:::i;:::-;8419:61;;;7725:761;;;;;;;:::o;8491:388::-;8568:6;8576;8629:2;8617:9;8608:7;8604:23;8600:32;8597:52;;;8645:1;8642;8635:12;8597:52;8672:23;;-1:-1:-1;;;;;8707:30:54;;8704:50;;;8750:1;8747;8740:12;8704:50;8773:49;8814:7;8805:6;8794:9;8790:22;8773:49;:::i;:::-;8763:59;8869:2;8854:18;;;;8841:32;;-1:-1:-1;;;;8491:388:54:o;8884:203::-;-1:-1:-1;;;;;9048:32:54;;;;9030:51;;9018:2;9003:18;;8884:203::o;9092:247::-;9151:6;9204:2;9192:9;9183:7;9179:23;9175:32;9172:52;;;9220:1;9217;9210:12;9172:52;9259:9;9246:23;9278:31;9303:5;9278:31;:::i;9344:785::-;9669:6;9658:9;9651:25;9712:6;9707:2;9696:9;9692:18;9685:34;9784:1;9780;9775:3;9771:11;9767:19;9759:6;9755:32;9750:2;9739:9;9735:18;9728:60;9824:3;9819:2;9808:9;9804:18;9797:31;9632:4;9851:46;9892:3;9881:9;9877:19;9869:6;9851:46;:::i;:::-;9946:9;9938:6;9934:22;9928:3;9917:9;9913:19;9906:51;9980:33;10006:6;9998;9980:33;:::i;:::-;9966:47;;10062:9;10054:6;10050:22;10044:3;10033:9;10029:19;10022:51;10090:33;10116:6;10108;10090:33;:::i;:::-;10082:41;9344:785;-1:-1:-1;;;;;;;;;9344:785:54:o;10134:261::-;10313:2;10302:9;10295:21;10276:4;10333:56;10385:2;10374:9;10370:18;10362:6;10333:56;:::i;10400:415::-;10602:2;10584:21;;;10641:2;10621:18;;;10614:30;10680:34;10675:2;10660:18;;10653:62;-1:-1:-1;;;10746:2:54;10731:18;;10724:49;10805:3;10790:19;;10400:415::o;10820:412::-;11022:2;11004:21;;;11061:2;11041:18;;;11034:30;-1:-1:-1;;;;;;;;;;;11095:2:54;11080:18;;11073:62;-1:-1:-1;;;11166:2:54;11151:18;;11144:46;11222:3;11207:19;;10820:412::o;11237:127::-;11298:10;11293:3;11289:20;11286:1;11279:31;11329:4;11326:1;11319:15;11353:4;11350:1;11343:15;11771:127;11832:10;11827:3;11823:20;11820:1;11813:31;11863:4;11860:1;11853:15;11887:4;11884:1;11877:15;11903:135;11942:3;11963:17;;;11960:43;;11983:18;;:::i;:::-;-1:-1:-1;12030:1:54;12019:13;;11903:135::o;12043:287::-;12172:3;12210:6;12204:13;12226:66;12285:6;12280:3;12273:4;12265:6;12261:17;12226:66;:::i;:::-;12308:16;;;;;12043:287;-1:-1:-1;;12043:287:54:o;13159:128::-;13226:9;;;13247:11;;;13244:37;;;13261:18;;:::i;13292:127::-;13353:10;13348:3;13344:20;13341:1;13334:31;13384:4;13381:1;13374:15;13408:4;13405:1;13398:15;13424:380;13503:1;13499:12;;;;13546;;;13567:61;;13621:4;13613:6;13609:17;13599:27;;13567:61;13674:2;13666:6;13663:14;13643:18;13640:38;13637:161;;13720:10;13715:3;13711:20;13708:1;13701:31;13755:4;13752:1;13745:15;13783:4;13780:1;13773:15;13637:161;;13424:380;;;:::o;13934:771::-;13983:3;14024:5;14018:12;14053:36;14079:9;14053:36;:::i;:::-;14098:19;;;14136:4;14159:1;14176:18;;;14203:146;;;;14363:1;14358:341;;;;14169:530;;14203:146;-1:-1:-1;;14245:24:54;;14231:12;;;14224:46;14317:14;;14310:22;14307:1;14303:30;14294:40;;14290:49;;;-1:-1:-1;14203:146:54;;14358:341;14389:5;14386:1;14379:16;14436:2;14433:1;14423:16;14461:1;14475:174;14489:6;14486:1;14483:13;14475:174;;;14576:14;;14558:11;;;14554:20;;14547:44;14619:16;;;;14504:10;;14475:174;;;14673:11;;14669:20;;;-1:-1:-1;;14169:530:54;;;;;;13934:771;;;;:::o;14710:627::-;14970:6;14959:9;14952:25;15013:3;15008:2;14997:9;14993:18;14986:31;14933:4;15040:53;15088:3;15077:9;15073:19;15065:6;15040:53;:::i;:::-;15141:9;15133:6;15129:22;15124:2;15113:9;15109:18;15102:50;15175:40;15208:6;15200;15175:40;:::i;:::-;15161:54;;15263:9;15255:6;15251:22;15246:2;15235:9;15231:18;15224:50;15291:40;15324:6;15316;15291:40;:::i;15744:406::-;15946:2;15928:21;;;15985:2;15965:18;;;15958:30;16024:34;16019:2;16004:18;;15997:62;-1:-1:-1;;;16090:2:54;16075:18;;16068:40;16140:3;16125:19;;15744:406::o;16155:320::-;16230:5;16259:52;16275:35;16303:6;16275:35;:::i;16259:52::-;16250:61;;16334:6;16327:5;16320:21;16374:3;16365:6;16360:3;16356:16;16353:25;16350:45;;;16391:1;16388;16381:12;16350:45;16404:65;16462:6;16455:4;16448:5;16444:16;16439:3;16404:65;:::i;16480:235::-;16533:5;16586:3;16579:4;16571:6;16567:17;16563:27;16553:55;;16604:1;16601;16594:12;16553:55;16626:83;16705:3;16696:6;16690:13;16683:4;16675:6;16671:17;16626:83;:::i;16720:1136::-;16863:6;16871;16879;16887;16895;16903;16956:3;16944:9;16935:7;16931:23;16927:33;16924:53;;;16973:1;16970;16963:12;16924:53;17002:9;16996:16;16986:26;;17052:2;17041:9;17037:18;17031:25;17021:35;;17099:2;17088:9;17084:18;17078:25;17112:31;17137:5;17112:31;:::i;:::-;17211:2;17196:18;;17190:25;17162:5;;-1:-1:-1;;;;;;17264:14:54;;;17261:34;;;17291:1;17288;17281:12;17261:34;17314:60;17366:7;17357:6;17346:9;17342:22;17314:60;:::i;:::-;17304:70;;17420:3;17409:9;17405:19;17399:26;17383:42;;17450:2;17440:8;17437:16;17434:36;;;17466:1;17463;17456:12;17434:36;17489:62;17543:7;17532:8;17521:9;17517:24;17489:62;:::i;:::-;17479:72;;17597:3;17586:9;17582:19;17576:26;17560:42;;17627:2;17617:8;17614:16;17611:36;;;17643:1;17640;17633:12;17611:36;-1:-1:-1;17666:24:54;;17721:4;17713:13;;17709:27;-1:-1:-1;17699:55:54;;17750:1;17747;17740:12;17699:55;17773:77;17842:7;17837:2;17831:9;17826:2;17822;17818:11;17773:77;:::i;18221:310::-;18399:2;18388:9;18381:21;18362:4;18419:52;18467:2;18456:9;18452:18;18444:6;18419:52;:::i;:::-;18411:60;;18519:4;18511:6;18507:17;18502:2;18491:9;18487:18;18480:45;18221:310;;;;;:::o;18536:222::-;18680:2;18669:9;18662:21;18643:4;18700:52;18748:2;18737:9;18733:18;18725:6;18700:52;:::i;19461:544::-;19562:2;19557:3;19554:11;19551:448;;;19598:1;19623:5;19619:2;19612:17;19668:4;19664:2;19654:19;19738:2;19726:10;19722:19;19719:1;19715:27;19709:4;19705:38;19774:4;19762:10;19759:20;19756:47;;;-1:-1:-1;19797:4:54;19756:47;19852:2;19847:3;19843:12;19840:1;19836:20;19830:4;19826:31;19816:41;;19907:82;19925:2;19918:5;19915:13;19907:82;;;19970:17;;;19951:1;19940:13;19907:82;;;19911:3;;;19551:448;19461:544;;;:::o;20181:1348::-;20299:10;;-1:-1:-1;;;;;20321:30:54;;20318:56;;;20354:18;;:::i;:::-;20383:96;20472:6;20432:38;20464:4;20458:11;20432:38;:::i;:::-;20426:4;20383:96;:::i;:::-;20534:4;;20598:2;20587:14;;20615:1;20610:662;;;;21316:1;21333:6;21330:89;;;-1:-1:-1;21385:19:54;;;21379:26;21330:89;-1:-1:-1;;20138:1:54;20134:11;;;20130:24;20126:29;20116:40;20162:1;20158:11;;;20113:57;21432:81;;20580:943;;20610:662;13881:1;13874:14;;;13918:4;13905:18;;-1:-1:-1;;20646:20:54;;;20763:236;20777:7;20774:1;20771:14;20763:236;;;20866:19;;;20860:26;20845:42;;20958:27;;;;20926:1;20914:14;;;;20793:19;;20763:236;;;20767:3;21027:6;21018:7;21015:19;21012:201;;;21088:19;;;21082:26;-1:-1:-1;;21171:1:54;21167:14;;;21183:3;21163:24;21159:37;21155:42;21140:58;21125:74;;21012:201;-1:-1:-1;;;;;21259:1:54;21243:14;;;21239:22;21226:36;;-1:-1:-1;20181:1348:54:o;22889:615::-;23158:6;23147:9;23140:25;23201:3;23196:2;23185:9;23181:18;23174:31;23121:4;23228:46;23269:3;23258:9;23254:19;23246:6;23228:46;:::i;:::-;23322:9;23314:6;23310:22;23305:2;23294:9;23290:18;23283:50;23356:33;23382:6;23374;23356:33;:::i;:::-;23342:47;;23437:9;23429:6;23425:22;23420:2;23409:9;23405:18;23398:50;23465:33;23491:6;23483;23465:33;:::i;24077:404::-;24327:1;24323;24318:3;24314:11;24310:19;24302:6;24298:32;24287:9;24280:51;24367:6;24362:2;24351:9;24347:18;24340:34;24410:2;24405;24394:9;24390:18;24383:30;24261:4;24430:45;24471:2;24460:9;24456:18;24448:6;24430:45;:::i;:::-;24422:53;24077:404;-1:-1:-1;;;;;24077:404:54:o;24872:148::-;24960:4;24939:12;;;24953;;;24935:31;;24978:13;;24975:39;;;24994:18;;:::i",
  "source": "// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.0;\n\nimport \"./interface/IClaimIssuer.sol\";\nimport \"./Identity.sol\";\n\ncontract ClaimIssuer is IClaimIssuer, Identity {\n    mapping (bytes => bool) public revokedClaims;\n\n    constructor(address initialManagementKey) Identity(initialManagementKey, false) {}\n\n    /**\n     * @dev Revoke a claim previously issued, the claim is no longer considered as valid after revocation.\n     * @param _claimId the id of the claim\n     * @param _identity the address of the identity contract\n     * @return isRevoked true when the claim is revoked\n     */\n    function revokeClaim(bytes32 _claimId, address _identity) public override delegatedOnly returns(bool) {\n        uint256 foundClaimTopic;\n        uint256 scheme;\n        address issuer;\n        bytes memory  sig;\n        bytes  memory data;\n\n        if (msg.sender != address(this)) {\n            require(keyHasPurpose(keccak256(abi.encode(msg.sender)), 1), \"Permissions: Sender does not have management key\");\n        }\n\n        ( foundClaimTopic, scheme, issuer, sig, data, ) = Identity(_identity).getClaim(_claimId);\n\n        revokedClaims[sig] = true;\n        return true;\n    }\n\n    /**\n     * @dev Returns revocation status of a claim.\n     * @param _sig the signature of the claim\n     * @return isRevoked true if the claim is revoked and false otherwise\n     */\n    function isClaimRevoked(bytes memory _sig) public override view returns (bool) {\n        if (revokedClaims[_sig]) {\n            return true;\n        }\n\n        return false;\n    }\n\n    /**\n     * @dev Checks if a claim is valid.\n     * @param _identity the identity contract related to the claim\n     * @param claimTopic the claim topic of the claim\n     * @param sig the signature of the claim\n     * @param data the data field of the claim\n     * @return claimValid true if the claim is valid, false otherwise\n     */\n    function isClaimValid(IIdentity _identity, uint256 claimTopic, bytes memory sig, bytes memory data) public override view returns (bool claimValid)\n    {\n        bytes32 dataHash = keccak256(abi.encode(_identity, claimTopic, data));\n        // Use abi.encodePacked to concatenate the message prefix and the message to sign.\n        bytes32 prefixedHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", dataHash));\n\n        // Recover address of data signer\n        address recovered = getRecoveredAddress(sig, prefixedHash);\n\n        // Take hash of recovered address\n        bytes32 hashedAddr = keccak256(abi.encode(recovered));\n\n        // Does the trusted identifier have they key which signed the user's claim?\n        //  && (isClaimRevoked(_claimId) == false)\n        if (keyHasPurpose(hashedAddr, 3) && (isClaimRevoked(sig) == false)) {\n            return true;\n        }\n\n        return false;\n    }\n\n    function getRecoveredAddress(bytes memory sig, bytes32 dataHash)\n        public override\n        pure\n        returns (address addr)\n    {\n        bytes32 ra;\n        bytes32 sa;\n        uint8 va;\n\n        // Check the signature length\n        if (sig.length != 65) {\n            return address(0);\n        }\n\n        // Divide the signature in r, s and v variables\n        assembly {\n            ra := mload(add(sig, 32))\n            sa := mload(add(sig, 64))\n            va := byte(0, mload(add(sig, 96)))\n        }\n\n        if (va < 27) {\n            va += 27;\n        }\n\n        address recoveredAddress = ecrecover(dataHash, va, ra, sa);\n\n        return (recoveredAddress);\n    }\n}\n",
  "sourcePath": "@onchain-id/solidity/contracts/ClaimIssuer.sol",
  "ast": {
    "absolutePath": "@onchain-id/solidity/contracts/ClaimIssuer.sol",
    "exportedSymbols": {
      "ClaimIssuer": [
        239
      ],
      "IClaimIssuer": [
        1456
      ],
      "IERC734": [
        1609
      ],
      "IERC735": [
        1734
      ],
      "IIdentity": [
        1743
      ],
      "Identity": [
        1411
      ],
      "Storage": [
        1776
      ],
      "Structs": [
        1811
      ],
      "Version": [
        1824
      ]
    },
    "id": 240,
    "license": "GPL-3.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "36:23:0"
      },
      {
        "absolutePath": "@onchain-id/solidity/contracts/interface/IClaimIssuer.sol",
        "file": "./interface/IClaimIssuer.sol",
        "id": 2,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 240,
        "sourceUnit": 1457,
        "src": "61:38:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@onchain-id/solidity/contracts/Identity.sol",
        "file": "./Identity.sol",
        "id": 3,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 240,
        "sourceUnit": 1412,
        "src": "100:24:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 4,
              "name": "IClaimIssuer",
              "nameLocations": [
                "150:12:0"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 1456,
              "src": "150:12:0"
            },
            "id": 5,
            "nodeType": "InheritanceSpecifier",
            "src": "150:12:0"
          },
          {
            "baseName": {
              "id": 6,
              "name": "Identity",
              "nameLocations": [
                "164:8:0"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 1411,
              "src": "164:8:0"
            },
            "id": 7,
            "nodeType": "InheritanceSpecifier",
            "src": "164:8:0"
          }
        ],
        "canonicalName": "ClaimIssuer",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 239,
        "linearizedBaseContracts": [
          239,
          1411,
          1824,
          1456,
          1743,
          1734,
          1609,
          1776,
          1811
        ],
        "name": "ClaimIssuer",
        "nameLocation": "135:11:0",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "d2345249",
            "id": 11,
            "mutability": "mutable",
            "name": "revokedClaims",
            "nameLocation": "210:13:0",
            "nodeType": "VariableDeclaration",
            "scope": 239,
            "src": "179:44:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$",
              "typeString": "mapping(bytes => bool)"
            },
            "typeName": {
              "id": 10,
              "keyType": {
                "id": 8,
                "name": "bytes",
                "nodeType": "ElementaryTypeName",
                "src": "188:5:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                }
              },
              "nodeType": "Mapping",
              "src": "179:23:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$",
                "typeString": "mapping(bytes => bool)"
              },
              "valueType": {
                "id": 9,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "197:4:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 20,
              "nodeType": "Block",
              "src": "310:2:0",
              "statements": []
            },
            "id": 21,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 16,
                    "name": "initialManagementKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13,
                    "src": "281:20:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "hexValue": "66616c7365",
                    "id": 17,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "303:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  }
                ],
                "id": 18,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 15,
                  "name": "Identity",
                  "nameLocations": [
                    "272:8:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1411,
                  "src": "272:8:0"
                },
                "nodeType": "ModifierInvocation",
                "src": "272:37:0"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13,
                  "mutability": "mutable",
                  "name": "initialManagementKey",
                  "nameLocation": "250:20:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 21,
                  "src": "242:28:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "242:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "241:30:0"
            },
            "returnParameters": {
              "id": 19,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "310:0:0"
            },
            "scope": 239,
            "src": "230:82:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              1425
            ],
            "body": {
              "id": 94,
              "nodeType": "Block",
              "src": "703:479:0",
              "statements": [
                {
                  "assignments": [
                    35
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 35,
                      "mutability": "mutable",
                      "name": "foundClaimTopic",
                      "nameLocation": "721:15:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 94,
                      "src": "713:23:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 34,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "713:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 36,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "713:23:0"
                },
                {
                  "assignments": [
                    38
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 38,
                      "mutability": "mutable",
                      "name": "scheme",
                      "nameLocation": "754:6:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 94,
                      "src": "746:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 37,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "746:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 39,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "746:14:0"
                },
                {
                  "assignments": [
                    41
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 41,
                      "mutability": "mutable",
                      "name": "issuer",
                      "nameLocation": "778:6:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 94,
                      "src": "770:14:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 40,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "770:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "770:14:0"
                },
                {
                  "assignments": [
                    44
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 44,
                      "mutability": "mutable",
                      "name": "sig",
                      "nameLocation": "808:3:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 94,
                      "src": "794:17:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 43,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "794:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 45,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "794:17:0"
                },
                {
                  "assignments": [
                    47
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 47,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "835:4:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 94,
                      "src": "821:18:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 46,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "821:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 48,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "821:18:0"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 55,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 49,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967281,
                        "src": "854:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 50,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "858:6:0",
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "854:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "id": 53,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967268,
                          "src": "876:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ClaimIssuer_$239",
                            "typeString": "contract ClaimIssuer"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_ClaimIssuer_$239",
                            "typeString": "contract ClaimIssuer"
                          }
                        ],
                        "id": 52,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "868:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 51,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "868:7:0",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 54,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "868:13:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "854:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 71,
                  "nodeType": "IfStatement",
                  "src": "850:170:0",
                  "trueBody": {
                    "id": 70,
                    "nodeType": "Block",
                    "src": "883:137:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 61,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967281,
                                            "src": "940:3:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 62,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "944:6:0",
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "940:10:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "id": 59,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4294967295,
                                          "src": "929:3:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 60,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "933:6:0",
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "src": "929:10:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 63,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "929:22:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 58,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967288,
                                    "src": "919:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 64,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "919:33:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "hexValue": "31",
                                  "id": 65,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "954:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                ],
                                "id": 57,
                                "name": "keyHasPurpose",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1036,
                                "src": "905:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (bytes32,uint256) view returns (bool)"
                                }
                              },
                              "id": 66,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "905:51:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5065726d697373696f6e733a2053656e64657220646f6573206e6f742068617665206d616e6167656d656e74206b6579",
                              "id": 67,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "958:50:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6f6b3247450dc94fc6574303b07d6b95320782b0ece8a8d742601c64b874e995",
                                "typeString": "literal_string \"Permissions: Sender does not have management key\""
                              },
                              "value": "Permissions: Sender does not have management key"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6f6b3247450dc94fc6574303b07d6b95320782b0ece8a8d742601c64b874e995",
                                "typeString": "literal_string \"Permissions: Sender does not have management key\""
                              }
                            ],
                            "id": 56,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "897:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 68,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "897:112:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 69,
                        "nodeType": "ExpressionStatement",
                        "src": "897:112:0"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 84,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "components": [
                        {
                          "id": 72,
                          "name": "foundClaimTopic",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 35,
                          "src": "1032:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 73,
                          "name": "scheme",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38,
                          "src": "1049:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 74,
                          "name": "issuer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 41,
                          "src": "1057:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 75,
                          "name": "sig",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 44,
                          "src": "1065:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "id": 76,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 47,
                          "src": "1070:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        null
                      ],
                      "id": 77,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "1030:47:0",
                      "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": [
                        {
                          "id": 82,
                          "name": "_claimId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24,
                          "src": "1109:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "arguments": [
                            {
                              "id": 79,
                              "name": "_identity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26,
                              "src": "1089:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 78,
                            "name": "Identity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1411,
                            "src": "1080:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Identity_$1411_$",
                              "typeString": "type(contract Identity)"
                            }
                          },
                          "id": 80,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1080:19:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Identity_$1411",
                            "typeString": "contract Identity"
                          }
                        },
                        "id": 81,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1100:8:0",
                        "memberName": "getClaim",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1395,
                        "src": "1080:28:0",
                        "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": 83,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1080:38:0",
                      "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": "1030:88:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 85,
                  "nodeType": "ExpressionStatement",
                  "src": "1030:88:0"
                },
                {
                  "expression": {
                    "id": 90,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 86,
                        "name": "revokedClaims",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11,
                        "src": "1129:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$",
                          "typeString": "mapping(bytes memory => bool)"
                        }
                      },
                      "id": 88,
                      "indexExpression": {
                        "id": 87,
                        "name": "sig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44,
                        "src": "1143:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1129:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 89,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1150:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1129:25:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 91,
                  "nodeType": "ExpressionStatement",
                  "src": "1129:25:0"
                },
                {
                  "expression": {
                    "hexValue": "74727565",
                    "id": 92,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1171:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 33,
                  "id": 93,
                  "nodeType": "Return",
                  "src": "1164:11:0"
                }
              ]
            },
            "documentation": {
              "id": 22,
              "nodeType": "StructuredDocumentation",
              "src": "318:278:0",
              "text": " @dev Revoke a claim previously issued, the claim is no longer considered as valid after revocation.\n @param _claimId the id of the claim\n @param _identity the address of the identity contract\n @return isRevoked true when the claim is revoked"
            },
            "functionSelector": "73c33708",
            "id": 95,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 30,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 29,
                  "name": "delegatedOnly",
                  "nameLocations": [
                    "675:13:0"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 294,
                  "src": "675:13:0"
                },
                "nodeType": "ModifierInvocation",
                "src": "675:13:0"
              }
            ],
            "name": "revokeClaim",
            "nameLocation": "610:11:0",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 28,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "666:8:0"
            },
            "parameters": {
              "id": 27,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24,
                  "mutability": "mutable",
                  "name": "_claimId",
                  "nameLocation": "630:8:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 95,
                  "src": "622:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "622:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26,
                  "mutability": "mutable",
                  "name": "_identity",
                  "nameLocation": "648:9:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 95,
                  "src": "640:17:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 25,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "640:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "621:37:0"
            },
            "returnParameters": {
              "id": 33,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 32,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 95,
                  "src": "697:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 31,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "697:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "696:6:0"
            },
            "scope": 239,
            "src": "601:581:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              1441
            ],
            "body": {
              "id": 113,
              "nodeType": "Block",
              "src": "1453:100:0",
              "statements": [
                {
                  "condition": {
                    "baseExpression": {
                      "id": 104,
                      "name": "revokedClaims",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11,
                      "src": "1467:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bool_$",
                        "typeString": "mapping(bytes memory => bool)"
                      }
                    },
                    "id": 106,
                    "indexExpression": {
                      "id": 105,
                      "name": "_sig",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 98,
                      "src": "1481:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1467:19:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 110,
                  "nodeType": "IfStatement",
                  "src": "1463:61:0",
                  "trueBody": {
                    "id": 109,
                    "nodeType": "Block",
                    "src": "1488:36:0",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1509:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 103,
                        "id": 108,
                        "nodeType": "Return",
                        "src": "1502:11:0"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "hexValue": "66616c7365",
                    "id": 111,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1541:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 103,
                  "id": 112,
                  "nodeType": "Return",
                  "src": "1534:12:0"
                }
              ]
            },
            "documentation": {
              "id": 96,
              "nodeType": "StructuredDocumentation",
              "src": "1188:181:0",
              "text": " @dev Returns revocation status of a claim.\n @param _sig the signature of the claim\n @return isRevoked true if the claim is revoked and false otherwise"
            },
            "functionSelector": "2646b264",
            "id": 114,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isClaimRevoked",
            "nameLocation": "1383:14:0",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 100,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1424:8:0"
            },
            "parameters": {
              "id": 99,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 98,
                  "mutability": "mutable",
                  "name": "_sig",
                  "nameLocation": "1411:4:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 114,
                  "src": "1398:17:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 97,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1398:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1397:19:0"
            },
            "returnParameters": {
              "id": 103,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 102,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 114,
                  "src": "1447:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 101,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1447:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1446:6:0"
            },
            "scope": 239,
            "src": "1374:179:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              1455
            ],
            "body": {
              "id": 184,
              "nodeType": "Block",
              "src": "2049:772:0",
              "statements": [
                {
                  "assignments": [
                    131
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 131,
                      "mutability": "mutable",
                      "name": "dataHash",
                      "nameLocation": "2067:8:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 184,
                      "src": "2059:16:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 130,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2059:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 140,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 135,
                            "name": "_identity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 118,
                            "src": "2099:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IIdentity_$1743",
                              "typeString": "contract IIdentity"
                            }
                          },
                          {
                            "id": 136,
                            "name": "claimTopic",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 120,
                            "src": "2110:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 137,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 124,
                            "src": "2122:4:0",
                            "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"
                            }
                          ],
                          "expression": {
                            "id": 133,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "2088:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2092:6:0",
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "2088:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 138,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2088:39:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 132,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967288,
                      "src": "2078:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 139,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2078:50:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2059:69:0"
                },
                {
                  "assignments": [
                    142
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 142,
                      "mutability": "mutable",
                      "name": "prefixedHash",
                      "nameLocation": "2237:12:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 184,
                      "src": "2229:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 141,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2229:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 150,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a3332",
                            "id": 146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2279:34:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
                              "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""
                            },
                            "value": "\u0019Ethereum Signed Message:\n32"
                          },
                          {
                            "id": 147,
                            "name": "dataHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 131,
                            "src": "2315:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
                              "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 144,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "2262:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2266:12:0",
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "2262:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 148,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2262:62:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 143,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967288,
                      "src": "2252:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 149,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2252:73:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2229:96:0"
                },
                {
                  "assignments": [
                    152
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 152,
                      "mutability": "mutable",
                      "name": "recovered",
                      "nameLocation": "2386:9:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 184,
                      "src": "2378:17:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 151,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2378:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 157,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 154,
                        "name": "sig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 122,
                        "src": "2418:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 155,
                        "name": "prefixedHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 142,
                        "src": "2423:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 153,
                      "name": "getRecoveredAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 238,
                      "src": "2398:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes memory,bytes32) pure returns (address)"
                      }
                    },
                    "id": 156,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2398:38:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2378:58:0"
                },
                {
                  "assignments": [
                    159
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 159,
                      "mutability": "mutable",
                      "name": "hashedAddr",
                      "nameLocation": "2497:10:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 184,
                      "src": "2489:18:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 158,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2489:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 166,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 163,
                            "name": "recovered",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 152,
                            "src": "2531:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 161,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "2520:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2524:6:0",
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "2520:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2520:21:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 160,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967288,
                      "src": "2510:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2510:32:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2489:53:0"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 177,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 168,
                          "name": "hashedAddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 159,
                          "src": "2706:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "hexValue": "33",
                          "id": 169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2718:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          }
                        ],
                        "id": 167,
                        "name": "keyHasPurpose",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1036,
                        "src": "2692:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (bytes32,uint256) view returns (bool)"
                        }
                      },
                      "id": 170,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2692:28:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 172,
                                "name": "sig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 122,
                                "src": "2740:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 171,
                              "name": "isClaimRevoked",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 114,
                              "src": "2725:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                "typeString": "function (bytes memory) view returns (bool)"
                              }
                            },
                            "id": 173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2725:19:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "66616c7365",
                            "id": 174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2748:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "2725:28:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 176,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "2724:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2692:62:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 181,
                  "nodeType": "IfStatement",
                  "src": "2688:104:0",
                  "trueBody": {
                    "id": 180,
                    "nodeType": "Block",
                    "src": "2756:36:0",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2777:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 129,
                        "id": 179,
                        "nodeType": "Return",
                        "src": "2770:11:0"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "hexValue": "66616c7365",
                    "id": 182,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2809:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 129,
                  "id": 183,
                  "nodeType": "Return",
                  "src": "2802:12:0"
                }
              ]
            },
            "documentation": {
              "id": 115,
              "nodeType": "StructuredDocumentation",
              "src": "1559:334:0",
              "text": " @dev Checks if a claim is valid.\n @param _identity the identity contract related to the claim\n @param claimTopic the claim topic of the claim\n @param sig the signature of the claim\n @param data the data field of the claim\n @return claimValid true if the claim is valid, false otherwise"
            },
            "functionSelector": "c0969a6e",
            "id": 185,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isClaimValid",
            "nameLocation": "1907:12:0",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 126,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2005:8:0"
            },
            "parameters": {
              "id": 125,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 118,
                  "mutability": "mutable",
                  "name": "_identity",
                  "nameLocation": "1930:9:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 185,
                  "src": "1920:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 117,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 116,
                      "name": "IIdentity",
                      "nameLocations": [
                        "1920:9:0"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "1920:9:0"
                    },
                    "referencedDeclaration": 1743,
                    "src": "1920:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 120,
                  "mutability": "mutable",
                  "name": "claimTopic",
                  "nameLocation": "1949:10:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 185,
                  "src": "1941:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 119,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1941:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 122,
                  "mutability": "mutable",
                  "name": "sig",
                  "nameLocation": "1974:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 185,
                  "src": "1961:16:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 121,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1961:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 124,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "1992:4:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 185,
                  "src": "1979:17:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 123,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1979:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1919:78:0"
            },
            "returnParameters": {
              "id": 129,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 128,
                  "mutability": "mutable",
                  "name": "claimValid",
                  "nameLocation": "2033:10:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 185,
                  "src": "2028:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 127,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2028:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2027:17:0"
            },
            "scope": 239,
            "src": "1898:923:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              1434
            ],
            "body": {
              "id": 237,
              "nodeType": "Block",
              "src": "2964:547:0",
              "statements": [
                {
                  "assignments": [
                    196
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 196,
                      "mutability": "mutable",
                      "name": "ra",
                      "nameLocation": "2982:2:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 237,
                      "src": "2974:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 195,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2974:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 197,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2974:10:0"
                },
                {
                  "assignments": [
                    199
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 199,
                      "mutability": "mutable",
                      "name": "sa",
                      "nameLocation": "3002:2:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 237,
                      "src": "2994:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 198,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2994:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 200,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2994:10:0"
                },
                {
                  "assignments": [
                    202
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 202,
                      "mutability": "mutable",
                      "name": "va",
                      "nameLocation": "3020:2:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 237,
                      "src": "3014:8:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 201,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "3014:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 203,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3014:8:0"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 207,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 204,
                        "name": "sig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 187,
                        "src": "3075:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 205,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3079:6:0",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "3075:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "3635",
                      "id": 206,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3089:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_65_by_1",
                        "typeString": "int_const 65"
                      },
                      "value": "65"
                    },
                    "src": "3075:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 214,
                  "nodeType": "IfStatement",
                  "src": "3071:64:0",
                  "trueBody": {
                    "id": 213,
                    "nodeType": "Block",
                    "src": "3093:42:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 210,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3122:1:0",
                              "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": 209,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3114:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 208,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3114:7:0",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3114:10:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 194,
                        "id": 212,
                        "nodeType": "Return",
                        "src": "3107:17:0"
                      }
                    ]
                  }
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "3210:134:0",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "3224:25:0",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "sig",
                                  "nodeType": "YulIdentifier",
                                  "src": "3240:3:0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "3245:2:0",
                                  "type": "",
                                  "value": "32"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "3236:3:0"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3236:12:0"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "3230:5:0"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3230:19:0"
                        },
                        "variableNames": [
                          {
                            "name": "ra",
                            "nodeType": "YulIdentifier",
                            "src": "3224:2:0"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "3262:25:0",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "sig",
                                  "nodeType": "YulIdentifier",
                                  "src": "3278:3:0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "3283:2:0",
                                  "type": "",
                                  "value": "64"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "3274:3:0"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3274:12:0"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "3268:5:0"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3268:19:0"
                        },
                        "variableNames": [
                          {
                            "name": "sa",
                            "nodeType": "YulIdentifier",
                            "src": "3262:2:0"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "3300:34:0",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3311:1:0",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "sig",
                                      "nodeType": "YulIdentifier",
                                      "src": "3324:3:0"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "3329:2:0",
                                      "type": "",
                                      "value": "96"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "3320:3:0"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "3320:12:0"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "3314:5:0"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "3314:19:0"
                            }
                          ],
                          "functionName": {
                            "name": "byte",
                            "nodeType": "YulIdentifier",
                            "src": "3306:4:0"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3306:28:0"
                        },
                        "variableNames": [
                          {
                            "name": "va",
                            "nodeType": "YulIdentifier",
                            "src": "3300:2:0"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "london",
                  "externalReferences": [
                    {
                      "declaration": 196,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3224:2:0",
                      "valueSize": 1
                    },
                    {
                      "declaration": 199,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3262:2:0",
                      "valueSize": 1
                    },
                    {
                      "declaration": 187,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3240:3:0",
                      "valueSize": 1
                    },
                    {
                      "declaration": 187,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3278:3:0",
                      "valueSize": 1
                    },
                    {
                      "declaration": 187,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3324:3:0",
                      "valueSize": 1
                    },
                    {
                      "declaration": 202,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3300:2:0",
                      "valueSize": 1
                    }
                  ],
                  "id": 215,
                  "nodeType": "InlineAssembly",
                  "src": "3201:143:0"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 218,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 216,
                      "name": "va",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 202,
                      "src": "3358:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "hexValue": "3237",
                      "id": 217,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3363:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_27_by_1",
                        "typeString": "int_const 27"
                      },
                      "value": "27"
                    },
                    "src": "3358:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 224,
                  "nodeType": "IfStatement",
                  "src": "3354:46:0",
                  "trueBody": {
                    "id": 223,
                    "nodeType": "Block",
                    "src": "3367:33:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 219,
                            "name": "va",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 202,
                            "src": "3381:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "3237",
                            "id": 220,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3387:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_27_by_1",
                              "typeString": "int_const 27"
                            },
                            "value": "27"
                          },
                          "src": "3381:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 222,
                        "nodeType": "ExpressionStatement",
                        "src": "3381:8:0"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    226
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 226,
                      "mutability": "mutable",
                      "name": "recoveredAddress",
                      "nameLocation": "3418:16:0",
                      "nodeType": "VariableDeclaration",
                      "scope": 237,
                      "src": "3410:24:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 225,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3410:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 233,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 228,
                        "name": "dataHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 189,
                        "src": "3447:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 229,
                        "name": "va",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 202,
                        "src": "3457:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "id": 230,
                        "name": "ra",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 196,
                        "src": "3461:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 231,
                        "name": "sa",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 199,
                        "src": "3465:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 227,
                      "name": "ecrecover",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967290,
                      "src": "3437:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                      }
                    },
                    "id": 232,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3437:31:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3410:58:0"
                },
                {
                  "expression": {
                    "components": [
                      {
                        "id": 234,
                        "name": "recoveredAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 226,
                        "src": "3487:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "id": 235,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3486:18:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 194,
                  "id": 236,
                  "nodeType": "Return",
                  "src": "3479:25:0"
                }
              ]
            },
            "functionSelector": "c3b129e3",
            "id": 238,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getRecoveredAddress",
            "nameLocation": "2836:19:0",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 191,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2907:8:0"
            },
            "parameters": {
              "id": 190,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 187,
                  "mutability": "mutable",
                  "name": "sig",
                  "nameLocation": "2869:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 238,
                  "src": "2856:16:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 186,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2856:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 189,
                  "mutability": "mutable",
                  "name": "dataHash",
                  "nameLocation": "2882:8:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 238,
                  "src": "2874:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 188,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2874:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2855:36:0"
            },
            "returnParameters": {
              "id": 194,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 193,
                  "mutability": "mutable",
                  "name": "addr",
                  "nameLocation": "2954:4:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 238,
                  "src": "2946:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 192,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2946:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2945:14:0"
            },
            "scope": 239,
            "src": "2827:684:0",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 240,
        "src": "126:3387:0",
        "usedErrors": []
      }
    ],
    "src": "36:3478:0"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.17+commit.8df45f5f.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.8",
  "updatedAt": "2022-12-08T12:51:01.279Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "addClaim(uint256,uint256,address,bytes,bytes,string)": {
        "params": {
          "_data": "The hash of the claim data, sitting in another location, a bit-mask, call data, or actual data based on the claim scheme.",
          "_issuer": "The issuers identity contract address, or the address used to sign the above signature.",
          "_scheme": "The scheme with which this claim SHOULD be verified or how it should be processed.",
          "_signature": "Signature which is the proof that the claim issuer issued a claim of topic for this identity. it MUST be a signed message of the following structure: keccak256(abi.encode(address identityHolder_address, uint256 _ topic, bytes data))",
          "_topic": "The type of claim",
          "_uri": "The location of the claim, this can be HTTP links, swarm hashes, IPFS hashes, and such."
        },
        "returns": {
          "claimRequestId": "Returns claimRequestId: COULD be send to the approve function, to approve or reject this claim. triggers ClaimAdded event."
        }
      },
      "addKey(bytes32,uint256,uint256)": {
        "params": {
          "_key": "keccak256 representation of an ethereum address",
          "_purpose": "a uint256[] Array of the key types, like 1 = MANAGEMENT, 2 = ACTION, 3 = CLAIM, 4 = ENCRYPTION",
          "_type": "type of key used, which would be a uint256 for different key types. e.g. 1 = ECDSA, 2 = RSA, etc."
        },
        "returns": {
          "success": "Returns TRUE if the addition was successful and FALSE if not"
        }
      },
      "execute(address,uint256,bytes)": {
        "returns": {
          "executionId": "SHOULD be sent to the approve function, to approve or reject this execution."
        }
      },
      "getClaim(bytes32)": {
        "params": {
          "_claimId": "The identity of the claim i.e. keccak256(abi.encode(_issuer, _topic))"
        },
        "returns": {
          "data": "Returns all the parameters of the claim for the specified _claimId (topic, scheme, signature, issuer, data, uri) .",
          "issuer": "Returns all the parameters of the claim for the specified _claimId (topic, scheme, signature, issuer, data, uri) .",
          "scheme": "Returns all the parameters of the claim for the specified _claimId (topic, scheme, signature, issuer, data, uri) .",
          "signature": "Returns all the parameters of the claim for the specified _claimId (topic, scheme, signature, issuer, data, uri) .",
          "topic": "Returns all the parameters of the claim for the specified _claimId (topic, scheme, signature, issuer, data, uri) .",
          "uri": "Returns all the parameters of the claim for the specified _claimId (topic, scheme, signature, issuer, data, uri) ."
        }
      },
      "getClaimIdsByTopic(uint256)": {
        "params": {
          "_topic": "The identity of the claim i.e. keccak256(abi.encode(_issuer, _topic))"
        },
        "returns": {
          "claimIds": "Returns an array of claim IDs by topic."
        }
      },
      "getKey(bytes32)": {
        "params": {
          "_key": "The public key.  for non-hex and long keys, its the Keccak256 hash of the key"
        },
        "returns": {
          "key": "Returns the full key data, if present in the identity.",
          "keyType": "Returns the full key data, if present in the identity.",
          "purposes": "Returns the full key data, if present in the identity."
        }
      },
      "getKeyPurposes(bytes32)": {
        "params": {
          "_key": "The public key.  for non-hex and long keys, its the Keccak256 hash of the key"
        },
        "returns": {
          "_purposes": "Returns the purposes of the specified key"
        }
      },
      "getKeysByPurpose(uint256)": {
        "params": {
          "_purpose": "a uint256[] Array of the key types, like 1 = MANAGEMENT, 2 = ACTION, 3 = CLAIM, 4 = ENCRYPTION"
        },
        "returns": {
          "_keys": "Returns an array of public key bytes32 hold by this identity and having the specified purpose"
        }
      },
      "initialize(address)": {
        "params": {
          "initialManagementKey": "The ethereum address to be set as the management key of the ONCHAINID."
        }
      },
      "isClaimRevoked(bytes)": {
        "details": "Returns revocation status of a claim.",
        "params": {
          "_sig": "the signature of the claim"
        },
        "returns": {
          "_0": "isRevoked true if the claim is revoked and false otherwise"
        }
      },
      "isClaimValid(address,uint256,bytes,bytes)": {
        "details": "Checks if a claim is valid.",
        "params": {
          "_identity": "the identity contract related to the claim",
          "claimTopic": "the claim topic of the claim",
          "data": "the data field of the claim",
          "sig": "the signature of the claim"
        },
        "returns": {
          "claimValid": "true if the claim is valid, false otherwise"
        }
      },
      "removeClaim(bytes32)": {
        "params": {
          "_claimId": "The identity of the claim i.e. keccak256(abi.encode(_issuer, _topic))"
        },
        "returns": {
          "success": "Returns TRUE when the claim was removed. triggers ClaimRemoved event"
        }
      },
      "revokeClaim(bytes32,address)": {
        "details": "Revoke a claim previously issued, the claim is no longer considered as valid after revocation.",
        "params": {
          "_claimId": "the id of the claim",
          "_identity": "the address of the identity contract"
        },
        "returns": {
          "_0": "isRevoked true when the claim is revoked"
        }
      },
      "version()": {
        "details": "Returns the string of the current version."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "addClaim(uint256,uint256,address,bytes,bytes,string)": {
        "notice": "Implementation of the addClaim function from the ERC-735 standard  Require that the msg.sender has claim signer key."
      },
      "addKey(bytes32,uint256,uint256)": {
        "notice": "implementation of the addKey function of the ERC-734 standard Adds a _key to the identity. The _purpose specifies the purpose of key. Initially we propose four purposes: 1: MANAGEMENT keys, which can manage the identity 2: ACTION keys, which perform actions in this identities name (signing, logins, transactions, etc.) 3: CLAIM signer keys, used to sign claims on other identities which need to be revokable. 4: ENCRYPTION keys, used to encrypt data e.g. hold in claims. MUST only be done by keys of purpose 1, or the identity itself. If its the identity itself, the approval process will determine its approval."
      },
      "approve(uint256,bool)": {
        "notice": "Approves an execution or claim addition. This SHOULD require n of m approvals of keys purpose 1, if the _to of the execution is the identity contract itself, to successfully approve an execution. And COULD require n of m approvals of keys purpose 2, if the _to of the execution is another contract, to successfully approve an execution."
      },
      "execute(address,uint256,bytes)": {
        "notice": "Passes an execution instruction to the keymanager. SHOULD require approve to be called with one or more keys of purpose 1 or 2 to approve this execution. Execute COULD be used as the only accessor for addKey, removeKey and replaceKey and removeClaim."
      },
      "getClaim(bytes32)": {
        "notice": "Implementation of the getClaim function from the ERC-735 standard."
      },
      "getClaimIdsByTopic(uint256)": {
        "notice": "Implementation of the getClaimIdsByTopic function from the ERC-735 standard. used to get all the claims from the specified topic"
      },
      "getKey(bytes32)": {
        "notice": "Implementation of the getKey function from the ERC-734 standard"
      },
      "getKeyPurposes(bytes32)": {
        "notice": "gets the purposes of a key"
      },
      "getKeysByPurpose(uint256)": {
        "notice": "gets all the keys with a specific purpose from an identity"
      },
      "initialize(address)": {
        "notice": "When using this contract as an implementation for a proxy, call this initializer with a delegatecall."
      },
      "keyHasPurpose(bytes32,uint256)": {
        "notice": "Returns true if the key has MANAGEMENT purpose or the specified purpose."
      },
      "removeClaim(bytes32)": {
        "notice": "Implementation of the removeClaim function from the ERC-735 standard Require that the msg.sender has management key. Can only be removed by the claim issuer, or the claim holder itself."
      },
      "removeKey(bytes32,uint256)": {
        "notice": "Remove the purpose from a key."
      }
    },
    "version": 1
  }
}