{
    "contractName": "Factory",
    "abi": [
        {
            "inputs": [],
            "name": "FailedDeployment",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "balance",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "needed",
                    "type": "uint256"
                }
            ],
            "name": "InsufficientBalance",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "InvalidInitialization",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "NotInitializing",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "OwnableInvalidOwner",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "OwnableUnauthorizedAccount",
            "type": "error"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "issuer",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "tokenName",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "tokenType",
                    "type": "bytes32"
                }
            ],
            "name": "BondIssuerCreated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "issuer",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "tokenName",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "tokenType",
                    "type": "bytes32"
                }
            ],
            "name": "CashIssuerCreated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint64",
                    "name": "version",
                    "type": "uint64"
                }
            ],
            "name": "Initialized",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "previousOwner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "OwnershipTransferred",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "tokenName",
                    "type": "bytes32"
                }
            ],
            "name": "SupportToken",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "tokenName",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "tokenType",
                    "type": "bytes32"
                }
            ],
            "name": "TokenCreated",
            "type": "event"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "currencies",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "owner",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "renounceOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "token",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "tokenType",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "name",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "tokens",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "transferOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_owner",
                    "type": "address"
                }
            ],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "setOwner",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getTokenCount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenCount",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "n",
                    "type": "uint256"
                }
            ],
            "name": "getToken",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "viaAddress",
                    "type": "address"
                }
            ],
            "name": "getName",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "viaAddress",
                    "type": "address"
                }
            ],
            "name": "getType",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "viaAddress",
                    "type": "address"
                }
            ],
            "name": "getNameAndType",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "tokenName",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "tokenType",
                    "type": "bytes32"
                }
            ],
            "name": "getTokenByNameType",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "tokenType",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "tokenName",
                    "type": "bytes32"
                }
            ],
            "name": "getIssuer",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "tokenName",
                    "type": "bytes32"
                }
            ],
            "name": "getAddressAndType",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "fromCurrency",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "toCurrency",
                    "type": "bytes32"
                }
            ],
            "name": "getCryptoDataUrl",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "getClient",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_bondToken",
                    "type": "address"
                }
            ],
            "name": "getBondTerm",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "getFiatPayoutUrl",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_target",
                    "type": "address"
                },
                {
                    "internalType": "bytes32",
                    "name": "tokenName",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "tokenType",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "tokenCurrency",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "_oracle",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_fee",
                    "type": "address"
                }
            ],
            "name": "createIssuer",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_target",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "issuer",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "payee",
                    "type": "address"
                },
                {
                    "internalType": "bytes32",
                    "name": "tokenName",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "tokenSymbol",
                    "type": "bytes32"
                }
            ],
            "name": "createToken",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_feed",
                    "type": "address"
                },
                {
                    "internalType": "bytes32",
                    "name": "_fromCurrency",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "_toCurrency",
                    "type": "bytes32"
                }
            ],
            "name": "setCryptoDataURL",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_bondToken",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_term",
                    "type": "uint256"
                }
            ],
            "name": "setBondTerm",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_client",
                    "type": "address"
                }
            ],
            "name": "setClientAddress",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "_url",
                    "type": "string"
                }
            ],
            "name": "setFiatPayoutUrl",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_currency",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "_address",
                    "type": "address"
                }
            ],
            "name": "supportTokens",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_currency",
                    "type": "bytes32"
                }
            ],
            "name": "checkSupportForToken",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_currency",
                    "type": "bytes32"
                }
            ],
            "name": "getCurrencyToken",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"tokenName\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"tokenType\",\"type\":\"bytes32\"}],\"name\":\"BondIssuerCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"tokenName\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"tokenType\",\"type\":\"bytes32\"}],\"name\":\"CashIssuerCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"tokenName\",\"type\":\"bytes32\"}],\"name\":\"SupportToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"tokenName\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"tokenType\",\"type\":\"bytes32\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_currency\",\"type\":\"bytes32\"}],\"name\":\"checkSupportForToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"tokenName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"tokenType\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"tokenCurrency\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_fee\",\"type\":\"address\"}],\"name\":\"createIssuer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"tokenName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"tokenSymbol\",\"type\":\"bytes32\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"currencies\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"tokenName\",\"type\":\"bytes32\"}],\"name\":\"getAddressAndType\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bondToken\",\"type\":\"address\"}],\"name\":\"getBondTerm\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getClient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"fromCurrency\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"toCurrency\",\"type\":\"bytes32\"}],\"name\":\"getCryptoDataUrl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_currency\",\"type\":\"bytes32\"}],\"name\":\"getCurrencyToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFiatPayoutUrl\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"tokenType\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"tokenName\",\"type\":\"bytes32\"}],\"name\":\"getIssuer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"viaAddress\",\"type\":\"address\"}],\"name\":\"getName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"viaAddress\",\"type\":\"address\"}],\"name\":\"getNameAndType\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"getToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"tokenName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"tokenType\",\"type\":\"bytes32\"}],\"name\":\"getTokenByNameType\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"viaAddress\",\"type\":\"address\"}],\"name\":\"getType\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bondToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_term\",\"type\":\"uint256\"}],\"name\":\"setBondTerm\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_client\",\"type\":\"address\"}],\"name\":\"setClientAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feed\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_fromCurrency\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_toCurrency\",\"type\":\"bytes32\"}],\"name\":\"setCryptoDataURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_url\",\"type\":\"string\"}],\"name\":\"setFiatPayoutUrl\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_currency\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"supportTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"token\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"tokenType\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Factory.sol\":\"Factory\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x85c3b9bac35a90dce9ed9b31532c3739cae432359d8d7ff59cb6712f21c7ed14\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a084d32ad4ad5b1d4494124d7695334dbeff81c2d1846a01ef1215153dd38eed\",\"dweb:/ipfs/QmbzDrfeogDd3n65mADjLuy97oAMgh2CtiUxKKEpM3WB8b\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x30d125b8417684dbfea3e8d57284b353a86b22077237b4aaf098c0b54b153e16\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2813775a6326190e75dfa9005c1abbdb1e541c195c0bf5656dd4199e8c66fd8d\",\"dweb:/ipfs/QmYDKANBezQXNrEDyJ69RVXkgypW1hWj7MAvjfdNHTZY8L\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xad316bdc3ee64a0e29773256245045dc57b92660799ff14f668f7c0da9456a9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66463434d266816fca2a3a2734ceee88544e61b7cc3899c50333b46e8e771455\",\"dweb:/ipfs/QmPYCzHjki1HQLvBub3uUqoUKGrwdgR3xP9Zpya14YTdXS\"]},\"@openzeppelin/contracts/proxy/Clones.sol\":{\"keccak256\":\"0x5a1847c0c6b92d60711f04cba9eaff572ae1f657cff1b8ca4ba065bcdbd68d8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://403f015277242179edf64150e044b4a18f6ee2cc5edaf6b067a7791545732ed9\",\"dweb:/ipfs/QmYoLCcvqZDofK8ZcvbQcv3Wj5HHku7nF8Y3pXx2efawJb\"]},\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"@openzeppelin/contracts/utils/Create2.sol\":{\"keccak256\":\"0xe06ddfff69f3ba154d92102d9a85db2780e045303a587360cf12195216e851ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac19cc390a227758c239c06d3a11d0a2c40c8f58eabb034154b661269d4a0851\",\"dweb:/ipfs/QmdSsfYsPX5RyAXSfHRvR5zdY9MffAgZVa3vdxQUypFBa5\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/LowLevelCall.sol\":{\"keccak256\":\"0x6ba3db1346fc75a832aa6cd075e12f6f1fa172fa2122a020f324c319fe5be75e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab92e9e1cb08144c43fa3a383a87c48f49a652d51156950b928c2a50bee6b3a5\",\"dweb:/ipfs/QmWeKkKZBgLDKgRFGKCzsKybYF7C8g9ysg5kU1b1p7QFBi\"]},\"project:/contracts/Factory.sol\":{\"keccak256\":\"0xa7f4a059aa95f12181173df30fdbdfebfe26bb0055d571768f538818bdc1db0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedfc0ba2ce56141c63d1f229a259641e2fc718fe087ac802a672c3bd5744d81\",\"dweb:/ipfs/QmXqGbVCqFvhn7HUrJ7SfFNxqkrNhfJVfHPGZbvJg2vPtm\"]},\"project:/contracts/interfaces/VerifiedClient.sol\":{\"keccak256\":\"0xa8671efde1c5d5cdcace3bae2d0bf21daa7a8b72d1c764e929fbba33ec87db7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9358bd32a369fdd72c4792e86fd821eccdc66e286548278a222f93791986e06\",\"dweb:/ipfs/QmUtq5KJJS7xP6Uq5yvJhrDP2JBxYVm6UJn75ZaQTeRki9\"]},\"project:/contracts/interfaces/ViaFactory.sol\":{\"keccak256\":\"0x82f088a40cd1e025c557d216d42947d31fe3a3d9f8bc9a50df3d575d8ddca5c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab9e4d9c3381b5909815cb33360dd497ca770f9280d4593b46d412958dfb96fd\",\"dweb:/ipfs/QmadfrCQZ7DdgDRwxgybaEXBf4DwUTx4Bb6wDpqguw7keW\"]},\"project:/contracts/interfaces/ViaToken.sol\":{\"keccak256\":\"0xbde24dbddaa537b0a7c58a9f0b85a77dd774eb7d957ab33da6cc825bb60f7d4b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88cc809b041ff035dc975ccce1a5f45a9ec471447b7c6cba3f7b8bf22bbb9f8a\",\"dweb:/ipfs/Qma1RHsJA5m2bd9Pz5gUwocQQb1seg25iE9oitLXijtH78\"]}},\"version\":1}",
    "bytecode": "0x608060405234801561000f575f80fd5b50611a218061001d5f395ff3fe608060405234801561000f575f80fd5b50600436106101c6575f3560e01c8063805ef812116100fe578063c4d66de81161009e578063f2fde38b1161006e578063f2fde38b14610486578063f3458f1414610499578063f429f19b146104ac578063f6d1c271146104d4575f80fd5b8063c4d66de81461042a578063d11322d41461043d578063d6a5aad814610460578063e4b50cb814610473575f80fd5b8063968eb4b2116100d9578063968eb4b2146103a8578063b9467629146103bd578063b96b2004146103e5578063baa796bd14610417575f80fd5b8063805ef8121461037a57806388a365f41461038d5780638da5cb5b146103a0575f80fd5b80635af4730a116101695780636d46a1db116101445780636d46a1db14610311578063708b077314610337578063715018a61461036a57806378a8956714610372575f80fd5b80635af4730a1461026c5780635fd4b08a146102a2578063668151a7146102cd575f80fd5b80633b518bbd116101a45780633b518bbd146102225780634f64b2be146102355780635810c6ce1461024857806359dc735c1461025b575f80fd5b80630661722f146101ca57806313af4035146101df5780632ea77917146101f2575b5f80fd5b6101dd6101d83660046115b9565b6104e7565b005b6101dd6101ed3660046115eb565b6105ed565b61020561020036600461160d565b610601565b6040516001600160a01b0390911681526020015b60405180910390f35b61020561023036600461162d565b61062a565b610205610243366004611684565b6107ae565b6101dd61025636600461169b565b6107d6565b6002546001600160a01b0316610205565b61029461027a3660046115eb565b6001600160a01b03165f9081526006602052604090205490565b604051908152602001610219565b6102946102b03660046115eb565b6001600160a01b03165f9081526020819052604090206001015490565b6102fc6102db3660046115eb565b6001600160a01b03165f908152602081905260409020600181015490549091565b60408051928352602083019190915201610219565b6102fc61031f3660046115eb565b5f602081905290815260409020805460019091015482565b61020561034536600461160d565b5f9182526001602090815260408084209284529190529020546001600160a01b031690565b6101dd6108b6565b600354610294565b6101dd6103883660046115eb565b6108c9565b6101dd61039b3660046116c5565b6108f3565b610205610cfc565b6103b0610d2a565b604051610219919061175d565b6102056103cb366004611684565b5f908152600a60205260409020546001600160a01b031690565b6103f86103f3366004611684565b610dba565b604080516001600160a01b039093168352602083019190915201610219565b6101dd61042536600461178f565b610eb3565b6101dd6104383660046115eb565b610ecd565b61045061044b366004611684565b610fc6565b6040519015158152602001610219565b6101dd61046e3660046117fb565b610fe8565b610205610481366004611684565b611167565b6101dd6104943660046115eb565b611195565b6102056104a736600461160d565b6111c6565b6102946104ba3660046115eb565b6001600160a01b03165f9081526020819052604090205490565b6102946104e2366004611684565b6112b3565b60025433905f906001600160a01b03161561056e57600254604051634427673360e01b81526001600160a01b03848116600483015290911690634427673390602401606060405180830381865afa158015610544573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105689190611829565b50909150505b8061044560f41b14806105885750806420b236b4b760d91b145b806105ab5750610596610cfc565b6001600160a01b0316826001600160a01b0316145b6105b3575f80fd5b50505f918252600160209081526040808420928452919052902080546001600160a01b0319166001600160a01b0392909216919091179055565b6105f56112d2565b6105fe81611304565b50565b5f8281526005602090815260408083208484529091529020546001600160a01b03165b92915050565b335f9081526020819052604081205466159a58509bdb9960ca1b14806106685750610653610cfc565b6001600160a01b0316336001600160a01b0316145b610670575f80fd5b604051602481018490526001600160a01b0380871660448301528516606482015233608482015260a481018390525f9060c40160408051601f198184030181529190526020810180516001600160e01b031663b5ddca1d60e01b17905290505f6106da8883611374565b6040805180820182526b2b34b0a137b7322a37b5b2b760a11b815260208082018981526001600160a01b0385165f8181528084528581209451855591516001948501556003805494850181559091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90920180546001600160a01b03191683179055825188815266159a58509bdb9960ca1b91810191909152929350917f59bcd02033e203f8af464062ce742d11a3358b7b8fd7e996b91d74bee929d7e5910160405180910390a2979650505050505050565b600381815481106107bd575f80fd5b5f918252602090912001546001600160a01b0316905081565b336001600160a01b0316826001600160a01b031663525564216040518163ffffffff1660e01b8152600401602060405180830381865afa15801561081c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108409190611854565b6001600160a01b03161461089b5760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206973737565722063616e2073657420626f6e64207465726d00000060448201526064015b60405180910390fd5b6001600160a01b039091165f90815260066020526040902055565b6108be6112d2565b6108c75f611304565b565b6108d16112d2565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6108fb6112d2565b6001600160a01b0387166109425760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a59081d185c99d95d60921b6044820152606401610892565b6001600160a01b0383166109895760405162461bcd60e51b815260206004820152600e60248201526d496e76616c6964206f7261636c6560901b6044820152606401610892565b60608563109bdb9960e21b03610a115786856109a3610cfc565b604051602481019390935260448301919091526001600160a01b039081166064830152808616608483015280851660a4830152831660c482015260e40160408051601f198184030181529190526020810180516001600160e01b0316632274a71360e21b1790529050610a7d565b8685610a1b610cfc565b604051602481019390935260448301919091526001600160a01b0390811660648301528086166084830152831660a482015260c40160408051601f198184030181529190526020810180516001600160e01b0316630464997760e41b17905290505b5f610a888983611374565b90505f8763086c2e6d60e31b03610af057506040805189815260208101899052660acd2c286c2e6d60cb1b916001600160a01b038416917f49c2bdad6020b81dabafa7be5ba1d6b64dccc883841d724393e4a0242819bc3491015b60405180910390a2610b83565b8763109bdb9960e21b03610b4c5750604080518981526020810189905266159a58509bdb9960ca1b916001600160a01b038416917fdaec82b39e03602f1e7b1c03805276c348a0b9c50d3e83d4ae136f2bbb74137f9101610ae3565b60405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964207479706560a01b6044820152606401610892565b60408051808201825282815260208082018c81526001600160a01b0386165f9081528083528481209351845590516001909301929092558b8252600490522054158015610c0957506003541580610c095750816001600160a01b031660035f81548110610bf257610bf261186f565b5f918252602090912001546001600160a01b031614155b15610c6c57600380545f8b8152600460205260408120829055600182018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b038416179055610cbb565b5f89815260046020526040902054600380548492908110610c8f57610c8f61186f565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505b5f9081526005602090815260408083209883529790529590952080546001600160a01b0319166001600160a01b039096169590951790945550505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b606060078054610d3990611883565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6590611883565b8015610db05780601f10610d8757610100808354040283529160200191610db0565b820191905f5260205f20905b815481529060010190602001808311610d9357829003601f168201915b5050505050905090565b5f805f835f80600360045f8981526020019081526020015f205481548110610de457610de461186f565b5f9182526020808320909101546001600160a01b0316835282019290925260400190206001015403610e14575060015b8015610ea8575f84815260046020526040902054600380549091908110610e3d57610e3d61186f565b5f91825260208083209091015486835260049091526040822054600380546001600160a01b0390931693928392908110610e7957610e7961186f565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054909590945092505050565b505f93849350915050565b610ebb6112d2565b6007610ec8828483611914565b505050565b5f610ed6611487565b805490915060ff600160401b820416159067ffffffffffffffff165f81158015610efd5750825b90505f8267ffffffffffffffff166001148015610f195750303b155b905081158015610f27575080155b15610f455760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f6f57845460ff60401b1916600160401b1785555b610f78866114af565b8315610fbe57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f8181526009602052604081205415610fe157506001919050565b505f919050565b60025433905f906001600160a01b03161561106f57600254604051634427673360e01b81526001600160a01b03848116600483015290911690634427673390602401606060405180830381865afa158015611045573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110699190611829565b50909150505b8061044560f41b14806110895750806420b236b4b760d91b145b806110ac5750611097610cfc565b6001600160a01b0316826001600160a01b0316145b6110b4575f80fd5b5f84815260096020526040812054900361116157600880546001810182557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee301859055545f85815260096020908152604080832093909355600a81529082902080546001600160a01b0319166001600160a01b03871690811790915591518681527fd890f7eb25689077af6295272755a655abe2e036d2f1cb4422eb9e46eacd5e84910160405180910390a25b50505050565b5f6003828154811061117b5761117b61186f565b5f918252602090912001546001600160a01b031692915050565b61119d6112d2565b6001600160a01b0381166105f557604051631e4fbdf760e01b81525f6004820152602401610892565b5f825f80600360045f8881526020019081526020015f2054815481106111ee576111ee61186f565b5f9182526020808320909101546001600160a01b0316835282019290925260400190206001015414801561126957505f838152600460205260408120546003805485939283929181106112435761124361186f565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054145b156112ac575f838152600460205260409020546003805490919081106112915761129161186f565b5f918252602090912001546001600160a01b03169050610624565b505f610624565b600881815481106112c2575f80fd5b5f91825260209091200154905081565b336112db610cfc565b6001600160a01b0316146108c75760405163118cdaa760e01b8152336004820152602401610892565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f6001600160a01b0383166113c45760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b21034b6b83632b6b2b73a30ba34b7b760511b6044820152606401610892565b6113d6836001600160a01b03166114c0565b825190915015610624575f816001600160a01b0316836040516113f991906119d0565b5f604051808303815f865af19150503d805f8114611432576040519150601f19603f3d011682016040523d82523d5f602084013e611437565b606091505b50509050806114805760405162461bcd60e51b8152602060048201526015602482015274125b9a5d1a585b1a5e985d1a5bdb8819985a5b1959605a1b6044820152606401610892565b5092915050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610624565b6114b76114cb565b6105fe816114f0565b5f610624825f6114f8565b6114d361158c565b6108c757604051631afcd79f60e31b815260040160405180910390fd5b61119d6114cb565b5f814710156115235760405163cf47918160e01b815247600482015260248101839052604401610892565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c175f526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b0381166106245760405163b06ebf3d60e01b815260040160405180910390fd5b5f611595611487565b54600160401b900460ff16919050565b6001600160a01b03811681146105fe575f80fd5b5f805f606084860312156115cb575f80fd5b83356115d6816115a5565b95602085013595506040909401359392505050565b5f602082840312156115fb575f80fd5b8135611606816115a5565b9392505050565b5f806040838503121561161e575f80fd5b50508035926020909101359150565b5f805f805f60a08688031215611641575f80fd5b853561164c816115a5565b9450602086013561165c816115a5565b9350604086013561166c816115a5565b94979396509394606081013594506080013592915050565b5f60208284031215611694575f80fd5b5035919050565b5f80604083850312156116ac575f80fd5b82356116b7816115a5565b946020939093013593505050565b5f805f805f805f60e0888a0312156116db575f80fd5b87356116e6816115a5565b9650602088013595506040880135945060608801359350608088013561170b816115a5565b925060a088013561171b816115a5565b915060c088013561172b816115a5565b8091505092959891949750929550565b5f5b8381101561175557818101518382015260200161173d565b50505f910152565b602081525f825180602084015261177b81604085016020870161173b565b601f01601f19169190910160400192915050565b5f80602083850312156117a0575f80fd5b823567ffffffffffffffff808211156117b7575f80fd5b818501915085601f8301126117ca575f80fd5b8135818111156117d8575f80fd5b8660208285010111156117e9575f80fd5b60209290920196919550909350505050565b5f806040838503121561180c575f80fd5b82359150602083013561181e816115a5565b809150509250929050565b5f805f6060848603121561183b575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611864575f80fd5b8151611606816115a5565b634e487b7160e01b5f52603260045260245ffd5b600181811c9082168061189757607f821691505b6020821081036118b557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b601f821115610ec8575f81815260208120601f850160051c810160208610156118f55750805b601f850160051c820191505b81811015610fbe57828155600101611901565b67ffffffffffffffff83111561192c5761192c6118bb565b6119408361193a8354611883565b836118cf565b5f601f841160018114611971575f851561195a5750838201355b5f19600387901b1c1916600186901b1783556119c9565b5f83815260209020601f19861690835b828110156119a15786850135825560209485019460019092019101611981565b50868210156119bd575f1960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b5f82516119e181846020870161173b565b919091019291505056fea26469706673582212202df1e848a1f5ab722381837becf21350d7b263991047d84e147826013b07e87264736f6c63430008140033",
    "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106101c6575f3560e01c8063805ef812116100fe578063c4d66de81161009e578063f2fde38b1161006e578063f2fde38b14610486578063f3458f1414610499578063f429f19b146104ac578063f6d1c271146104d4575f80fd5b8063c4d66de81461042a578063d11322d41461043d578063d6a5aad814610460578063e4b50cb814610473575f80fd5b8063968eb4b2116100d9578063968eb4b2146103a8578063b9467629146103bd578063b96b2004146103e5578063baa796bd14610417575f80fd5b8063805ef8121461037a57806388a365f41461038d5780638da5cb5b146103a0575f80fd5b80635af4730a116101695780636d46a1db116101445780636d46a1db14610311578063708b077314610337578063715018a61461036a57806378a8956714610372575f80fd5b80635af4730a1461026c5780635fd4b08a146102a2578063668151a7146102cd575f80fd5b80633b518bbd116101a45780633b518bbd146102225780634f64b2be146102355780635810c6ce1461024857806359dc735c1461025b575f80fd5b80630661722f146101ca57806313af4035146101df5780632ea77917146101f2575b5f80fd5b6101dd6101d83660046115b9565b6104e7565b005b6101dd6101ed3660046115eb565b6105ed565b61020561020036600461160d565b610601565b6040516001600160a01b0390911681526020015b60405180910390f35b61020561023036600461162d565b61062a565b610205610243366004611684565b6107ae565b6101dd61025636600461169b565b6107d6565b6002546001600160a01b0316610205565b61029461027a3660046115eb565b6001600160a01b03165f9081526006602052604090205490565b604051908152602001610219565b6102946102b03660046115eb565b6001600160a01b03165f9081526020819052604090206001015490565b6102fc6102db3660046115eb565b6001600160a01b03165f908152602081905260409020600181015490549091565b60408051928352602083019190915201610219565b6102fc61031f3660046115eb565b5f602081905290815260409020805460019091015482565b61020561034536600461160d565b5f9182526001602090815260408084209284529190529020546001600160a01b031690565b6101dd6108b6565b600354610294565b6101dd6103883660046115eb565b6108c9565b6101dd61039b3660046116c5565b6108f3565b610205610cfc565b6103b0610d2a565b604051610219919061175d565b6102056103cb366004611684565b5f908152600a60205260409020546001600160a01b031690565b6103f86103f3366004611684565b610dba565b604080516001600160a01b039093168352602083019190915201610219565b6101dd61042536600461178f565b610eb3565b6101dd6104383660046115eb565b610ecd565b61045061044b366004611684565b610fc6565b6040519015158152602001610219565b6101dd61046e3660046117fb565b610fe8565b610205610481366004611684565b611167565b6101dd6104943660046115eb565b611195565b6102056104a736600461160d565b6111c6565b6102946104ba3660046115eb565b6001600160a01b03165f9081526020819052604090205490565b6102946104e2366004611684565b6112b3565b60025433905f906001600160a01b03161561056e57600254604051634427673360e01b81526001600160a01b03848116600483015290911690634427673390602401606060405180830381865afa158015610544573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105689190611829565b50909150505b8061044560f41b14806105885750806420b236b4b760d91b145b806105ab5750610596610cfc565b6001600160a01b0316826001600160a01b0316145b6105b3575f80fd5b50505f918252600160209081526040808420928452919052902080546001600160a01b0319166001600160a01b0392909216919091179055565b6105f56112d2565b6105fe81611304565b50565b5f8281526005602090815260408083208484529091529020546001600160a01b03165b92915050565b335f9081526020819052604081205466159a58509bdb9960ca1b14806106685750610653610cfc565b6001600160a01b0316336001600160a01b0316145b610670575f80fd5b604051602481018490526001600160a01b0380871660448301528516606482015233608482015260a481018390525f9060c40160408051601f198184030181529190526020810180516001600160e01b031663b5ddca1d60e01b17905290505f6106da8883611374565b6040805180820182526b2b34b0a137b7322a37b5b2b760a11b815260208082018981526001600160a01b0385165f8181528084528581209451855591516001948501556003805494850181559091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90920180546001600160a01b03191683179055825188815266159a58509bdb9960ca1b91810191909152929350917f59bcd02033e203f8af464062ce742d11a3358b7b8fd7e996b91d74bee929d7e5910160405180910390a2979650505050505050565b600381815481106107bd575f80fd5b5f918252602090912001546001600160a01b0316905081565b336001600160a01b0316826001600160a01b031663525564216040518163ffffffff1660e01b8152600401602060405180830381865afa15801561081c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108409190611854565b6001600160a01b03161461089b5760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206973737565722063616e2073657420626f6e64207465726d00000060448201526064015b60405180910390fd5b6001600160a01b039091165f90815260066020526040902055565b6108be6112d2565b6108c75f611304565b565b6108d16112d2565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6108fb6112d2565b6001600160a01b0387166109425760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a59081d185c99d95d60921b6044820152606401610892565b6001600160a01b0383166109895760405162461bcd60e51b815260206004820152600e60248201526d496e76616c6964206f7261636c6560901b6044820152606401610892565b60608563109bdb9960e21b03610a115786856109a3610cfc565b604051602481019390935260448301919091526001600160a01b039081166064830152808616608483015280851660a4830152831660c482015260e40160408051601f198184030181529190526020810180516001600160e01b0316632274a71360e21b1790529050610a7d565b8685610a1b610cfc565b604051602481019390935260448301919091526001600160a01b0390811660648301528086166084830152831660a482015260c40160408051601f198184030181529190526020810180516001600160e01b0316630464997760e41b17905290505b5f610a888983611374565b90505f8763086c2e6d60e31b03610af057506040805189815260208101899052660acd2c286c2e6d60cb1b916001600160a01b038416917f49c2bdad6020b81dabafa7be5ba1d6b64dccc883841d724393e4a0242819bc3491015b60405180910390a2610b83565b8763109bdb9960e21b03610b4c5750604080518981526020810189905266159a58509bdb9960ca1b916001600160a01b038416917fdaec82b39e03602f1e7b1c03805276c348a0b9c50d3e83d4ae136f2bbb74137f9101610ae3565b60405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964207479706560a01b6044820152606401610892565b60408051808201825282815260208082018c81526001600160a01b0386165f9081528083528481209351845590516001909301929092558b8252600490522054158015610c0957506003541580610c095750816001600160a01b031660035f81548110610bf257610bf261186f565b5f918252602090912001546001600160a01b031614155b15610c6c57600380545f8b8152600460205260408120829055600182018355919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b038416179055610cbb565b5f89815260046020526040902054600380548492908110610c8f57610c8f61186f565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505b5f9081526005602090815260408083209883529790529590952080546001600160a01b0319166001600160a01b039096169590951790945550505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b606060078054610d3990611883565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6590611883565b8015610db05780601f10610d8757610100808354040283529160200191610db0565b820191905f5260205f20905b815481529060010190602001808311610d9357829003601f168201915b5050505050905090565b5f805f835f80600360045f8981526020019081526020015f205481548110610de457610de461186f565b5f9182526020808320909101546001600160a01b0316835282019290925260400190206001015403610e14575060015b8015610ea8575f84815260046020526040902054600380549091908110610e3d57610e3d61186f565b5f91825260208083209091015486835260049091526040822054600380546001600160a01b0390931693928392908110610e7957610e7961186f565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054909590945092505050565b505f93849350915050565b610ebb6112d2565b6007610ec8828483611914565b505050565b5f610ed6611487565b805490915060ff600160401b820416159067ffffffffffffffff165f81158015610efd5750825b90505f8267ffffffffffffffff166001148015610f195750303b155b905081158015610f27575080155b15610f455760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f6f57845460ff60401b1916600160401b1785555b610f78866114af565b8315610fbe57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f8181526009602052604081205415610fe157506001919050565b505f919050565b60025433905f906001600160a01b03161561106f57600254604051634427673360e01b81526001600160a01b03848116600483015290911690634427673390602401606060405180830381865afa158015611045573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110699190611829565b50909150505b8061044560f41b14806110895750806420b236b4b760d91b145b806110ac5750611097610cfc565b6001600160a01b0316826001600160a01b0316145b6110b4575f80fd5b5f84815260096020526040812054900361116157600880546001810182557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee301859055545f85815260096020908152604080832093909355600a81529082902080546001600160a01b0319166001600160a01b03871690811790915591518681527fd890f7eb25689077af6295272755a655abe2e036d2f1cb4422eb9e46eacd5e84910160405180910390a25b50505050565b5f6003828154811061117b5761117b61186f565b5f918252602090912001546001600160a01b031692915050565b61119d6112d2565b6001600160a01b0381166105f557604051631e4fbdf760e01b81525f6004820152602401610892565b5f825f80600360045f8881526020019081526020015f2054815481106111ee576111ee61186f565b5f9182526020808320909101546001600160a01b0316835282019290925260400190206001015414801561126957505f838152600460205260408120546003805485939283929181106112435761124361186f565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054145b156112ac575f838152600460205260409020546003805490919081106112915761129161186f565b5f918252602090912001546001600160a01b03169050610624565b505f610624565b600881815481106112c2575f80fd5b5f91825260209091200154905081565b336112db610cfc565b6001600160a01b0316146108c75760405163118cdaa760e01b8152336004820152602401610892565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f6001600160a01b0383166113c45760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b21034b6b83632b6b2b73a30ba34b7b760511b6044820152606401610892565b6113d6836001600160a01b03166114c0565b825190915015610624575f816001600160a01b0316836040516113f991906119d0565b5f604051808303815f865af19150503d805f8114611432576040519150601f19603f3d011682016040523d82523d5f602084013e611437565b606091505b50509050806114805760405162461bcd60e51b8152602060048201526015602482015274125b9a5d1a585b1a5e985d1a5bdb8819985a5b1959605a1b6044820152606401610892565b5092915050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610624565b6114b76114cb565b6105fe816114f0565b5f610624825f6114f8565b6114d361158c565b6108c757604051631afcd79f60e31b815260040160405180910390fd5b61119d6114cb565b5f814710156115235760405163cf47918160e01b815247600482015260248101839052604401610892565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c175f526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b0381166106245760405163b06ebf3d60e01b815260040160405180910390fd5b5f611595611487565b54600160401b900460ff16919050565b6001600160a01b03811681146105fe575f80fd5b5f805f606084860312156115cb575f80fd5b83356115d6816115a5565b95602085013595506040909401359392505050565b5f602082840312156115fb575f80fd5b8135611606816115a5565b9392505050565b5f806040838503121561161e575f80fd5b50508035926020909101359150565b5f805f805f60a08688031215611641575f80fd5b853561164c816115a5565b9450602086013561165c816115a5565b9350604086013561166c816115a5565b94979396509394606081013594506080013592915050565b5f60208284031215611694575f80fd5b5035919050565b5f80604083850312156116ac575f80fd5b82356116b7816115a5565b946020939093013593505050565b5f805f805f805f60e0888a0312156116db575f80fd5b87356116e6816115a5565b9650602088013595506040880135945060608801359350608088013561170b816115a5565b925060a088013561171b816115a5565b915060c088013561172b816115a5565b8091505092959891949750929550565b5f5b8381101561175557818101518382015260200161173d565b50505f910152565b602081525f825180602084015261177b81604085016020870161173b565b601f01601f19169190910160400192915050565b5f80602083850312156117a0575f80fd5b823567ffffffffffffffff808211156117b7575f80fd5b818501915085601f8301126117ca575f80fd5b8135818111156117d8575f80fd5b8660208285010111156117e9575f80fd5b60209290920196919550909350505050565b5f806040838503121561180c575f80fd5b82359150602083013561181e816115a5565b809150509250929050565b5f805f6060848603121561183b575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611864575f80fd5b8151611606816115a5565b634e487b7160e01b5f52603260045260245ffd5b600181811c9082168061189757607f821691505b6020821081036118b557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b601f821115610ec8575f81815260208120601f850160051c810160208610156118f55750805b601f850160051c820191505b81811015610fbe57828155600101611901565b67ffffffffffffffff83111561192c5761192c6118bb565b6119408361193a8354611883565b836118cf565b5f601f841160018114611971575f851561195a5750838201355b5f19600387901b1c1916600186901b1783556119c9565b5f83815260209020601f19861690835b828110156119a15786850135825560209485019460019092019101611981565b50868210156119bd575f1960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b5f82516119e181846020870161173b565b919091019291505056fea26469706673582212202df1e848a1f5ab722381837becf21350d7b263991047d84e147826013b07e87264736f6c63430008140033",
    "immutableReferences": {},
    "generatedSources": [],
    "deployedGeneratedSources": [
        {
            "ast": {
                "nodeType": "YulBlock",
                "src": "0:14272:44",
                "statements": [
                    {
                        "nodeType": "YulBlock",
                        "src": "6:3:44",
                        "statements": []
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "59:86:44",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "123:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "132:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "135:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "125:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "125:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "125:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "82:5:44"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "93:5:44"
                                                            },
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "108:3:44",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "113:1:44",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "104:3:44"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "104:11:44"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "117:1:44",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "100:3:44"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "100:19:44"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "and",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "89:3:44"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "89:31:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "79:2:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "79:42:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "72:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "72:50:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "69:70:44"
                                }
                            ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "48:5:44",
                                "type": ""
                            }
                        ],
                        "src": "14:131:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "254:279:44",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "300:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "309:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "312:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "302:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "302:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "302:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "275:7:44"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "284:9:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "271:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "271:23:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "296:2:44",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "267:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "267:32:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "264:52:44"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "325:36:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "351:9:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "338:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "338:23:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "329:5:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "395:5:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "370:24:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "370:31:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "370:31:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "410:15:44",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "420:5:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "410:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "434:42:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "461:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "472:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "457:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "457:18:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "444:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "444:32:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "434:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "485:42:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "512:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "523:2:44",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "508:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "508:18:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "495:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "495:32:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "485:6:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "204:9:44",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "215:7:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "227:6:44",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "235:6:44",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "243:6:44",
                                "type": ""
                            }
                        ],
                        "src": "150:383:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "608:177:44",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "654:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "663:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "666:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "656:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "656:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "656:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "629:7:44"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "638:9:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "625:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "625:23:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "650:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "621:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "621:32:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "618:52:44"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "679:36:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "705:9:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "692:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "692:23:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "683:5:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "749:5:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "724:24:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "724:31:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "724:31:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "764:15:44",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "774:5:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "764:6:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "574:9:44",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "585:7:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "597:6:44",
                                "type": ""
                            }
                        ],
                        "src": "538:247:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "877:161:44",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "923:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "932:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "935:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "925:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "925:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "925:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "898:7:44"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "907:9:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "894:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "894:23:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "919:2:44",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "890:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "890:32:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "887:52:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "948:33:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "971:9:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "958:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "958:23:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "948:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "990:42:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1017:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1028:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1013:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1013:18:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1000:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1000:32:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "990:6:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "835:9:44",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "846:7:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "858:6:44",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "866:6:44",
                                "type": ""
                            }
                        ],
                        "src": "790:248:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1144:102:44",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1154:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "1166:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1177:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1162:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1162:18:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "1154:4:44"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "1196:9:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1211:6:44"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1227:3:44",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1232:1:44",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shl",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1223:3:44"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1223:11:44"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1236:1:44",
                                                                "type": "",
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sub",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1219:3:44"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "1219:19:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1207:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1207:32:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "1189:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1189:51:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1189:51:44"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "1113:9:44",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "1124:6:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "1135:4:44",
                                "type": ""
                            }
                        ],
                        "src": "1043:203:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1389:529:44",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "1436:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "1445:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "1448:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1438:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1438:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "1438:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1410:7:44"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1419:9:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1406:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1406:23:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1431:3:44",
                                                "type": "",
                                                "value": "160"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "1402:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1402:33:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "1399:53:44"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1461:36:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "1487:9:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1474:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1474:23:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "1465:5:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1531:5:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "1506:24:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1506:31:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1506:31:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1546:15:44",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1556:5:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1546:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1570:47:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1602:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1613:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1598:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1598:18:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1585:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1585:32:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "value_1",
                                            "nodeType": "YulTypedName",
                                            "src": "1574:7:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "1651:7:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "1626:24:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1626:33:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1626:33:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1668:17:44",
                                    "value": {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1678:7:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1668:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1694:47:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1726:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1737:2:44",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1722:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1722:18:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1709:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1709:32:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "value_2",
                                            "nodeType": "YulTypedName",
                                            "src": "1698:7:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "1775:7:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "1750:24:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1750:33:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1750:33:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1792:17:44",
                                    "value": {
                                        "name": "value_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1802:7:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1792:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1818:42:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1845:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1856:2:44",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1841:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1841:18:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1828:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1828:32:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1818:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1869:43:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1896:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1907:3:44",
                                                        "type": "",
                                                        "value": "128"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1892:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1892:19:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1879:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1879:33:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value4",
                                            "nodeType": "YulIdentifier",
                                            "src": "1869:6:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_addresst_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "1323:9:44",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "1334:7:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "1346:6:44",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "1354:6:44",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "1362:6:44",
                                "type": ""
                            },
                            {
                                "name": "value3",
                                "nodeType": "YulTypedName",
                                "src": "1370:6:44",
                                "type": ""
                            },
                            {
                                "name": "value4",
                                "nodeType": "YulTypedName",
                                "src": "1378:6:44",
                                "type": ""
                            }
                        ],
                        "src": "1251:667:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1993:110:44",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "2039:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2048:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2051:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2041:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2041:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "2041:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2014:7:44"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2023:9:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2010:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2010:23:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2035:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "2006:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2006:32:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2003:52:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2064:33:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "2087:9:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2074:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2074:23:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "2064:6:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "1959:9:44",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "1970:7:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "1982:6:44",
                                "type": ""
                            }
                        ],
                        "src": "1923:180:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2195:228:44",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "2241:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2250:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2253:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2243:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2243:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "2243:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2216:7:44"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2225:9:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2212:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2212:23:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2237:2:44",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "2208:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2208:32:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2205:52:44"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2266:36:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "2292:9:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2279:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2279:23:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "2270:5:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "2336:5:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "2311:24:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2311:31:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2311:31:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2351:15:44",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2361:5:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "2351:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2375:42:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2402:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "2413:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2398:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2398:18:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2385:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2385:32:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2375:6:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "2153:9:44",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "2164:7:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "2176:6:44",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "2184:6:44",
                                "type": ""
                            }
                        ],
                        "src": "2108:315:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2529:76:44",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2539:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "2551:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2562:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2547:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2547:18:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "2539:4:44"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "2581:9:44"
                                            },
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "2592:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "2574:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2574:25:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2574:25:44"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "2498:9:44",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "2509:6:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "2520:4:44",
                                "type": ""
                            }
                        ],
                        "src": "2428:177:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2711:76:44",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2721:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "2733:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2744:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2729:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2729:18:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "2721:4:44"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "2763:9:44"
                                            },
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "2774:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "2756:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2756:25:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2756:25:44"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "2680:9:44",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "2691:6:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "2702:4:44",
                                "type": ""
                            }
                        ],
                        "src": "2610:177:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "2921:119:44",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2931:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "2943:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2954:2:44",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2939:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2939:18:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "2931:4:44"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "2973:9:44"
                                            },
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "2984:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "2966:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2966:25:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2966:25:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3011:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3022:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3007:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3007:18:44"
                                            },
                                            {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "3027:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "3000:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3000:34:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3000:34:44"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "2882:9:44",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "2893:6:44",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "2901:6:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "2912:4:44",
                                "type": ""
                            }
                        ],
                        "src": "2792:248:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3217:706:44",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "3264:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "3273:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "3276:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3266:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3266:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "3266:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3238:7:44"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3247:9:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3234:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3234:23:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3259:3:44",
                                                "type": "",
                                                "value": "224"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "3230:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3230:33:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "3227:53:44"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3289:36:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "3315:9:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3302:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3302:23:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "3293:5:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "3359:5:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "3334:24:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3334:31:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3334:31:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3374:15:44",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3384:5:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "3374:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3398:42:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3425:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3436:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3421:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3421:18:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3408:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3408:32:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "3398:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3449:42:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3476:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3487:2:44",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3472:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3472:18:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3459:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3459:32:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3449:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3500:42:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3527:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3538:2:44",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3523:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3523:18:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3510:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3510:32:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3500:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3551:48:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3583:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3594:3:44",
                                                        "type": "",
                                                        "value": "128"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3579:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3579:19:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3566:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3566:33:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "value_1",
                                            "nodeType": "YulTypedName",
                                            "src": "3555:7:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "3633:7:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "3608:24:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3608:33:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3608:33:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3650:17:44",
                                    "value": {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3660:7:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value4",
                                            "nodeType": "YulIdentifier",
                                            "src": "3650:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3676:48:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3708:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3719:3:44",
                                                        "type": "",
                                                        "value": "160"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3704:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3704:19:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3691:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3691:33:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "value_2",
                                            "nodeType": "YulTypedName",
                                            "src": "3680:7:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "3758:7:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "3733:24:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3733:33:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3733:33:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3775:17:44",
                                    "value": {
                                        "name": "value_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3785:7:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value5",
                                            "nodeType": "YulIdentifier",
                                            "src": "3775:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3801:48:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3833:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "3844:3:44",
                                                        "type": "",
                                                        "value": "192"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3829:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3829:19:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3816:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3816:33:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "value_3",
                                            "nodeType": "YulTypedName",
                                            "src": "3805:7:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "3883:7:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "3858:24:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3858:33:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3858:33:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3900:17:44",
                                    "value": {
                                        "name": "value_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "3910:7:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value6",
                                            "nodeType": "YulIdentifier",
                                            "src": "3900:6:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes32t_bytes32t_bytes32t_addresst_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "3135:9:44",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "3146:7:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "3158:6:44",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "3166:6:44",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "3174:6:44",
                                "type": ""
                            },
                            {
                                "name": "value3",
                                "nodeType": "YulTypedName",
                                "src": "3182:6:44",
                                "type": ""
                            },
                            {
                                "name": "value4",
                                "nodeType": "YulTypedName",
                                "src": "3190:6:44",
                                "type": ""
                            },
                            {
                                "name": "value5",
                                "nodeType": "YulTypedName",
                                "src": "3198:6:44",
                                "type": ""
                            },
                            {
                                "name": "value6",
                                "nodeType": "YulTypedName",
                                "src": "3206:6:44",
                                "type": ""
                            }
                        ],
                        "src": "3045:878:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "3994:184:44",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4004:10:44",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4013:1:44",
                                        "type": "",
                                        "value": "0"
                                    },
                                    "variables": [
                                        {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "4008:1:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "4073:63:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "dst",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4098:3:44"
                                                                },
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4103:1:44"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4094:3:44"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4094:11:44"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "src",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4117:3:44"
                                                                        },
                                                                        {
                                                                            "name": "i",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4122:1:44"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "add",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4113:3:44"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "4113:11:44"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "mload",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4107:5:44"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "4107:18:44"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4087:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4087:39:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "4087:39:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "4034:1:44"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "4037:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4031:2:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4031:13:44"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                        "nodeType": "YulBlock",
                                        "src": "4045:19:44",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "4047:15:44",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "i",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4056:1:44"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4059:2:44",
                                                            "type": "",
                                                            "value": "32"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4052:3:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4052:10:44"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "i",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4047:1:44"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "pre": {
                                        "nodeType": "YulBlock",
                                        "src": "4027:3:44",
                                        "statements": []
                                    },
                                    "src": "4023:113:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4156:3:44"
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4161:6:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4152:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4152:16:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4170:1:44",
                                                "type": "",
                                                "value": "0"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "4145:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4145:27:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4145:27:44"
                                }
                            ]
                        },
                        "name": "copy_memory_to_memory_with_cleanup",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "src",
                                "nodeType": "YulTypedName",
                                "src": "3972:3:44",
                                "type": ""
                            },
                            {
                                "name": "dst",
                                "nodeType": "YulTypedName",
                                "src": "3977:3:44",
                                "type": ""
                            },
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "3982:6:44",
                                "type": ""
                            }
                        ],
                        "src": "3928:250:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4304:275:44",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "4321:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4332:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "4314:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4314:21:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4314:21:44"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4344:27:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "4364:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4358:5:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4358:13:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulTypedName",
                                            "src": "4348:6:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4391:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "4402:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4387:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4387:18:44"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "4407:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "4380:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4380:34:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4380:34:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4462:6:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "4470:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4458:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4458:15:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4479:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "4490:2:44",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4475:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4475:18:44"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "4495:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "copy_memory_to_memory_with_cleanup",
                                            "nodeType": "YulIdentifier",
                                            "src": "4423:34:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4423:79:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4423:79:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "4511:62:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4527:9:44"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4546:6:44"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4554:2:44",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4542:3:44"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4542:15:44"
                                                            },
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4563:2:44",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "not",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4559:3:44"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4559:7:44"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "and",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4538:3:44"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4538:29:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4523:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4523:45:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4570:2:44",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4519:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4519:54:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "4511:4:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "4273:9:44",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "4284:6:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "4295:4:44",
                                "type": ""
                            }
                        ],
                        "src": "4183:396:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4654:110:44",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "4700:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4709:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4712:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4702:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4702:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "4702:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4675:7:44"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4684:9:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4671:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4671:23:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4696:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4667:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4667:32:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4664:52:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "4725:33:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "4748:9:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4735:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4735:23:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "4725:6:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "4620:9:44",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "4631:7:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "4643:6:44",
                                "type": ""
                            }
                        ],
                        "src": "4584:180:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4898:145:44",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "4908:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "4920:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4931:2:44",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4916:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4916:18:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "4908:4:44"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "4950:9:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4965:6:44"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4981:3:44",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4986:1:44",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shl",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4977:3:44"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4977:11:44"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "4990:1:44",
                                                                "type": "",
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sub",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4973:3:44"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4973:19:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4961:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4961:32:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "4943:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4943:51:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4943:51:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5014:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "5025:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5010:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5010:18:44"
                                            },
                                            {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "5030:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "5003:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5003:34:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5003:34:44"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "4859:9:44",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "4870:6:44",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "4878:6:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "4889:4:44",
                                "type": ""
                            }
                        ],
                        "src": "4769:274:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "5138:502:44",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "5184:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5193:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5196:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5186:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5186:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "5186:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5159:7:44"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5168:9:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5155:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5155:23:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5180:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "5151:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5151:32:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5148:52:44"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5209:37:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "5236:9:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "5223:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5223:23:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "offset",
                                            "nodeType": "YulTypedName",
                                            "src": "5213:6:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5255:28:44",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5265:18:44",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                    },
                                    "variables": [
                                        {
                                            "name": "_1",
                                            "nodeType": "YulTypedName",
                                            "src": "5259:2:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "5310:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5319:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5322:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5312:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5312:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "5312:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "5298:6:44"
                                            },
                                            {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "5306:2:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "5295:2:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5295:14:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5292:34:44"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5335:32:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "5349:9:44"
                                            },
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "5360:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5345:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5345:22:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "_2",
                                            "nodeType": "YulTypedName",
                                            "src": "5339:2:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "5415:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5424:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5427:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5417:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5417:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "5417:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "_2",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5394:2:44"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "5398:4:44",
                                                                "type": "",
                                                                "value": "0x1f"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5390:3:44"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5390:13:44"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5405:7:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "slt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5386:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5386:27:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "5379:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5379:35:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5376:55:44"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5440:30:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "5467:2:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "5454:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5454:16:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulTypedName",
                                            "src": "5444:6:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "5497:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5506:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5509:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5499:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5499:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "5499:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "5485:6:44"
                                            },
                                            {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "5493:2:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "5482:2:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5482:14:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5479:34:44"
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "5563:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5572:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5575:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5565:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5565:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "5565:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "_2",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5536:2:44"
                                                            },
                                                            {
                                                                "name": "length",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5540:6:44"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5532:3:44"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5532:15:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "5549:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5528:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5528:24:44"
                                            },
                                            {
                                                "name": "dataEnd",
                                                "nodeType": "YulIdentifier",
                                                "src": "5554:7:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "5525:2:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5525:37:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5522:57:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "5588:21:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "5602:2:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5606:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5598:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5598:11:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "5588:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "5618:16:44",
                                    "value": {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "5628:6:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "5618:6:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_string_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "5096:9:44",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "5107:7:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "5119:6:44",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "5127:6:44",
                                "type": ""
                            }
                        ],
                        "src": "5048:592:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "5740:92:44",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "5750:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "5762:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5773:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5758:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5758:18:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "5750:4:44"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "5792:9:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value0",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5817:6:44"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "iszero",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5810:6:44"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5810:14:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "iszero",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5803:6:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5803:22:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "5785:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5785:41:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5785:41:44"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "5709:9:44",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "5720:6:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "5731:4:44",
                                "type": ""
                            }
                        ],
                        "src": "5645:187:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "5924:228:44",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "5970:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5979:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "5982:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5972:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5972:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "5972:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5945:7:44"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5954:9:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5941:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5941:23:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5966:2:44",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "5937:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5937:32:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5934:52:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "5995:33:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "6018:9:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6005:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6005:23:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "5995:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "6037:45:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6067:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6078:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6063:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6063:18:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6050:12:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6050:32:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "6041:5:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "6116:5:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "6091:24:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6091:31:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6091:31:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6131:15:44",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6141:5:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "6131:6:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "5882:9:44",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "5893:7:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "5905:6:44",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "5913:6:44",
                                "type": ""
                            }
                        ],
                        "src": "5837:315:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6272:191:44",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "6318:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "6327:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "6330:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6320:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "6320:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "6320:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6293:7:44"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6302:9:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6289:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6289:23:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6314:2:44",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "6285:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6285:32:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "6282:52:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6343:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "6359:9:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6353:5:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6353:16:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "6343:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6378:35:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6398:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6409:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6394:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6394:18:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6388:5:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6388:25:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "6378:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6422:35:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6442:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6453:2:44",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6438:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6438:18:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6432:5:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6432:25:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "6422:6:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "6222:9:44",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "6233:7:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "6245:6:44",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "6253:6:44",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "6261:6:44",
                                "type": ""
                            }
                        ],
                        "src": "6157:306:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6681:315:44",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6691:27:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "6703:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6714:3:44",
                                                "type": "",
                                                "value": "160"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6699:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6699:19:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "6691:4:44"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "6734:9:44"
                                            },
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "6745:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6727:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6727:25:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6727:25:44"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "6761:29:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6779:3:44",
                                                        "type": "",
                                                        "value": "160"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6784:1:44",
                                                        "type": "",
                                                        "value": "1"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6775:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6775:11:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6788:1:44",
                                                "type": "",
                                                "value": "1"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "6771:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6771:19:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "_1",
                                            "nodeType": "YulTypedName",
                                            "src": "6765:2:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6810:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6821:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6806:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6806:18:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6830:6:44"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6838:2:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6826:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6826:15:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6799:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6799:43:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6799:43:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6862:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6873:2:44",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6858:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6858:18:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6882:6:44"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6890:2:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6878:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6878:15:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6851:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6851:43:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6851:43:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6914:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6925:2:44",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6910:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6910:18:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6934:6:44"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6942:2:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6930:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6930:15:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6903:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6903:43:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6903:43:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6966:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6977:3:44",
                                                        "type": "",
                                                        "value": "128"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6962:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6962:19:44"
                                            },
                                            {
                                                "name": "value4",
                                                "nodeType": "YulIdentifier",
                                                "src": "6983:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6955:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6955:35:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6955:35:44"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_address_t_bytes32__to_t_bytes32_t_address_t_address_t_address_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "6618:9:44",
                                "type": ""
                            },
                            {
                                "name": "value4",
                                "nodeType": "YulTypedName",
                                "src": "6629:6:44",
                                "type": ""
                            },
                            {
                                "name": "value3",
                                "nodeType": "YulTypedName",
                                "src": "6637:6:44",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "6645:6:44",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "6653:6:44",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "6661:6:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "6672:4:44",
                                "type": ""
                            }
                        ],
                        "src": "6468:528:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7193:122:44",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "7203:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "7215:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7226:2:44",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7211:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7211:18:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "7203:4:44"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "7245:9:44"
                                            },
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "7256:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7238:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7238:25:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7238:25:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7283:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7294:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7279:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7279:18:44"
                                            },
                                            {
                                                "hexValue": "566961426f6e64",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "7299:9:44",
                                                "type": "",
                                                "value": "ViaBond"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7272:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7272:37:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7272:37:44"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_stringliteral_52973aa3d1d0b9b2038bddf6fa0399136f1ab1c5f89b7edd623ff24875d0ed1f__to_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "7162:9:44",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "7173:6:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "7184:4:44",
                                "type": ""
                            }
                        ],
                        "src": "7001:314:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7401:170:44",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "7447:16:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "7456:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "7459:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7449:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "7449:12:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "7449:12:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7422:7:44"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7431:9:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7418:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7418:23:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7443:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "7414:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7414:32:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "7411:52:44"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "7472:29:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "7491:9:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "7485:5:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7485:16:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "7476:5:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "7535:5:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "7510:24:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7510:31:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7510:31:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "7550:15:44",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7560:5:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "7550:6:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "7367:9:44",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "7378:7:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "7390:6:44",
                                "type": ""
                            }
                        ],
                        "src": "7320:251:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7750:179:44",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "7767:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7778:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7760:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7760:21:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7760:21:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7801:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7812:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7797:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7797:18:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7817:2:44",
                                                "type": "",
                                                "value": "29"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7790:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7790:30:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7790:30:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7840:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7851:2:44",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7836:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7836:18:44"
                                            },
                                            {
                                                "hexValue": "4f6e6c79206973737565722063616e2073657420626f6e64207465726d",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "7856:31:44",
                                                "type": "",
                                                "value": "Only issuer can set bond term"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7829:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7829:59:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7829:59:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "7897:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "7909:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7920:2:44",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7905:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7905:18:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "7897:4:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7d0138d89de4c582a2d8d327af85600121a748f37a1184aad78fbd63a64c2cf4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "7727:9:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "7741:4:44",
                                "type": ""
                            }
                        ],
                        "src": "7576:353:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "8108:164:44",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8125:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8136:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8118:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8118:21:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8118:21:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8159:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8170:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8155:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8155:18:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8175:2:44",
                                                "type": "",
                                                "value": "14"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8148:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8148:30:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8148:30:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8198:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8209:2:44",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8194:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8194:18:44"
                                            },
                                            {
                                                "hexValue": "496e76616c696420746172676574",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "8214:16:44",
                                                "type": "",
                                                "value": "Invalid target"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8187:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8187:44:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8187:44:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "8240:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8252:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8263:2:44",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8248:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8248:18:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "8240:4:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_164f3d59e2a28679dc250ce99ebb52c1c471e60b45e8d5fed5845fd337ce17c2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "8085:9:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "8099:4:44",
                                "type": ""
                            }
                        ],
                        "src": "7934:338:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "8451:164:44",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8468:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8479:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8461:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8461:21:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8461:21:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8502:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8513:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8498:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8498:18:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8518:2:44",
                                                "type": "",
                                                "value": "14"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8491:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8491:30:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8491:30:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8541:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8552:2:44",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8537:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8537:18:44"
                                            },
                                            {
                                                "hexValue": "496e76616c6964206f7261636c65",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "8557:16:44",
                                                "type": "",
                                                "value": "Invalid oracle"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8530:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8530:44:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8530:44:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "8583:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8595:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8606:2:44",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8591:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8591:18:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "8583:4:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_de7fece8e30bf0f898e690a7b1eb43d878faf9b1918d3a8d53bf179a80024feb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "8428:9:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "8442:4:44",
                                "type": ""
                            }
                        ],
                        "src": "8277:338:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "8861:368:44",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "8871:27:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8883:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8894:3:44",
                                                "type": "",
                                                "value": "192"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8879:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8879:19:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "8871:4:44"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8914:9:44"
                                            },
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "8925:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8907:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8907:25:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8907:25:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8952:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8963:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8948:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8948:18:44"
                                            },
                                            {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "8968:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8941:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8941:34:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8941:34:44"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "8984:29:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9002:3:44",
                                                        "type": "",
                                                        "value": "160"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9007:1:44",
                                                        "type": "",
                                                        "value": "1"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8998:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8998:11:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9011:1:44",
                                                "type": "",
                                                "value": "1"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "8994:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8994:19:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "_1",
                                            "nodeType": "YulTypedName",
                                            "src": "8988:2:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9033:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9044:2:44",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9029:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9029:18:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9053:6:44"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9061:2:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9049:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9049:15:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9022:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9022:43:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9022:43:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9085:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9096:2:44",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9081:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9081:18:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9105:6:44"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9113:2:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9101:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9101:15:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9074:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9074:43:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9074:43:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9137:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9148:3:44",
                                                        "type": "",
                                                        "value": "128"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9133:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9133:19:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9158:6:44"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9166:2:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9154:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9154:15:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9126:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9126:44:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9126:44:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9190:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9201:3:44",
                                                        "type": "",
                                                        "value": "160"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9186:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9186:19:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9211:6:44"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9219:2:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9207:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9207:15:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9179:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9179:44:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9179:44:44"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_address_t_address_t_address_t_address__to_t_bytes32_t_bytes32_t_address_t_address_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "8790:9:44",
                                "type": ""
                            },
                            {
                                "name": "value5",
                                "nodeType": "YulTypedName",
                                "src": "8801:6:44",
                                "type": ""
                            },
                            {
                                "name": "value4",
                                "nodeType": "YulTypedName",
                                "src": "8809:6:44",
                                "type": ""
                            },
                            {
                                "name": "value3",
                                "nodeType": "YulTypedName",
                                "src": "8817:6:44",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "8825:6:44",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "8833:6:44",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "8841:6:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "8852:4:44",
                                "type": ""
                            }
                        ],
                        "src": "8620:609:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "9447:315:44",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "9457:27:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "9469:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9480:3:44",
                                                "type": "",
                                                "value": "160"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "9465:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9465:19:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "9457:4:44"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "9500:9:44"
                                            },
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "9511:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9493:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9493:25:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9493:25:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9538:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9549:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9534:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9534:18:44"
                                            },
                                            {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "9554:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9527:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9527:34:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9527:34:44"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "9570:29:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9588:3:44",
                                                        "type": "",
                                                        "value": "160"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9593:1:44",
                                                        "type": "",
                                                        "value": "1"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9584:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9584:11:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9597:1:44",
                                                "type": "",
                                                "value": "1"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "9580:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9580:19:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "_1",
                                            "nodeType": "YulTypedName",
                                            "src": "9574:2:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9619:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9630:2:44",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9615:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9615:18:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9639:6:44"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9647:2:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9635:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9635:15:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9608:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9608:43:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9608:43:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9671:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9682:2:44",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9667:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9667:18:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9691:6:44"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9699:2:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9687:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9687:15:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9660:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9660:43:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9660:43:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9723:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9734:3:44",
                                                        "type": "",
                                                        "value": "128"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9719:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9719:19:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9744:6:44"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9752:2:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9740:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9740:15:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9712:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9712:44:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9712:44:44"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_address_t_address_t_address__to_t_bytes32_t_bytes32_t_address_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "9384:9:44",
                                "type": ""
                            },
                            {
                                "name": "value4",
                                "nodeType": "YulTypedName",
                                "src": "9395:6:44",
                                "type": ""
                            },
                            {
                                "name": "value3",
                                "nodeType": "YulTypedName",
                                "src": "9403:6:44",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "9411:6:44",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "9419:6:44",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "9427:6:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "9438:4:44",
                                "type": ""
                            }
                        ],
                        "src": "9234:528:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "9941:162:44",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "9958:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9969:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9951:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9951:21:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9951:21:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9992:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10003:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9988:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9988:18:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10008:2:44",
                                                "type": "",
                                                "value": "12"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9981:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9981:30:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9981:30:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10031:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10042:2:44",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10027:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10027:18:44"
                                            },
                                            {
                                                "hexValue": "496e76616c69642074797065",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "10047:14:44",
                                                "type": "",
                                                "value": "Invalid type"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10020:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10020:42:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10020:42:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "10071:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "10083:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10094:2:44",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "10079:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10079:18:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "10071:4:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ddd8d792d83efdc10800f57c64a85c0cb5f2fa0097bd509ab3dd1cc3fbb027f4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "9918:9:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "9932:4:44",
                                "type": ""
                            }
                        ],
                        "src": "9767:336:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "10140:95:44",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10157:1:44",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10164:3:44",
                                                        "type": "",
                                                        "value": "224"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10169:10:44",
                                                        "type": "",
                                                        "value": "0x4e487b71"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10160:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10160:20:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10150:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10150:31:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10150:31:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10197:1:44",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10200:4:44",
                                                "type": "",
                                                "value": "0x32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10190:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10190:15:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10190:15:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10221:1:44",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10224:4:44",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "10214:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10214:15:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10214:15:44"
                                }
                            ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "10108:127:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "10295:325:44",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "10305:22:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10319:1:44",
                                                "type": "",
                                                "value": "1"
                                            },
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "10322:4:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "10315:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10315:12:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "10305:6:44"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "10336:38:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "data",
                                                "nodeType": "YulIdentifier",
                                                "src": "10366:4:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10372:1:44",
                                                "type": "",
                                                "value": "1"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "10362:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10362:12:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "outOfPlaceEncoding",
                                            "nodeType": "YulTypedName",
                                            "src": "10340:18:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "10413:31:44",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "10415:27:44",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "length",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "10429:6:44"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "10437:4:44",
                                                            "type": "",
                                                            "value": "0x7f"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "and",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10425:3:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "10425:17:44"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10415:6:44"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "outOfPlaceEncoding",
                                                "nodeType": "YulIdentifier",
                                                "src": "10393:18:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "10386:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10386:26:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "10383:61:44"
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "10503:111:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "10524:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "10531:3:44",
                                                                    "type": "",
                                                                    "value": "224"
                                                                },
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "10536:10:44",
                                                                    "type": "",
                                                                    "value": "0x4e487b71"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "shl",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10527:3:44"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "10527:20:44"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10517:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "10517:31:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "10517:31:44"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "10568:1:44",
                                                            "type": "",
                                                            "value": "4"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "10571:4:44",
                                                            "type": "",
                                                            "value": "0x22"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10561:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "10561:15:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "10561:15:44"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "10596:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "10599:4:44",
                                                            "type": "",
                                                            "value": "0x24"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10589:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "10589:15:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "10589:15:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "outOfPlaceEncoding",
                                                "nodeType": "YulIdentifier",
                                                "src": "10459:18:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10482:6:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10490:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "lt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10479:2:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10479:14:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "eq",
                                            "nodeType": "YulIdentifier",
                                            "src": "10456:2:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10456:38:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "10453:161:44"
                                }
                            ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "data",
                                "nodeType": "YulTypedName",
                                "src": "10275:4:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "length",
                                "nodeType": "YulTypedName",
                                "src": "10284:6:44",
                                "type": ""
                            }
                        ],
                        "src": "10240:380:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "10657:95:44",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10674:1:44",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10681:3:44",
                                                        "type": "",
                                                        "value": "224"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10686:10:44",
                                                        "type": "",
                                                        "value": "0x4e487b71"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10677:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10677:20:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10667:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10667:31:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10667:31:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10714:1:44",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10717:4:44",
                                                "type": "",
                                                "value": "0x41"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10707:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10707:15:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10707:15:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10738:1:44",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10741:4:44",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "10731:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10731:15:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10731:15:44"
                                }
                            ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "10625:127:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "10813:65:44",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10830:1:44",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "name": "ptr",
                                                "nodeType": "YulIdentifier",
                                                "src": "10833:3:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10823:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10823:14:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10823:14:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "10846:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10864:1:44",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10867:4:44",
                                                "type": "",
                                                "value": "0x20"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "keccak256",
                                            "nodeType": "YulIdentifier",
                                            "src": "10854:9:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10854:18:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "data",
                                            "nodeType": "YulIdentifier",
                                            "src": "10846:4:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "array_dataslot_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "ptr",
                                "nodeType": "YulTypedName",
                                "src": "10796:3:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "data",
                                "nodeType": "YulTypedName",
                                "src": "10804:4:44",
                                "type": ""
                            }
                        ],
                        "src": "10757:121:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "10964:464:44",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "10997:425:44",
                                        "statements": [
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "11011:11:44",
                                                "value": {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "11021:1:44",
                                                    "type": "",
                                                    "value": "0"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11015:2:44",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "_1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "11042:2:44"
                                                        },
                                                        {
                                                            "name": "array",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "11046:5:44"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11035:6:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "11035:17:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "11035:17:44"
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "11065:31:44",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "_1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "11087:2:44"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "11091:4:44",
                                                            "type": "",
                                                            "value": "0x20"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "keccak256",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11077:9:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "11077:19:44"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "data",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11069:4:44",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "11109:57:44",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "data",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "11132:4:44"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "11142:1:44",
                                                                    "type": "",
                                                                    "value": "5"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "startIndex",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11149:10:44"
                                                                        },
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "11161:2:44",
                                                                            "type": "",
                                                                            "value": "31"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "add",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11145:3:44"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "11145:19:44"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "shr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "11138:3:44"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "11138:27:44"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11128:3:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "11128:38:44"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "deleteStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11113:11:44",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11203:23:44",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11205:19:44",
                                                            "value": {
                                                                "name": "data",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "11220:4:44"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "deleteStart",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11205:11:44"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "name": "startIndex",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "11185:10:44"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "11197:4:44",
                                                            "type": "",
                                                            "value": "0x20"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "lt",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11182:2:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "11182:20:44"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "11179:47:44"
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "11239:41:44",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "data",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "11253:4:44"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "11263:1:44",
                                                                    "type": "",
                                                                    "value": "5"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "len",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11270:3:44"
                                                                        },
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "11275:2:44",
                                                                            "type": "",
                                                                            "value": "31"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "add",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11266:3:44"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "11266:12:44"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "shr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "11259:3:44"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "11259:20:44"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11249:3:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "11249:31:44"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "_2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11243:2:44",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "11293:24:44",
                                                "value": {
                                                    "name": "deleteStart",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11306:11:44"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "start",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11297:5:44",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11391:21:44",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "start",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11400:5:44"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11407:2:44"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11393:6:44"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11393:17:44"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11393:17:44"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "name": "start",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "11341:5:44"
                                                        },
                                                        {
                                                            "name": "_2",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "11348:2:44"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "lt",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11338:2:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "11338:13:44"
                                                },
                                                "nodeType": "YulForLoop",
                                                "post": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11352:26:44",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11354:22:44",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "start",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11367:5:44"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11374:1:44",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11363:3:44"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11363:13:44"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "start",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11354:5:44"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "pre": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11334:3:44",
                                                    "statements": []
                                                },
                                                "src": "11330:82:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "len",
                                                "nodeType": "YulIdentifier",
                                                "src": "10980:3:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10985:2:44",
                                                "type": "",
                                                "value": "31"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "10977:2:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10977:11:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "10974:448:44"
                                }
                            ]
                        },
                        "name": "clean_up_bytearray_end_slots_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "array",
                                "nodeType": "YulTypedName",
                                "src": "10936:5:44",
                                "type": ""
                            },
                            {
                                "name": "len",
                                "nodeType": "YulTypedName",
                                "src": "10943:3:44",
                                "type": ""
                            },
                            {
                                "name": "startIndex",
                                "nodeType": "YulTypedName",
                                "src": "10948:10:44",
                                "type": ""
                            }
                        ],
                        "src": "10883:545:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "11518:81:44",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11528:65:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "data",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11543:4:44"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11561:1:44",
                                                                                "type": "",
                                                                                "value": "3"
                                                                            },
                                                                            {
                                                                                "name": "len",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11564:3:44"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11557:3:44"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11557:11:44"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11574:1:44",
                                                                                "type": "",
                                                                                "value": "0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11570:3:44"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11570:6:44"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11553:3:44"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11553:24:44"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "not",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "11549:3:44"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "11549:29:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11539:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11539:40:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "11585:1:44",
                                                        "type": "",
                                                        "value": "1"
                                                    },
                                                    {
                                                        "name": "len",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11588:3:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11581:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11581:11:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "or",
                                            "nodeType": "YulIdentifier",
                                            "src": "11536:2:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11536:57:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "used",
                                            "nodeType": "YulIdentifier",
                                            "src": "11528:4:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "data",
                                "nodeType": "YulTypedName",
                                "src": "11495:4:44",
                                "type": ""
                            },
                            {
                                "name": "len",
                                "nodeType": "YulTypedName",
                                "src": "11501:3:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "used",
                                "nodeType": "YulTypedName",
                                "src": "11509:4:44",
                                "type": ""
                            }
                        ],
                        "src": "11433:166:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "11707:1103:44",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "11748:22:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x41",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11750:16:44"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "11750:18:44"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "11750:18:44"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "len",
                                                "nodeType": "YulIdentifier",
                                                "src": "11723:3:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11728:18:44",
                                                "type": "",
                                                "value": "0xffffffffffffffff"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "11720:2:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11720:27:44"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "11717:53:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "slot",
                                                "nodeType": "YulIdentifier",
                                                "src": "11823:4:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "slot",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "11861:4:44"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sload",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "11855:5:44"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "11855:11:44"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "extract_byte_array_length",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11829:25:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11829:38:44"
                                            },
                                            {
                                                "name": "len",
                                                "nodeType": "YulIdentifier",
                                                "src": "11869:3:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "clean_up_bytearray_end_slots_string_storage",
                                            "nodeType": "YulIdentifier",
                                            "src": "11779:43:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11779:94:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11779:94:44"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11882:18:44",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11899:1:44",
                                        "type": "",
                                        "value": "0"
                                    },
                                    "variables": [
                                        {
                                            "name": "srcOffset",
                                            "nodeType": "YulTypedName",
                                            "src": "11886:9:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "cases": [
                                        {
                                            "body": {
                                                "nodeType": "YulBlock",
                                                "src": "11943:609:44",
                                                "statements": [
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "11957:32:44",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "len",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11976:3:44"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "11985:2:44",
                                                                            "type": "",
                                                                            "value": "31"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "not",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11981:3:44"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "11981:7:44"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "and",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "11972:3:44"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "11972:17:44"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "loopEnd",
                                                                "nodeType": "YulTypedName",
                                                                "src": "11961:7:44",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "12002:49:44",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "slot",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12046:4:44"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "array_dataslot_string_storage",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12016:29:44"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "12016:35:44"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "dstPtr",
                                                                "nodeType": "YulTypedName",
                                                                "src": "12006:6:44",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "12064:18:44",
                                                        "value": {
                                                            "name": "srcOffset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12073:9:44"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "i",
                                                                "nodeType": "YulTypedName",
                                                                "src": "12068:1:44",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "body": {
                                                            "nodeType": "YulBlock",
                                                            "src": "12152:172:44",
                                                            "statements": [
                                                                {
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dstPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12177:6:44"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "src",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "12202:3:44"
                                                                                            },
                                                                                            {
                                                                                                "name": "srcOffset",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "12207:9:44"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "12198:3:44"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "12198:19:44"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "calldataload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "12185:12:44"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "12185:33:44"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sstore",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12170:6:44"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12170:49:44"
                                                                    },
                                                                    "nodeType": "YulExpressionStatement",
                                                                    "src": "12170:49:44"
                                                                },
                                                                {
                                                                    "nodeType": "YulAssignment",
                                                                    "src": "12236:24:44",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dstPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12250:6:44"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12258:1:44",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12246:3:44"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12246:14:44"
                                                                    },
                                                                    "variableNames": [
                                                                        {
                                                                            "name": "dstPtr",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12236:6:44"
                                                                        }
                                                                    ]
                                                                },
                                                                {
                                                                    "nodeType": "YulAssignment",
                                                                    "src": "12277:33:44",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "srcOffset",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12294:9:44"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12305:4:44",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12290:3:44"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12290:20:44"
                                                                    },
                                                                    "variableNames": [
                                                                        {
                                                                            "name": "srcOffset",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12277:9:44"
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        },
                                                        "condition": {
                                                            "arguments": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12106:1:44"
                                                                },
                                                                {
                                                                    "name": "loopEnd",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12109:7:44"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "lt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12103:2:44"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "12103:14:44"
                                                        },
                                                        "nodeType": "YulForLoop",
                                                        "post": {
                                                            "nodeType": "YulBlock",
                                                            "src": "12118:21:44",
                                                            "statements": [
                                                                {
                                                                    "nodeType": "YulAssignment",
                                                                    "src": "12120:17:44",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12129:1:44"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12132:4:44",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12125:3:44"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12125:12:44"
                                                                    },
                                                                    "variableNames": [
                                                                        {
                                                                            "name": "i",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12120:1:44"
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        },
                                                        "pre": {
                                                            "nodeType": "YulBlock",
                                                            "src": "12099:3:44",
                                                            "statements": []
                                                        },
                                                        "src": "12095:229:44"
                                                    },
                                                    {
                                                        "body": {
                                                            "nodeType": "YulBlock",
                                                            "src": "12369:127:44",
                                                            "statements": [
                                                                {
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dstPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12394:6:44"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "name": "src",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "12423:3:44"
                                                                                                    },
                                                                                                    {
                                                                                                        "name": "srcOffset",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "12428:9:44"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "add",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "12419:3:44"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "12419:19:44"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "calldataload",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "12406:12:44"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "12406:33:44"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "arguments": [
                                                                                                            {
                                                                                                                "arguments": [
                                                                                                                    {
                                                                                                                        "kind": "number",
                                                                                                                        "nodeType": "YulLiteral",
                                                                                                                        "src": "12457:1:44",
                                                                                                                        "type": "",
                                                                                                                        "value": "3"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "name": "len",
                                                                                                                        "nodeType": "YulIdentifier",
                                                                                                                        "src": "12460:3:44"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "functionName": {
                                                                                                                    "name": "shl",
                                                                                                                    "nodeType": "YulIdentifier",
                                                                                                                    "src": "12453:3:44"
                                                                                                                },
                                                                                                                "nodeType": "YulFunctionCall",
                                                                                                                "src": "12453:11:44"
                                                                                                            },
                                                                                                            {
                                                                                                                "kind": "number",
                                                                                                                "nodeType": "YulLiteral",
                                                                                                                "src": "12466:3:44",
                                                                                                                "type": "",
                                                                                                                "value": "248"
                                                                                                            }
                                                                                                        ],
                                                                                                        "functionName": {
                                                                                                            "name": "and",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "12449:3:44"
                                                                                                        },
                                                                                                        "nodeType": "YulFunctionCall",
                                                                                                        "src": "12449:21:44"
                                                                                                    },
                                                                                                    {
                                                                                                        "arguments": [
                                                                                                            {
                                                                                                                "kind": "number",
                                                                                                                "nodeType": "YulLiteral",
                                                                                                                "src": "12476:1:44",
                                                                                                                "type": "",
                                                                                                                "value": "0"
                                                                                                            }
                                                                                                        ],
                                                                                                        "functionName": {
                                                                                                            "name": "not",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "12472:3:44"
                                                                                                        },
                                                                                                        "nodeType": "YulFunctionCall",
                                                                                                        "src": "12472:6:44"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shr",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "12445:3:44"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "12445:34:44"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "not",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "12441:3:44"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "12441:39:44"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "12402:3:44"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "12402:79:44"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sstore",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12387:6:44"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12387:95:44"
                                                                    },
                                                                    "nodeType": "YulExpressionStatement",
                                                                    "src": "12387:95:44"
                                                                }
                                                            ]
                                                        },
                                                        "condition": {
                                                            "arguments": [
                                                                {
                                                                    "name": "loopEnd",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12343:7:44"
                                                                },
                                                                {
                                                                    "name": "len",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12352:3:44"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "lt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12340:2:44"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "12340:16:44"
                                                        },
                                                        "nodeType": "YulIf",
                                                        "src": "12337:159:44"
                                                    },
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "name": "slot",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12516:4:44"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12530:1:44",
                                                                                    "type": "",
                                                                                    "value": "1"
                                                                                },
                                                                                {
                                                                                    "name": "len",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "12533:3:44"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "shl",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12526:3:44"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "12526:11:44"
                                                                        },
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "12539:1:44",
                                                                            "type": "",
                                                                            "value": "1"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "add",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12522:3:44"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "12522:19:44"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "sstore",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12509:6:44"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "12509:33:44"
                                                        },
                                                        "nodeType": "YulExpressionStatement",
                                                        "src": "12509:33:44"
                                                    }
                                                ]
                                            },
                                            "nodeType": "YulCase",
                                            "src": "11936:616:44",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11941:1:44",
                                                "type": "",
                                                "value": "1"
                                            }
                                        },
                                        {
                                            "body": {
                                                "nodeType": "YulBlock",
                                                "src": "12569:235:44",
                                                "statements": [
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "12583:14:44",
                                                        "value": {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "12596:1:44",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulTypedName",
                                                                "src": "12587:5:44",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "body": {
                                                            "nodeType": "YulBlock",
                                                            "src": "12629:74:44",
                                                            "statements": [
                                                                {
                                                                    "nodeType": "YulAssignment",
                                                                    "src": "12647:42:44",
                                                                    "value": {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "src",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "12673:3:44"
                                                                                    },
                                                                                    {
                                                                                        "name": "srcOffset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "12678:9:44"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "12669:3:44"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "12669:19:44"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "calldataload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12656:12:44"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12656:33:44"
                                                                    },
                                                                    "variableNames": [
                                                                        {
                                                                            "name": "value",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12647:5:44"
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        },
                                                        "condition": {
                                                            "name": "len",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12613:3:44"
                                                        },
                                                        "nodeType": "YulIf",
                                                        "src": "12610:93:44"
                                                    },
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "name": "slot",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12723:4:44"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "value",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12782:5:44"
                                                                        },
                                                                        {
                                                                            "name": "len",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12789:3:44"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12729:52:44"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "12729:64:44"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "sstore",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12716:6:44"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "12716:78:44"
                                                        },
                                                        "nodeType": "YulExpressionStatement",
                                                        "src": "12716:78:44"
                                                    }
                                                ]
                                            },
                                            "nodeType": "YulCase",
                                            "src": "12561:243:44",
                                            "value": "default"
                                        }
                                    ],
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "len",
                                                "nodeType": "YulIdentifier",
                                                "src": "11919:3:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11924:2:44",
                                                "type": "",
                                                "value": "31"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "11916:2:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11916:11:44"
                                    },
                                    "nodeType": "YulSwitch",
                                    "src": "11909:895:44"
                                }
                            ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "slot",
                                "nodeType": "YulTypedName",
                                "src": "11687:4:44",
                                "type": ""
                            },
                            {
                                "name": "src",
                                "nodeType": "YulTypedName",
                                "src": "11693:3:44",
                                "type": ""
                            },
                            {
                                "name": "len",
                                "nodeType": "YulTypedName",
                                "src": "11698:3:44",
                                "type": ""
                            }
                        ],
                        "src": "11604:1206:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "12923:101:44",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "12933:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "12945:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12956:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "12941:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12941:18:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "12933:4:44"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "12975:9:44"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12990:6:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "12998:18:44",
                                                        "type": "",
                                                        "value": "0xffffffffffffffff"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12986:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12986:31:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "12968:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12968:50:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12968:50:44"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "12892:9:44",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "12903:6:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "12914:4:44",
                                "type": ""
                            }
                        ],
                        "src": "12815:209:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "13203:172:44",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "13220:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13231:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "13213:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13213:21:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13213:21:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13254:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "13265:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13250:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13250:18:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13270:2:44",
                                                "type": "",
                                                "value": "22"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "13243:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13243:30:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13243:30:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13293:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "13304:2:44",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13289:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13289:18:44"
                                            },
                                            {
                                                "hexValue": "496e76616c696420696d706c656d656e746174696f6e",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "13309:24:44",
                                                "type": "",
                                                "value": "Invalid implementation"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "13282:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13282:52:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13282:52:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13343:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "13355:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13366:2:44",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "13351:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13351:18:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "13343:4:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_26b47a002132cea0a925aef4dbf669c486d2d4b7979ed0c176a2e4f058e38c3c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "13180:9:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "13194:4:44",
                                "type": ""
                            }
                        ],
                        "src": "13029:346:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "13517:150:44",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "13527:27:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "13547:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "13541:5:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13541:13:44"
                                    },
                                    "variables": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulTypedName",
                                            "src": "13531:6:44",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13602:6:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "13610:4:44",
                                                        "type": "",
                                                        "value": "0x20"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13598:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13598:17:44"
                                            },
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "13617:3:44"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "13622:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "copy_memory_to_memory_with_cleanup",
                                            "nodeType": "YulIdentifier",
                                            "src": "13563:34:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13563:66:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13563:66:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13638:23:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "13649:3:44"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "13654:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "13645:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13645:16:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "end",
                                            "nodeType": "YulIdentifier",
                                            "src": "13638:3:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "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": "13493:3:44",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "13498:6:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "end",
                                "nodeType": "YulTypedName",
                                "src": "13509:3:44",
                                "type": ""
                            }
                        ],
                        "src": "13380:287:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "13846:171:44",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "13863:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13874:2:44",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "13856:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13856:21:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13856:21:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13897:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "13908:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13893:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13893:18:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13913:2:44",
                                                "type": "",
                                                "value": "21"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "13886:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13886:30:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13886:30:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13936:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "13947:2:44",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13932:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13932:18:44"
                                            },
                                            {
                                                "hexValue": "496e697469616c697a6174696f6e206661696c6564",
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "13952:23:44",
                                                "type": "",
                                                "value": "Initialization failed"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "13925:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13925:51:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13925:51:44"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13985:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "13997:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14008:2:44",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "13993:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13993:18:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "13985:4:44"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0ced64e7a7e72856969cefe00640aa7f13f8db705f9748f7d3003a20bc61daa4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "13823:9:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "13837:4:44",
                                "type": ""
                            }
                        ],
                        "src": "13672:345:44"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "14151:119:44",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "14161:26:44",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "14173:9:44"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14184:2:44",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "14169:3:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14169:18:44"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "14161:4:44"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "14203:9:44"
                                            },
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "14214:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "14196:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14196:25:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14196:25:44"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14241:9:44"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "14252:2:44",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14237:3:44"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14237:18:44"
                                            },
                                            {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "14257:6:44"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "14230:6:44"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14230:34:44"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14230:34:44"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "14112:9:44",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "14123:6:44",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "14131:6:44",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "14142:4:44",
                                "type": ""
                            }
                        ],
                        "src": "14022:248:44"
                    }
                ]
            },
            "contents": "{\n    { }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bytes32t_bytes32(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        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_addresst_addresst_addresst_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_address(value_2)\n        value2 := value_2\n        value3 := calldataload(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\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_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_addresst_bytes32t_bytes32t_bytes32t_addresst_addresst_address(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let value_1 := calldataload(add(headStart, 128))\n        validator_revert_address(value_1)\n        value4 := value_1\n        let value_2 := calldataload(add(headStart, 160))\n        validator_revert_address(value_2)\n        value5 := value_2\n        let value_3 := calldataload(add(headStart, 192))\n        validator_revert_address(value_3)\n        value6 := value_3\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_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_string_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n        value2 := mload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_address_t_bytes32__to_t_bytes32_t_address_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_bytes32_t_stringliteral_52973aa3d1d0b9b2038bddf6fa0399136f1ab1c5f89b7edd623ff24875d0ed1f__to_t_bytes32_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), \"ViaBond\")\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_7d0138d89de4c582a2d8d327af85600121a748f37a1184aad78fbd63a64c2cf4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Only issuer can set bond term\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_164f3d59e2a28679dc250ce99ebb52c1c471e60b45e8d5fed5845fd337ce17c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Invalid target\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_de7fece8e30bf0f898e690a7b1eb43d878faf9b1918d3a8d53bf179a80024feb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Invalid oracle\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_address_t_address_t_address_t_address__to_t_bytes32_t_bytes32_t_address_t_address_t_address_t_address__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, _1))\n        mstore(add(headStart, 160), and(value5, _1))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_address_t_address_t_address__to_t_bytes32_t_bytes32_t_address_t_address_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, _1))\n    }\n    function abi_encode_tuple_t_stringliteral_ddd8d792d83efdc10800f57c64a85c0cb5f2fa0097bd509ab3dd1cc3fbb027f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"Invalid type\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    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 panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_calldata_ptr_to_t_string_storage(slot, src, len)\n    {\n        if gt(len, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), len)\n        let srcOffset := 0\n        switch gt(len, 31)\n        case 1 {\n            let loopEnd := and(len, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := srcOffset\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, calldataload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, len)\n            {\n                sstore(dstPtr, and(calldataload(add(src, srcOffset)), not(shr(and(shl(3, len), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, len), 1))\n        }\n        default {\n            let value := 0\n            if len\n            {\n                value := calldataload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, len))\n        }\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_26b47a002132cea0a925aef4dbf669c486d2d4b7979ed0c176a2e4f058e38c3c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"Invalid implementation\")\n        tail := add(headStart, 96)\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_0ced64e7a7e72856969cefe00640aa7f13f8db705f9748f7d3003a20bc61daa4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"Initialization failed\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n}",
            "id": 44,
            "language": "Yul",
            "name": "#utility.yul"
        }
    ],
    "sourceMap": "471:8150:26:-:0;;;;;;;;;;;;;;;;;;;",
    "deployedSourceMap": "471:8150:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7297:186;;;;;;:::i;:::-;;:::i;:::-;;2288:100;;;;;;:::i;:::-;;:::i;3486:142::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1207:32:44;;;1189:51;;1177:2;1162:18;3486:142:26;;;;;;;;6632:657;;;;;;:::i;:::-;;:::i;986:23::-;;;;;;:::i;:::-;;:::i;7491:205::-;;;;;;:::i;:::-;;:::i;4316:83::-;4385:6;;-1:-1:-1;;;;;4385:6:26;4316:83;;4407:113;;;;;;:::i;:::-;-1:-1:-1;;;;;4496:16:26;4470:7;4496:16;;;:4;:16;;;;;;;4407:113;;;;2574:25:44;;;2562:2;2547:18;4407:113:26;2428:177:44;2609:116:26;;;;;;:::i;:::-;-1:-1:-1;;;;;2695:17:26;2668:7;2695:17;;;;;;;;;;:22;;;;2609:116;2862:162;;;;;;:::i;:::-;-1:-1:-1;;;;;2964:17:26;2928:7;2964:17;;;;;;;;;;:22;;;;2988:27;;2964:22;;2862:162;;;;;2966:25:44;;;3022:2;3007:18;;3000:34;;;;2939:18;2862:162:26;2792:248:44;740:36:26;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4096:163;;;;;;:::i;:::-;4186:7;4212:27;;;:13;:27;;;;;;;;:39;;;;;;;;;-1:-1:-1;;;;;4212:39:26;;4096:163;3176:101:4;;;:::i;2396:103:26:-;2478:6;:13;2396:103;;7704:97;;;;;;:::i;:::-;;:::i;5056:1543::-;;;;;;:::i;:::-;;:::i;2462:144:4:-;;;:::i;4528:103:26:-;;;:::i;:::-;;;;;;;:::i;8489:127::-;;;;;;:::i;:::-;8556:7;8582:26;;;:15;:26;;;;;;-1:-1:-1;;;;;8582:26:26;;8489:127;3698:390;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;4961:32:44;;;4943:51;;5025:2;5010:18;;5003:34;;;;4916:18;3698:390:26;4769:274:44;7809:106:26;;;;;;:::i;:::-;;:::i;2183:97::-;;;;;;:::i;:::-;;:::i;8290:191::-;;;;;;:::i;:::-;;:::i;:::-;;;5810:14:44;;5803:22;5785:41;;5773:2;5758:18;8290:191:26;5645:187:44;7923:359:26;;;;;;:::i;:::-;;:::i;2507:94::-;;;;;;:::i;:::-;;:::i;3426:215:4:-;;;;;;:::i;:::-;;:::i;3032:371:26:-;;;;;;:::i;:::-;;:::i;2733:121::-;;;;;;:::i;:::-;-1:-1:-1;;;;;2819:17:26;2792:7;2819:17;;;;;;;;;;:27;;2733:121;1436:27;;;;;;:::i;:::-;;:::i;7297:186::-;2003:6;;7394:10;;1972:12;;-1:-1:-1;;;;;2003:6:26;:20;2000:89;;2066:6;;2051:38;;-1:-1:-1;;;2051:38:26;;-1:-1:-1;;;;;1207:32:44;;;2051:38:26;;;1189:51:44;2066:6:26;;;;2051:30;;1162:18:44;;2051:38:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2038:51:26;;-1:-1:-1;;2000:89:26;2108:4;-1:-1:-1;;;2108:10:26;:27;;;;2122:4;-1:-1:-1;;;2122:13:26;2108:27;:46;;;;2147:7;:5;:7::i;:::-;-1:-1:-1;;;;;2139:15:26;:6;-1:-1:-1;;;;;2139:15:26;;2108:46;2100:55;;;;;;-1:-1:-1;;7426:28:26::1;::::0;;;:13:::1;:28;::::0;;;;;;;:41;;;;;;;;:49;;-1:-1:-1;;;;;;7426:49:26::1;-1:-1:-1::0;;;;;7426:49:26;;;::::1;::::0;;;::::1;::::0;;7297:186::o;2288:100::-;2355:13:4;:11;:13::i;:::-;2352:28:26::1;2371:8;2352:18;:28::i;:::-;2288:100:::0;:::o;3486:142::-;3565:7;3591:18;;;:7;:18;;;;;;;;:29;;;;;;;;;-1:-1:-1;;;;;3591:29:26;3486:142;;;;;:::o;6632:657::-;6791:10;6758:7;6785:17;;;;;;;;;;:27;-1:-1:-1;;;6785:40:26;;:63;;;6841:7;:5;:7::i;:::-;-1:-1:-1;;;;;6829:19:26;:10;-1:-1:-1;;;;;6829:19:26;;6785:63;6777:72;;;;;;6886:129;;;;;6727:25:44;;;-1:-1:-1;;;;;6826:15:44;;;6806:18;;;6799:43;6878:15;;6858:18;;;6851:43;6991:10:26;6910:18:44;;;6903:43;6962:19;;;6955:35;;;6862:21:26;;6699:19:44;;6886:129:26;;;-1:-1:-1;;6886:129:26;;;;;;;;;;;;;;-1:-1:-1;;;;;6886:129:26;-1:-1:-1;;;6886:129:26;;;;-1:-1:-1;;7070:26:26;7078:7;6886:129;7070:7;:26::i;:::-;7133:30;;;;;;;;-1:-1:-1;;;7133:30:26;;;;;;;;;-1:-1:-1;;;;;7117:13:26;;-1:-1:-1;7117:13:26;;;;;;;;;:46;;;;;;;;;;;7174:6;:19;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7174:19:26;;;;;7211:44;;7238:25:44;;;-1:-1:-1;;;7279:18:44;;;7272:37;;;;7117:13:26;;-1:-1:-1;7117:13:26;7211:44;;:18:44;:44:26;;;;;;;7275:6;6632:657;-1:-1:-1;;;;;;;6632:657:26:o;986:23::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;986:23:26;;-1:-1:-1;986:23:26;:::o;7491:205::-;7609:10;-1:-1:-1;;;;;7575:44:26;7584:10;-1:-1:-1;;;;;7575:30:26;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7575:44:26;;7567:86;;;;-1:-1:-1;;;7567:86:26;;7778:2:44;7567:86:26;;;7760:21:44;7817:2;7797:18;;;7790:30;7856:31;7836:18;;;7829:59;7905:18;;7567:86:26;;;;;;;;;-1:-1:-1;;;;;7664:16:26;;;;;;;:4;:16;;;;;:24;7491:205::o;3176:101:4:-;2355:13;:11;:13::i;:::-;3240:30:::1;3267:1;3240:18;:30::i;:::-;3176:101::o:0;7704:97:26:-;2355:13:4;:11;:13::i;:::-;7777:6:26::1;:16:::0;;-1:-1:-1;;;;;;7777:16:26::1;-1:-1:-1::0;;;;;7777:16:26;;;::::1;::::0;;;::::1;::::0;;7704:97::o;5056:1543::-;2355:13:4;:11;:13::i;:::-;-1:-1:-1;;;;;5250:21:26;::::1;5242:48;;;::::0;-1:-1:-1;;;5242:48:26;;8136:2:44;5242:48:26::1;::::0;::::1;8118:21:44::0;8175:2;8155:18;;;8148:30;-1:-1:-1;;;8194:18:44;;;8187:44;8248:18;;5242:48:26::1;7934:338:44::0;5242:48:26::1;-1:-1:-1::0;;;;;5309:21:26;::::1;5301:48;;;::::0;-1:-1:-1;;;5301:48:26;;8479:2:44;5301:48:26::1;::::0;::::1;8461:21:44::0;8518:2;8498:18;;;8491:30;-1:-1:-1;;;8537:18:44;;;8530:44;8591:18;;5301:48:26::1;8277:338:44::0;5301:48:26::1;5370:21;5406:9;-1:-1:-1::0;;;5406:19:26;5402:354:::1;;5541:9;5551:13;5565:7;:5;:7::i;:::-;5455:138;::::0;::::1;::::0;::::1;8907:25:44::0;;;;8948:18;;;8941:34;;;;-1:-1:-1;;;;;9049:15:44;;;9029:18;;;9022:43;9101:15;;;9081:18;;;9074:43;9154:15;;;9133:19;;;9126:44;9207:15;;9186:19;;;9179:44;8879:19;;5455:138:26::1;::::0;;-1:-1:-1;;5455:138:26;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;5455:138:26::1;-1:-1:-1::0;;;5455:138:26::1;::::0;;;-1:-1:-1;5402:354:26::1;;;5711:9;5721:13;5735:7;:5;:7::i;:::-;5633:123;::::0;::::1;::::0;::::1;9493:25:44::0;;;;9534:18;;;9527:34;;;;-1:-1:-1;;;;;9635:15:44;;;9615:18;;;9608:43;9687:15;;;9667:18;;;9660:43;9740:15;;9719:19;;;9712:44;9465:19;;5633:123:26::1;::::0;;-1:-1:-1;;5633:123:26;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;5633:123:26::1;-1:-1:-1::0;;;5633:123:26::1;::::0;;;-1:-1:-1;5402:354:26::1;5794:14;5811:26;5819:7;5828:8;5811:7;:26::i;:::-;5794:43;;5850:17;5884:9;-1:-1:-1::0;;;5884:19:26;5880:341:::1;;-1:-1:-1::0;5961:47:26::1;::::0;;2966:25:44;;;3022:2;3007:18;;3000:34;;;-1:-1:-1;;;5920:21:26;-1:-1:-1;;;;;5961:47:26;::::1;::::0;::::1;::::0;2939:18:44;5961:47:26::1;;;;;;;;5880:341;;;6030:9;-1:-1:-1::0;;;6030:19:26;6026:195:::1;;-1:-1:-1::0;6107:47:26::1;::::0;;2966:25:44;;;3022:2;3007:18;;3000:34;;;-1:-1:-1;;;6066:21:26;-1:-1:-1;;;;;6107:47:26;::::1;::::0;::::1;::::0;2939:18:44;6107:47:26::1;2792:248:44::0;6026:195:26::1;6187:22;::::0;-1:-1:-1;;;6187:22:26;;9969:2:44;6187:22:26::1;::::0;::::1;9951:21:44::0;10008:2;9988:18;;;9981:30;-1:-1:-1;;;10027:18:44;;;10020:42;10079:18;;6187:22:26::1;9767:336:44::0;6026:195:26::1;6249:25;::::0;;;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;;;;;6233:13:26;::::1;-1:-1:-1::0;6233:13:26;;;;;;;;;:41;;;;;;::::1;::::0;;::::1;::::0;;;;6291:21;;;:10:::1;:21:::0;;;;:26;:73;::::1;;;-1:-1:-1::0;6322:6:26::1;:13:::0;:18;;:41:::1;;;6357:6;-1:-1:-1::0;;;;;6344:19:26::1;:6;6351:1;6344:9;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;6344:9:26::1;:19;;6322:41;6287:248;;;6405:6;:13:::0;;6381:21:::1;::::0;;;:10:::1;:21;::::0;;;;:37;;;6433:19:::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;6433:19:26::1;-1:-1:-1::0;;;;;6433:19:26;::::1;;::::0;;6287:248:::1;;;6492:21;::::0;;;:10:::1;:21;::::0;;;;;6485:6:::1;:29:::0;;6517:6;;6492:21;6485:29;::::1;;;;;:::i;:::-;;;;;;;;;:38;;;;;-1:-1:-1::0;;;;;6485:38:26::1;;;;;-1:-1:-1::0;;;;;6485:38:26::1;;;;;;6287:248;6547:18;::::0;;;:7:::1;:18;::::0;;;;;;;:33;;;;;;;;;;:42;;-1:-1:-1;;;;;;6547:42:26::1;-1:-1:-1::0;;;;;6547:42:26;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;;;;;;5056:1543:26:o;2462:144:4:-;1334:22;2591:8;-1:-1:-1;;;;;2591:8:4;;2462:144::o;4528:103:26:-;4578:13;4610;4603:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4528:103;:::o;3698:390::-;3767:7;3776;3795:10;3870:9;3827:5;:36;3833:6;3840:10;:21;3851:9;3840:21;;;;;;;;;;;;3833:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;3833:29:26;3827:36;;;;;;;;;;;;3833:29;3827:41;;:52;3824:82;;-1:-1:-1;3902:4:26;3824:82;3920:5;3917:163;;;3955:21;;;;:10;:21;;;;;;3948:6;:29;;:6;;3955:21;3948:29;;;;;;:::i;:::-;;;;;;;;;;;;;3992:21;;;:10;:21;;;;;;;3985:6;:29;;-1:-1:-1;;;;;3948:29:26;;;;;;;3992:21;3985:29;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;3985:29:26;3979:36;;;;;;;;;;;;:46;3940:86;;3979:46;;-1:-1:-1;3698:390:26;-1:-1:-1;;;3698:390:26:o;3917:163::-;-1:-1:-1;4071:3:26;;;;-1:-1:-1;3698:390:26;-1:-1:-1;;3698:390:26:o;7809:106::-;2355:13:4;:11;:13::i;:::-;7887::26::1;:20;7903:4:::0;;7887:13;:20:::1;:::i;:::-;;7809:106:::0;;:::o;2183:97::-;4158:30:14;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:14;-1:-1:-1;;;4302:15:14;;;4301:16;;4348:14;;4279:19;4724:16;;:34;;;;;4744:14;4724:34;4704:54;;4768:17;4788:11;:16;;4803:1;4788:16;:50;;;;-1:-1:-1;4816:4:14;4808:25;:30;4788:50;4768:70;;4854:12;4853:13;:30;;;;;4871:12;4870:13;4853:30;4849:91;;;4906:23;;-1:-1:-1;;;4906:23:14;;;;;;;;;;;4849:91;4949:18;;-1:-1:-1;;4949:18:14;4966:1;4949:18;;;4977:67;;;;5011:22;;-1:-1:-1;;;;5011:22:14;-1:-1:-1;;;5011:22:14;;;4977:67;2250:22:26::1;2265:6;2250:14;:22::i;:::-;5068:14:14::0;5064:101;;;5098:23;;-1:-1:-1;;;;5098:23:14;;;5140:14;;-1:-1:-1;12968:50:44;;5140:14:14;;12956:2:44;12941:18;5140:14:14;;;;;;;5064:101;4092:1079;;;;;2183:97:26;:::o;8290:191::-;8361:4;8380:24;;;:13;:24;;;;;;:26;8377:96;;-1:-1:-1;8428:4:26;;8290:191;-1:-1:-1;8290:191:26:o;8377:96::-;-1:-1:-1;8468:5:26;;8290:191;-1:-1:-1;8290:191:26:o;7923:359::-;2003:6;;7995:10;;1972:12;;-1:-1:-1;;;;;2003:6:26;:20;2000:89;;2066:6;;2051:38;;-1:-1:-1;;;2051:38:26;;-1:-1:-1;;;;;1207:32:44;;;2051:38:26;;;1189:51:44;2066:6:26;;;;2051:30;;1162:18:44;;2051:38:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2038:51:26;;-1:-1:-1;;2000:89:26;2108:4;-1:-1:-1;;;2108:10:26;:27;;;;2122:4;-1:-1:-1;;;2122:13:26;2108:27;:46;;;;2147:7;:5;:7::i;:::-;-1:-1:-1;;;;;2139:15:26;:6;-1:-1:-1;;;;;2139:15:26;;2108:46;2100:55;;;;;;8030:24:::1;::::0;;;:13:::1;:24;::::0;;;;;:27;;8027:248:::1;;8073:10;:26:::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;8141:17;-1:-1:-1;8114:24:26;;;:13:::1;8073:26;8114:24:::0;;;;;;;:44;;;;8173:15:::1;:26:::0;;;;;;:37;;-1:-1:-1;;;;;;8173:37:26::1;-1:-1:-1::0;;;;;8173:37:26;::::1;::::0;;::::1;::::0;;;8230:33;;2574:25:44;;;8230:33:26::1;::::0;2547:18:44;8230:33:26::1;;;;;;;8027:248;1961:214:::0;7923:359;;;:::o;2507:94::-;2558:7;2584:6;2591:1;2584:9;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;2584:9:26;;2507:94;-1:-1:-1;;2507:94:26:o;3426:215:4:-;2355:13;:11;:13::i;:::-;-1:-1:-1;;;;;3510:22:4;::::1;3506:91;;3555:31;::::0;-1:-1:-1;;;3555:31:4;;3583:1:::1;3555:31;::::0;::::1;1189:51:44::0;1162:18;;3555:31:4::1;1043:203:44::0;3032:371:26;3120:7;3201:9;3156:5;:36;3162:6;3169:10;:21;3180:9;3169:21;;;;;;;;;;;;3162:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;3162:29:26;3156:36;;;;;;;;;;;;3162:29;3156:41;;:54;:130;;;;-1:-1:-1;3227:5:26;3240:21;;;:10;:21;;;;;;3233:6;:29;;3277:9;;3227:5;;;3233:6;:29;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;3233:29:26;3227:36;;;;;;;;;;;;:46;:59;3156:130;3139:256;;;3325:21;;;;:10;:21;;;;;;3318:6;:29;;:6;;3325:21;3318:29;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;3318:29:26;;-1:-1:-1;3311:36:26;;3139:256;-1:-1:-1;3391:3:26;3376:19;;1436:27;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1436:27:26;:::o;2679:162:4:-;987:10:7;2738:7:4;:5;:7::i;:::-;-1:-1:-1;;;;;2738:23:4;;2734:101;;2784:40;;-1:-1:-1;;;2784:40:4;;987:10:7;2784:40:4;;;1189:51:44;1162:18;;2784:40:4;1043:203:44;3795:248:4;1334:22;3944:8;;-1:-1:-1;;;;;;3962:19:4;;-1:-1:-1;;;;;3962:19:4;;;;;;;;3996:40;;3944:8;;;;;3996:40;;3868:24;;3996:40;3858:185;;3795:248;:::o;4639:380:26:-;4721:16;-1:-1:-1;;;;;4758:28:26;;4750:63;;;;-1:-1:-1;;;4750:63:26;;13231:2:44;4750:63:26;;;13213:21:44;13270:2;13250:18;;;13243:30;-1:-1:-1;;;13289:18:44;;;13282:52;13351:18;;4750:63:26;13029:346:44;4750:63:26;4837:22;:14;-1:-1:-1;;;;;4837:20:26;;:22::i;:::-;4876:15;;4826:33;;-1:-1:-1;4876:19:26;4872:140;;4913:7;4926:8;-1:-1:-1;;;;;4926:13:26;4940:8;4926:23;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4912:37;;;4972:2;4964:36;;;;-1:-1:-1;;;4964:36:26;;13874:2:44;4964:36:26;;;13856:21:44;13913:2;13893:18;;;13886:30;-1:-1:-1;;;13932:18:44;;;13925:51;13993:18;;4964:36:26;13672:345:44;4964:36:26;4897:115;4639:380;;;;:::o;9071:205:14:-;9129:30;;3147:66;9186:27;8819:122;1868:127:4;6929:20:14;:18;:20::i;:::-;1950:38:4::1;1975:12;1950:24;:38::i;1405:123:13:-:0;1462:16;1497:24;1503:14;1519:1;1497:5;:24::i;7082:141:14:-;7149:17;:15;:17::i;:::-;7144:73;;7189:17;;-1:-1:-1;;;7189:17:14;;;;;;;;;;;2001:235:4;6929:20:14;:18;:20::i;2255:906:13:-;2327:16;2383:5;2359:21;:29;2355:123;;;2411:56;;-1:-1:-1;;;2411:56:13;;2438:21;2411:56;;;2966:25:44;3007:18;;;3000:34;;;2939:18;;2411:56:13;2792:248:44;2355:123:13;2761:48;2743:14;2739:2;2735:23;2730:3;2726:33;2723:87;2717:4;2710:101;2967:32;2950:14;2945:3;2941:24;2938:62;2932:4;2925:76;3046:4;3040;3033:5;3026:25;3014:37;-1:-1:-1;;;;;;3074:22:13;;3070:85;;3119:25;;-1:-1:-1;;;3119:25:13;;;;;;;;;;;8485:120:14;8535:4;8558:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8558:40:14;;;;;;-1:-1:-1;8485:120:14:o;14:131:44:-;-1:-1:-1;;;;;89:31:44;;79:42;;69:70;;135:1;132;125:12;150:383;227:6;235;243;296:2;284:9;275:7;271:23;267:32;264:52;;;312:1;309;302:12;264:52;351:9;338:23;370:31;395:5;370:31;:::i;:::-;420:5;472:2;457:18;;444:32;;-1:-1:-1;523:2:44;508:18;;;495:32;;150:383;-1:-1:-1;;;150:383:44:o;538:247::-;597:6;650:2;638:9;629:7;625:23;621:32;618:52;;;666:1;663;656:12;618:52;705:9;692:23;724:31;749:5;724:31;:::i;:::-;774:5;538:247;-1:-1:-1;;;538:247:44:o;790:248::-;858:6;866;919:2;907:9;898:7;894:23;890:32;887:52;;;935:1;932;925:12;887:52;-1:-1:-1;;958:23:44;;;1028:2;1013:18;;;1000:32;;-1:-1:-1;790:248:44:o;1251:667::-;1346:6;1354;1362;1370;1378;1431:3;1419:9;1410:7;1406:23;1402:33;1399:53;;;1448:1;1445;1438:12;1399:53;1487:9;1474:23;1506:31;1531:5;1506:31;:::i;:::-;1556:5;-1:-1:-1;1613:2:44;1598:18;;1585:32;1626:33;1585:32;1626:33;:::i;:::-;1678:7;-1:-1:-1;1737:2:44;1722:18;;1709:32;1750:33;1709:32;1750:33;:::i;:::-;1251:667;;;;-1:-1:-1;1802:7:44;;1856:2;1841:18;;1828:32;;-1:-1:-1;1907:3:44;1892:19;1879:33;;1251:667;-1:-1:-1;;1251:667:44:o;1923:180::-;1982:6;2035:2;2023:9;2014:7;2010:23;2006:32;2003:52;;;2051:1;2048;2041:12;2003:52;-1:-1:-1;2074:23:44;;1923:180;-1:-1:-1;1923:180:44:o;2108:315::-;2176:6;2184;2237:2;2225:9;2216:7;2212:23;2208:32;2205:52;;;2253:1;2250;2243:12;2205:52;2292:9;2279:23;2311:31;2336:5;2311:31;:::i;:::-;2361:5;2413:2;2398:18;;;;2385:32;;-1:-1:-1;;;2108:315:44:o;3045:878::-;3158:6;3166;3174;3182;3190;3198;3206;3259:3;3247:9;3238:7;3234:23;3230:33;3227:53;;;3276:1;3273;3266:12;3227:53;3315:9;3302:23;3334:31;3359:5;3334:31;:::i;:::-;3384:5;-1:-1:-1;3436:2:44;3421:18;;3408:32;;-1:-1:-1;3487:2:44;3472:18;;3459:32;;-1:-1:-1;3538:2:44;3523:18;;3510:32;;-1:-1:-1;3594:3:44;3579:19;;3566:33;3608;3566;3608;:::i;:::-;3660:7;-1:-1:-1;3719:3:44;3704:19;;3691:33;3733;3691;3733;:::i;:::-;3785:7;-1:-1:-1;3844:3:44;3829:19;;3816:33;3858;3816;3858;:::i;:::-;3910:7;3900:17;;;3045:878;;;;;;;;;;:::o;3928:250::-;4013:1;4023:113;4037:6;4034:1;4031:13;4023:113;;;4113:11;;;4107:18;4094:11;;;4087:39;4059:2;4052:10;4023:113;;;-1:-1:-1;;4170:1:44;4152:16;;4145:27;3928:250::o;4183:396::-;4332:2;4321:9;4314:21;4295:4;4364:6;4358:13;4407:6;4402:2;4391:9;4387:18;4380:34;4423:79;4495:6;4490:2;4479:9;4475:18;4470:2;4462:6;4458:15;4423:79;:::i;:::-;4563:2;4542:15;-1:-1:-1;;4538:29:44;4523:45;;;;4570:2;4519:54;;4183:396;-1:-1:-1;;4183:396:44:o;5048:592::-;5119:6;5127;5180:2;5168:9;5159:7;5155:23;5151:32;5148:52;;;5196:1;5193;5186:12;5148:52;5236:9;5223:23;5265:18;5306:2;5298:6;5295:14;5292:34;;;5322:1;5319;5312:12;5292:34;5360:6;5349:9;5345:22;5335:32;;5405:7;5398:4;5394:2;5390:13;5386:27;5376:55;;5427:1;5424;5417:12;5376:55;5467:2;5454:16;5493:2;5485:6;5482:14;5479:34;;;5509:1;5506;5499:12;5479:34;5554:7;5549:2;5540:6;5536:2;5532:15;5528:24;5525:37;5522:57;;;5575:1;5572;5565:12;5522:57;5606:2;5598:11;;;;;5628:6;;-1:-1:-1;5048:592:44;;-1:-1:-1;;;;5048:592:44:o;5837:315::-;5905:6;5913;5966:2;5954:9;5945:7;5941:23;5937:32;5934:52;;;5982:1;5979;5972:12;5934:52;6018:9;6005:23;5995:33;;6078:2;6067:9;6063:18;6050:32;6091:31;6116:5;6091:31;:::i;:::-;6141:5;6131:15;;;5837:315;;;;;:::o;6157:306::-;6245:6;6253;6261;6314:2;6302:9;6293:7;6289:23;6285:32;6282:52;;;6330:1;6327;6320:12;6282:52;6359:9;6353:16;6343:26;;6409:2;6398:9;6394:18;6388:25;6378:35;;6453:2;6442:9;6438:18;6432:25;6422:35;;6157:306;;;;;:::o;7320:251::-;7390:6;7443:2;7431:9;7422:7;7418:23;7414:32;7411:52;;;7459:1;7456;7449:12;7411:52;7491:9;7485:16;7510:31;7535:5;7510:31;:::i;10108:127::-;10169:10;10164:3;10160:20;10157:1;10150:31;10200:4;10197:1;10190:15;10224:4;10221:1;10214:15;10240:380;10319:1;10315:12;;;;10362;;;10383:61;;10437:4;10429:6;10425:17;10415:27;;10383:61;10490:2;10482:6;10479:14;10459:18;10456:38;10453:161;;10536:10;10531:3;10527:20;10524:1;10517:31;10571:4;10568:1;10561:15;10599:4;10596:1;10589:15;10453:161;;10240:380;;;:::o;10625:127::-;10686:10;10681:3;10677:20;10674:1;10667:31;10717:4;10714:1;10707:15;10741:4;10738:1;10731:15;10883:545;10985:2;10980:3;10977:11;10974:448;;;11021:1;11046:5;11042:2;11035:17;11091:4;11087:2;11077:19;11161:2;11149:10;11145:19;11142:1;11138:27;11132:4;11128:38;11197:4;11185:10;11182:20;11179:47;;;-1:-1:-1;11220:4:44;11179:47;11275:2;11270:3;11266:12;11263:1;11259:20;11253:4;11249:31;11239:41;;11330:82;11348:2;11341:5;11338:13;11330:82;;;11393:17;;;11374:1;11363:13;11330:82;;11604:1206;11728:18;11723:3;11720:27;11717:53;;;11750:18;;:::i;:::-;11779:94;11869:3;11829:38;11861:4;11855:11;11829:38;:::i;:::-;11823:4;11779:94;:::i;:::-;11899:1;11924:2;11919:3;11916:11;11941:1;11936:616;;;;12596:1;12613:3;12610:93;;;-1:-1:-1;12669:19:44;;;12656:33;12610:93;-1:-1:-1;;11561:1:44;11557:11;;;11553:24;11549:29;11539:40;11585:1;11581:11;;;11536:57;12716:78;;11909:895;;11936:616;10830:1;10823:14;;;10867:4;10854:18;;-1:-1:-1;;11972:17:44;;;12073:9;12095:229;12109:7;12106:1;12103:14;12095:229;;;12198:19;;;12185:33;12170:49;;12305:4;12290:20;;;;12258:1;12246:14;;;;12125:12;12095:229;;;12099:3;12352;12343:7;12340:16;12337:159;;;12476:1;12472:6;12466:3;12460;12457:1;12453:11;12449:21;12445:34;12441:39;12428:9;12423:3;12419:19;12406:33;12402:79;12394:6;12387:95;12337:159;;;12539:1;12533:3;12530:1;12526:11;12522:19;12516:4;12509:33;11909:895;;;11604:1206;;;:::o;13380:287::-;13509:3;13547:6;13541:13;13563:66;13622:6;13617:3;13610:4;13602:6;13598:17;13563:66;:::i;:::-;13645:16;;;;;13380:287;-1:-1:-1;;13380:287:44:o",
    "source": "// (c) Kallol Borah, 2020\r\n// Implementation of the Via cash and bond factory\r\n// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.8.0;\r\n\r\nimport \"./interfaces/ViaFactory.sol\";\r\nimport \"./interfaces/ViaToken.sol\";\r\nimport \"./interfaces/VerifiedClient.sol\";\r\n\r\nimport \"@openzeppelin/contracts/proxy/Clones.sol\";\r\nimport \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\r\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\r\n\r\ncontract Factory is Initializable, ViaFactory, OwnableUpgradeable {\r\n\r\n    using Clones for address;\r\n\r\n    //data structure for token proxies\r\n    struct via{\r\n        bytes32 tokenType;\r\n        bytes32 name;        \r\n    }\r\n\r\n    //addresses of all Via proxies\r\n    mapping(address => via) public token;\r\n\r\n    //Crypto data oracle feed\r\n    mapping(bytes32 => mapping(bytes32 => address)) CryptoDataUrl;\r\n\r\n    //Verified accounts client\r\n    address client;    \r\n\r\n    //token index and position in index\r\n    address[] public tokens;\r\n\r\n    //mapping token name (currency) to index position \r\n    mapping(bytes32 => uint256) private tokenIndex;\r\n\r\n    //list of token type to token currency to product issuers\r\n    mapping(bytes32 => mapping(bytes32 => address)) issuers;\r\n\r\n    //mapping bond token to term in seconds\r\n    mapping(address => uint256) private term;\r\n\r\n    //Payout url\r\n    string FiatPayoutUrl;\r\n\r\n    //storing supporting ERC20 tokens\r\n    bytes32[] public currencies;\r\n    mapping(bytes32 => uint256) private currencyIndex;\r\n    mapping(bytes32 => address) private currencyAddress;\r\n\r\n    event CashIssuerCreated(address indexed issuer, bytes32 tokenName, bytes32 tokenType);\r\n    event BondIssuerCreated(address indexed issuer, bytes32 tokenName, bytes32 tokenType);\r\n    event TokenCreated(address indexed token, bytes32 tokenName, bytes32 tokenType);\r\n    event SupportToken(address indexed token, bytes32 tokenName);\r\n\r\n    modifier onlyManager(address sender){\r\n        bytes32 role = \"\";\r\n        if(client!=address(0x0))\r\n            (role, , ) = VerifiedClient(client).getRole(sender);\r\n        require(role==\"DP\" || role==\"Admin\" || sender==owner());\r\n        _;\r\n    }\r\n\r\n    function initialize(address _owner) public initializer {\r\n         __Ownable_init(_owner);\r\n    }\r\n\r\n    function setOwner(address newOwner) public onlyOwner {\r\n        _transferOwnership(newOwner);\r\n    }\r\n\r\n    function getTokenCount() external view returns(uint tokenCount) {\r\n        return tokens.length;\r\n    }\r\n\r\n    function getToken(uint256 n) external view returns(address){\r\n        return tokens[n];\r\n    }\r\n\r\n    function getName(address viaAddress) external view returns(bytes32) {\r\n        return token[viaAddress].name;\r\n    }\r\n\r\n    function getType(address viaAddress) external view returns(bytes32) {\r\n        return token[viaAddress].tokenType;\r\n    }\r\n\r\n    function getNameAndType(address viaAddress) external view returns(bytes32, bytes32){\r\n        return (token[viaAddress].name, token[viaAddress].tokenType);\r\n    }\r\n\r\n    function getTokenByNameType(bytes32 tokenName, bytes32 tokenType) external view returns(address){\r\n        if(\r\n            token[tokens[tokenIndex[tokenName]]].name == tokenName &&\r\n            token[tokens[tokenIndex[tokenName]]].tokenType == tokenType\r\n        )\r\n            return tokens[tokenIndex[tokenName]];\r\n        else\r\n            return address(0x0);\r\n    }\r\n\r\n    //retrieve token product issuer address for given token name and type\r\n    function getIssuer(bytes32 tokenType, bytes32 tokenName) external view returns(address){\r\n        return issuers[tokenType][tokenName];\r\n    }\r\n\r\n    //retrieves address and type of token for name specified\r\n    function getAddressAndType(bytes32 tokenName) external view returns (address, bytes32){\r\n        bool found = false;\r\n        if(token[tokens[tokenIndex[tokenName]]].name==tokenName)\r\n            found = true;\r\n        if(found)\r\n            return (tokens[tokenIndex[tokenName]], token[tokens[tokenIndex[tokenName]]].tokenType);\r\n        else\r\n            return (address(0x0), \"\");\r\n    }\r\n\r\n    function getCryptoDataUrl(bytes32 fromCurrency, bytes32 toCurrency) external view returns(address){\r\n        return CryptoDataUrl[fromCurrency][toCurrency];\r\n    }\r\n\r\n    //get Verified client address for AML check\r\n    function getClient() external view returns(address){\r\n        return client;\r\n    }\r\n\r\n    function getBondTerm(address _bondToken) external view returns(uint256){\r\n        return term[_bondToken];\r\n    }\r\n\r\n    function getFiatPayoutUrl() external view returns(string memory){\r\n        return FiatPayoutUrl;\r\n    }\r\n\r\n    function _deploy(address implementation, bytes memory initData) internal returns (address instance) {\r\n        require(implementation != address(0), \"Invalid implementation\");\r\n\r\n        instance = implementation.clone();\r\n\r\n        if (initData.length > 0) {\r\n            (bool ok, ) = instance.call(initData);\r\n            require(ok, \"Initialization failed\");\r\n        }\r\n    }\r\n\r\n    //token issuer factory \r\n    function createIssuer(address _target, bytes32 tokenName, bytes32 tokenType, bytes32 tokenCurrency, address _oracle, address _token, address _fee) onlyOwner external{\r\n        \r\n        require(_target != address(0), \"Invalid target\");\r\n        require(_oracle != address(0), \"Invalid oracle\");\r\n        \r\n        bytes memory _payload;\r\n        if (tokenType == \"Bond\")    \r\n            _payload = abi.encodeWithSignature(\"initialize(bytes32,bytes32,address,address,address,address)\",tokenName,tokenCurrency,owner(),_oracle,_token,_fee);\r\n        else\r\n            _payload = abi.encodeWithSignature(\"initialize(bytes32,bytes32,address,address,address)\",tokenName,tokenCurrency,owner(),_oracle,_fee);\r\n\r\n        // Deploy proxy\r\n        address issuer = _deploy(_target, _payload);\r\n\r\n        bytes32 finalType;\r\n\r\n        if (tokenType == \"Cash\") {\r\n            finalType = \"ViaCash\";\r\n            emit CashIssuerCreated(issuer, tokenName, tokenType);\r\n        } else if (tokenType == \"Bond\") {\r\n            finalType = \"ViaBond\";\r\n            emit BondIssuerCreated(issuer, tokenName, tokenType);\r\n        } else {\r\n            revert(\"Invalid type\");\r\n        }\r\n\r\n        token[issuer] = via(finalType, tokenName);\r\n\r\n        if (tokenIndex[tokenName] == 0 && (tokens.length == 0 || tokens[0] != issuer)) {\r\n            tokenIndex[tokenName] = tokens.length;\r\n            tokens.push(issuer);\r\n        } else {\r\n            tokens[tokenIndex[tokenName]] = issuer;\r\n        }\r\n\r\n        issuers[finalType][tokenCurrency] = issuer;\r\n\r\n    }\r\n    \r\n    //token factory\r\n    function createToken(address _target, address issuer, address payee, bytes32 tokenName, bytes32 tokenSymbol) external returns(address){\r\n        require(token[msg.sender].tokenType == \"ViaBond\" || msg.sender==owner());\r\n\r\n        bytes memory _payload = abi.encodeWithSignature(\"initialize(bytes32,address,address,address,bytes32)\", tokenName, issuer, payee, msg.sender, tokenSymbol);\r\n\r\n        // Deploy proxy\r\n        address _token = _deploy(_target, _payload);\r\n        \r\n        token[_token] = via(\"ViaBondToken\", tokenName);\r\n        tokens.push(_token);\r\n\r\n        emit TokenCreated(_token, tokenSymbol, \"ViaBond\");\r\n\r\n        return _token;\r\n    }\r\n\r\n    function setCryptoDataURL(address _feed, bytes32 _fromCurrency, bytes32 _toCurrency) onlyManager(msg.sender) external {\r\n        CryptoDataUrl[_fromCurrency][_toCurrency] = _feed;\r\n    }\r\n\r\n    function setBondTerm(address _bondToken, uint256 _term) external {\r\n        require(ViaToken(_bondToken).getIssuer()==msg.sender, \"Only issuer can set bond term\");\r\n        term[_bondToken] = _term;\r\n    }\r\n\r\n    function setClientAddress(address _client) onlyOwner external {\r\n        client = _client;\r\n    }\r\n\r\n    function setFiatPayoutUrl(string calldata _url) onlyOwner external {\r\n        FiatPayoutUrl = _url;\r\n    }\r\n\r\n    function supportTokens(bytes32 _currency, address _address) onlyManager(msg.sender) external {\r\n        if(currencyIndex[_currency]==0){\r\n            currencies.push(_currency);\r\n            currencyIndex[_currency] = currencies.length;\r\n            currencyAddress[_currency] = _address;\r\n            emit SupportToken(_address, _currency);\r\n        }\r\n    }\r\n\r\n    function checkSupportForToken(bytes32 _currency) external view returns(bool){\r\n        if(currencyIndex[_currency]>0)\r\n            return true;\r\n        else\r\n            return false;\r\n    }\r\n\r\n    function getCurrencyToken(bytes32 _currency) external view returns(address){\r\n        return currencyAddress[_currency];\r\n    }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n",
    "sourcePath": "D:\\Code\\verified-payments\\contracts\\Factory.sol",
    "ast": {
        "absolutePath": "project:/contracts/Factory.sol",
        "exportedSymbols": {
            "Clones": [
                1959
            ],
            "ContextUpgradeable": [
                1173
            ],
            "Create2": [
                2900
            ],
            "Errors": [
                2922
            ],
            "Factory": [
                8681
            ],
            "Initializable": [
                2227
            ],
            "OwnableUpgradeable": [
                506
            ],
            "VerifiedClient": [
                9895
            ],
            "ViaFactory": [
                10265
            ],
            "ViaToken": [
                10367
            ]
        },
        "id": 8682,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 7857,
                "literals": [
                    "solidity",
                    ">=",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "114:24:26"
            },
            {
                "absolutePath": "project:/contracts/interfaces/ViaFactory.sol",
                "file": "./interfaces/ViaFactory.sol",
                "id": 7858,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 8682,
                "sourceUnit": 10266,
                "src": "142:37:26",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/ViaToken.sol",
                "file": "./interfaces/ViaToken.sol",
                "id": 7859,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 8682,
                "sourceUnit": 10368,
                "src": "181:35:26",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/VerifiedClient.sol",
                "file": "./interfaces/VerifiedClient.sol",
                "id": 7860,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 8682,
                "sourceUnit": 9896,
                "src": "218:41:26",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/proxy/Clones.sol",
                "file": "@openzeppelin/contracts/proxy/Clones.sol",
                "id": 7861,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 8682,
                "sourceUnit": 1960,
                "src": "263:50:26",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
                "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
                "id": 7862,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 8682,
                "sourceUnit": 507,
                "src": "315:75:26",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
                "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
                "id": 7863,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 8682,
                "sourceUnit": 511,
                "src": "392:75:26",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 7864,
                            "name": "Initializable",
                            "nameLocations": [
                                "491:13:26"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2227,
                            "src": "491:13:26"
                        },
                        "id": 7865,
                        "nodeType": "InheritanceSpecifier",
                        "src": "491:13:26"
                    },
                    {
                        "baseName": {
                            "id": 7866,
                            "name": "ViaFactory",
                            "nameLocations": [
                                "506:10:26"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 10265,
                            "src": "506:10:26"
                        },
                        "id": 7867,
                        "nodeType": "InheritanceSpecifier",
                        "src": "506:10:26"
                    },
                    {
                        "baseName": {
                            "id": 7868,
                            "name": "OwnableUpgradeable",
                            "nameLocations": [
                                "518:18:26"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 506,
                            "src": "518:18:26"
                        },
                        "id": 7869,
                        "nodeType": "InheritanceSpecifier",
                        "src": "518:18:26"
                    }
                ],
                "canonicalName": "Factory",
                "contractDependencies": [],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 8681,
                "linearizedBaseContracts": [
                    8681,
                    506,
                    1173,
                    10265,
                    2227
                ],
                "name": "Factory",
                "nameLocation": "480:7:26",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "global": false,
                        "id": 7872,
                        "libraryName": {
                            "id": 7870,
                            "name": "Clones",
                            "nameLocations": [
                                "552:6:26"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 1959,
                            "src": "552:6:26"
                        },
                        "nodeType": "UsingForDirective",
                        "src": "546:25:26",
                        "typeName": {
                            "id": 7871,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "563:7:26",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        }
                    },
                    {
                        "canonicalName": "Factory.via",
                        "id": 7877,
                        "members": [
                            {
                                "constant": false,
                                "id": 7874,
                                "mutability": "mutable",
                                "name": "tokenType",
                                "nameLocation": "648:9:26",
                                "nodeType": "VariableDeclaration",
                                "scope": 7877,
                                "src": "640:17:26",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                },
                                "typeName": {
                                    "id": 7873,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "640:7:26",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 7876,
                                "mutability": "mutable",
                                "name": "name",
                                "nameLocation": "676:4:26",
                                "nodeType": "VariableDeclaration",
                                "scope": 7877,
                                "src": "668:12:26",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                },
                                "typeName": {
                                    "id": 7875,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "668:7:26",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    }
                                },
                                "visibility": "internal"
                            }
                        ],
                        "name": "via",
                        "nameLocation": "626:3:26",
                        "nodeType": "StructDefinition",
                        "scope": 8681,
                        "src": "619:77:26",
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "6d46a1db",
                        "id": 7882,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "771:5:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 8681,
                        "src": "740:36:26",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_via_$7877_storage_$",
                            "typeString": "mapping(address => struct Factory.via)"
                        },
                        "typeName": {
                            "id": 7881,
                            "keyName": "",
                            "keyNameLocation": "-1:-1:-1",
                            "keyType": {
                                "id": 7878,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "748:7:26",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "740:23:26",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_via_$7877_storage_$",
                                "typeString": "mapping(address => struct Factory.via)"
                            },
                            "valueName": "",
                            "valueNameLocation": "-1:-1:-1",
                            "valueType": {
                                "id": 7880,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                    "id": 7879,
                                    "name": "via",
                                    "nameLocations": [
                                        "759:3:26"
                                    ],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 7877,
                                    "src": "759:3:26"
                                },
                                "referencedDeclaration": 7877,
                                "src": "759:3:26",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_via_$7877_storage_ptr",
                                    "typeString": "struct Factory.via"
                                }
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "id": 7888,
                        "mutability": "mutable",
                        "name": "CryptoDataUrl",
                        "nameLocation": "864:13:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 8681,
                        "src": "816:61:26",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                            "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                        },
                        "typeName": {
                            "id": 7887,
                            "keyName": "",
                            "keyNameLocation": "-1:-1:-1",
                            "keyType": {
                                "id": 7883,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "824:7:26",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "816:47:26",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                                "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                            },
                            "valueName": "",
                            "valueNameLocation": "-1:-1:-1",
                            "valueType": {
                                "id": 7886,
                                "keyName": "",
                                "keyNameLocation": "-1:-1:-1",
                                "keyType": {
                                    "id": 7884,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "843:7:26",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    }
                                },
                                "nodeType": "Mapping",
                                "src": "835:27:26",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                    "typeString": "mapping(bytes32 => address)"
                                },
                                "valueName": "",
                                "valueNameLocation": "-1:-1:-1",
                                "valueType": {
                                    "id": 7885,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "854:7:26",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                }
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "constant": false,
                        "id": 7890,
                        "mutability": "mutable",
                        "name": "client",
                        "nameLocation": "926:6:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 8681,
                        "src": "918:14:26",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 7889,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "918:7:26",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "constant": false,
                        "functionSelector": "4f64b2be",
                        "id": 7893,
                        "mutability": "mutable",
                        "name": "tokens",
                        "nameLocation": "1003:6:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 8681,
                        "src": "986:23:26",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[]"
                        },
                        "typeName": {
                            "baseType": {
                                "id": 7891,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "986:7:26",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "id": 7892,
                            "nodeType": "ArrayTypeName",
                            "src": "986:9:26",
                            "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "id": 7897,
                        "mutability": "mutable",
                        "name": "tokenIndex",
                        "nameLocation": "1110:10:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 8681,
                        "src": "1074:46:26",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                            "typeString": "mapping(bytes32 => uint256)"
                        },
                        "typeName": {
                            "id": 7896,
                            "keyName": "",
                            "keyNameLocation": "-1:-1:-1",
                            "keyType": {
                                "id": 7894,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1082:7:26",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1074:27:26",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                            },
                            "valueName": "",
                            "valueNameLocation": "-1:-1:-1",
                            "valueType": {
                                "id": 7895,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1093:7:26",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 7903,
                        "mutability": "mutable",
                        "name": "issuers",
                        "nameLocation": "1240:7:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 8681,
                        "src": "1192:55:26",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                            "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                        },
                        "typeName": {
                            "id": 7902,
                            "keyName": "",
                            "keyNameLocation": "-1:-1:-1",
                            "keyType": {
                                "id": 7898,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1200:7:26",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1192:47:26",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                                "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                            },
                            "valueName": "",
                            "valueNameLocation": "-1:-1:-1",
                            "valueType": {
                                "id": 7901,
                                "keyName": "",
                                "keyNameLocation": "-1:-1:-1",
                                "keyType": {
                                    "id": 7899,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1219:7:26",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    }
                                },
                                "nodeType": "Mapping",
                                "src": "1211:27:26",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                    "typeString": "mapping(bytes32 => address)"
                                },
                                "valueName": "",
                                "valueNameLocation": "-1:-1:-1",
                                "valueType": {
                                    "id": 7900,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1230:7:26",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                }
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "constant": false,
                        "id": 7907,
                        "mutability": "mutable",
                        "name": "term",
                        "nameLocation": "1337:4:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 8681,
                        "src": "1301:40:26",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                        },
                        "typeName": {
                            "id": 7906,
                            "keyName": "",
                            "keyNameLocation": "-1:-1:-1",
                            "keyType": {
                                "id": 7904,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1309:7:26",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1301:27:26",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                            },
                            "valueName": "",
                            "valueNameLocation": "-1:-1:-1",
                            "valueType": {
                                "id": 7905,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1320:7:26",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 7909,
                        "mutability": "mutable",
                        "name": "FiatPayoutUrl",
                        "nameLocation": "1375:13:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 8681,
                        "src": "1368:20:26",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string"
                        },
                        "typeName": {
                            "id": 7908,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "1368:6:26",
                            "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "constant": false,
                        "functionSelector": "f6d1c271",
                        "id": 7912,
                        "mutability": "mutable",
                        "name": "currencies",
                        "nameLocation": "1453:10:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 8681,
                        "src": "1436:27:26",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                            "typeString": "bytes32[]"
                        },
                        "typeName": {
                            "baseType": {
                                "id": 7910,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1436:7:26",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                }
                            },
                            "id": 7911,
                            "nodeType": "ArrayTypeName",
                            "src": "1436:9:26",
                            "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[]"
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "id": 7916,
                        "mutability": "mutable",
                        "name": "currencyIndex",
                        "nameLocation": "1506:13:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 8681,
                        "src": "1470:49:26",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                            "typeString": "mapping(bytes32 => uint256)"
                        },
                        "typeName": {
                            "id": 7915,
                            "keyName": "",
                            "keyNameLocation": "-1:-1:-1",
                            "keyType": {
                                "id": 7913,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1478:7:26",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1470:27:26",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                            },
                            "valueName": "",
                            "valueNameLocation": "-1:-1:-1",
                            "valueType": {
                                "id": 7914,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1489:7:26",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 7920,
                        "mutability": "mutable",
                        "name": "currencyAddress",
                        "nameLocation": "1562:15:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 8681,
                        "src": "1526:51:26",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                        },
                        "typeName": {
                            "id": 7919,
                            "keyName": "",
                            "keyNameLocation": "-1:-1:-1",
                            "keyType": {
                                "id": 7917,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1534:7:26",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1526:27:26",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                "typeString": "mapping(bytes32 => address)"
                            },
                            "valueName": "",
                            "valueNameLocation": "-1:-1:-1",
                            "valueType": {
                                "id": 7918,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1545:7:26",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "49c2bdad6020b81dabafa7be5ba1d6b64dccc883841d724393e4a0242819bc34",
                        "id": 7928,
                        "name": "CashIssuerCreated",
                        "nameLocation": "1592:17:26",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 7927,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7922,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "issuer",
                                    "nameLocation": "1626:6:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7928,
                                    "src": "1610:22:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7921,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1610:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7924,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "tokenName",
                                    "nameLocation": "1642:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7928,
                                    "src": "1634:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 7923,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1634:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7926,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "tokenType",
                                    "nameLocation": "1661:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7928,
                                    "src": "1653:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 7925,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1653:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1609:62:26"
                        },
                        "src": "1586:86:26"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "daec82b39e03602f1e7b1c03805276c348a0b9c50d3e83d4ae136f2bbb74137f",
                        "id": 7936,
                        "name": "BondIssuerCreated",
                        "nameLocation": "1684:17:26",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 7935,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7930,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "issuer",
                                    "nameLocation": "1718:6:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7936,
                                    "src": "1702:22:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7929,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1702:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7932,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "tokenName",
                                    "nameLocation": "1734:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7936,
                                    "src": "1726:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 7931,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1726:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7934,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "tokenType",
                                    "nameLocation": "1753:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7936,
                                    "src": "1745:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 7933,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1745:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1701:62:26"
                        },
                        "src": "1678:86:26"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "59bcd02033e203f8af464062ce742d11a3358b7b8fd7e996b91d74bee929d7e5",
                        "id": 7944,
                        "name": "TokenCreated",
                        "nameLocation": "1776:12:26",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 7943,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7938,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "token",
                                    "nameLocation": "1805:5:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7944,
                                    "src": "1789:21:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7937,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1789:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7940,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "tokenName",
                                    "nameLocation": "1820:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7944,
                                    "src": "1812:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 7939,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1812:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7942,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "tokenType",
                                    "nameLocation": "1839:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7944,
                                    "src": "1831:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 7941,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1831:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1788:61:26"
                        },
                        "src": "1770:80:26"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "d890f7eb25689077af6295272755a655abe2e036d2f1cb4422eb9e46eacd5e84",
                        "id": 7950,
                        "name": "SupportToken",
                        "nameLocation": "1862:12:26",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 7949,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7946,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "token",
                                    "nameLocation": "1891:5:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7950,
                                    "src": "1875:21:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7945,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1875:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 7948,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "tokenName",
                                    "nameLocation": "1906:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7950,
                                    "src": "1898:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 7947,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1898:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1874:42:26"
                        },
                        "src": "1856:61:26"
                    },
                    {
                        "body": {
                            "id": 7991,
                            "nodeType": "Block",
                            "src": "1961:214:26",
                            "statements": [
                                {
                                    "assignments": [
                                        7955
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 7955,
                                            "mutability": "mutable",
                                            "name": "role",
                                            "nameLocation": "1980:4:26",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 7991,
                                            "src": "1972:12:26",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 7954,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1972:7:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 7957,
                                    "initialValue": {
                                        "hexValue": "",
                                        "id": 7956,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1987:2:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                            "typeString": "literal_string \"\""
                                        },
                                        "value": ""
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1972:17:26"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 7963,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 7958,
                                            "name": "client",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7890,
                                            "src": "2003:6:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "hexValue": "307830",
                                                    "id": 7961,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "2019:3:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0x0"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    }
                                                ],
                                                "id": 7960,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "2011:7:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 7959,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2011:7:26",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 7962,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2011:12:26",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "2003:20:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 7974,
                                    "nodeType": "IfStatement",
                                    "src": "2000:89:26",
                                    "trueBody": {
                                        "expression": {
                                            "id": 7972,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                                "components": [
                                                    {
                                                        "id": 7964,
                                                        "name": "role",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7955,
                                                        "src": "2039:4:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    null,
                                                    null
                                                ],
                                                "id": 7965,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "nodeType": "TupleExpression",
                                                "src": "2038:10:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_tuple$_t_bytes32_$__$__$",
                                                    "typeString": "tuple(bytes32,,)"
                                                }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                                "arguments": [
                                                    {
                                                        "id": 7970,
                                                        "name": "sender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7952,
                                                        "src": "2082:6:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "id": 7967,
                                                                "name": "client",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7890,
                                                                "src": "2066:6:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 7966,
                                                            "name": "VerifiedClient",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9895,
                                                            "src": "2051:14:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_VerifiedClient_$9895_$",
                                                                "typeString": "type(contract VerifiedClient)"
                                                            }
                                                        },
                                                        "id": 7968,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "2051:22:26",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_VerifiedClient_$9895",
                                                            "typeString": "contract VerifiedClient"
                                                        }
                                                    },
                                                    "id": 7969,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "2074:7:26",
                                                    "memberName": "getRole",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 9813,
                                                    "src": "2051:30:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bytes32_$_t_bytes32_$_t_bytes32_$",
                                                        "typeString": "function (address) view external returns (bytes32,bytes32,bytes32)"
                                                    }
                                                },
                                                "id": 7971,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2051:38:26",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$_t_bytes32_$",
                                                    "typeString": "tuple(bytes32,bytes32,bytes32)"
                                                }
                                            },
                                            "src": "2038:51:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$__$",
                                                "typeString": "tuple()"
                                            }
                                        },
                                        "id": 7973,
                                        "nodeType": "ExpressionStatement",
                                        "src": "2038:51:26"
                                    }
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "id": 7987,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 7982,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "id": 7978,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 7976,
                                                            "name": "role",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7955,
                                                            "src": "2108:4:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "hexValue": "4450",
                                                            "id": 7977,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2114:4:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_2e7a99dcc48463ba57667732f1d19d96afa51e11db099e5c9c708076a0a08040",
                                                                "typeString": "literal_string \"DP\""
                                                            },
                                                            "value": "DP"
                                                        },
                                                        "src": "2108:10:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "||",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "id": 7981,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 7979,
                                                            "name": "role",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7955,
                                                            "src": "2122:4:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "hexValue": "41646d696e",
                                                            "id": 7980,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2128:7:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_a729ef4e25027bc652fc8b5c4d1d902947361fa7c8e7b4905e877823f27331b3",
                                                                "typeString": "literal_string \"Admin\""
                                                            },
                                                            "value": "Admin"
                                                        },
                                                        "src": "2122:13:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "2108:27:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "||",
                                                "rightExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "id": 7986,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 7983,
                                                        "name": "sender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7952,
                                                        "src": "2139:6:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "id": 7984,
                                                            "name": "owner",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 417,
                                                            "src": "2147:5:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                "typeString": "function () view returns (address)"
                                                            }
                                                        },
                                                        "id": 7985,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "2147:7:26",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "2139:15:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "src": "2108:46:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            ],
                                            "id": 7975,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "2100:7:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                                "typeString": "function (bool) pure"
                                            }
                                        },
                                        "id": 7988,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2100:55:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 7989,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2100:55:26"
                                },
                                {
                                    "id": 7990,
                                    "nodeType": "PlaceholderStatement",
                                    "src": "2166:1:26"
                                }
                            ]
                        },
                        "id": 7992,
                        "name": "onlyManager",
                        "nameLocation": "1934:11:26",
                        "nodeType": "ModifierDefinition",
                        "parameters": {
                            "id": 7953,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7952,
                                    "mutability": "mutable",
                                    "name": "sender",
                                    "nameLocation": "1954:6:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7992,
                                    "src": "1946:14:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7951,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1946:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1945:16:26"
                        },
                        "src": "1925:250:26",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 8003,
                            "nodeType": "Block",
                            "src": "2238:42:26",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 8000,
                                                "name": "_owner",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7994,
                                                "src": "2265:6:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 7999,
                                            "name": "__Ownable_init",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 366,
                                            "src": "2250:14:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                "typeString": "function (address)"
                                            }
                                        },
                                        "id": 8001,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2250:22:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 8002,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2250:22:26"
                                }
                            ]
                        },
                        "functionSelector": "c4d66de8",
                        "id": 8004,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 7997,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 7996,
                                    "name": "initializer",
                                    "nameLocations": [
                                        "2226:11:26"
                                    ],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2067,
                                    "src": "2226:11:26"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "2226:11:26"
                            }
                        ],
                        "name": "initialize",
                        "nameLocation": "2192:10:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 7995,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7994,
                                    "mutability": "mutable",
                                    "name": "_owner",
                                    "nameLocation": "2211:6:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8004,
                                    "src": "2203:14:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7993,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2203:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2202:16:26"
                        },
                        "returnParameters": {
                            "id": 7998,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2238:0:26"
                        },
                        "scope": 8681,
                        "src": "2183:97:26",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 8015,
                            "nodeType": "Block",
                            "src": "2341:47:26",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 8012,
                                                "name": "newOwner",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8006,
                                                "src": "2371:8:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 8011,
                                            "name": "_transferOwnership",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 505,
                                            "src": "2352:18:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                "typeString": "function (address)"
                                            }
                                        },
                                        "id": 8013,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2352:28:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 8014,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2352:28:26"
                                }
                            ]
                        },
                        "functionSelector": "13af4035",
                        "id": 8016,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 8009,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 8008,
                                    "name": "onlyOwner",
                                    "nameLocations": [
                                        "2331:9:26"
                                    ],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 401,
                                    "src": "2331:9:26"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "2331:9:26"
                            }
                        ],
                        "name": "setOwner",
                        "nameLocation": "2297:8:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8007,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8006,
                                    "mutability": "mutable",
                                    "name": "newOwner",
                                    "nameLocation": "2314:8:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8016,
                                    "src": "2306:16:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8005,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2306:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2305:18:26"
                        },
                        "returnParameters": {
                            "id": 8010,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2341:0:26"
                        },
                        "scope": 8681,
                        "src": "2288:100:26",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            10102
                        ],
                        "body": {
                            "id": 8024,
                            "nodeType": "Block",
                            "src": "2460:39:26",
                            "statements": [
                                {
                                    "expression": {
                                        "expression": {
                                            "id": 8021,
                                            "name": "tokens",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7893,
                                            "src": "2478:6:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                "typeString": "address[] storage ref"
                                            }
                                        },
                                        "id": 8022,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "2485:6:26",
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "src": "2478:13:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 8020,
                                    "id": 8023,
                                    "nodeType": "Return",
                                    "src": "2471:20:26"
                                }
                            ]
                        },
                        "functionSelector": "78a89567",
                        "id": 8025,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getTokenCount",
                        "nameLocation": "2405:13:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8017,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2418:2:26"
                        },
                        "returnParameters": {
                            "id": 8020,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8019,
                                    "mutability": "mutable",
                                    "name": "tokenCount",
                                    "nameLocation": "2448:10:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8025,
                                    "src": "2443:15:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 8018,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2443:4:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2442:17:26"
                        },
                        "scope": 8681,
                        "src": "2396:103:26",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10109
                        ],
                        "body": {
                            "id": 8036,
                            "nodeType": "Block",
                            "src": "2566:35:26",
                            "statements": [
                                {
                                    "expression": {
                                        "baseExpression": {
                                            "id": 8032,
                                            "name": "tokens",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7893,
                                            "src": "2584:6:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                "typeString": "address[] storage ref"
                                            }
                                        },
                                        "id": 8034,
                                        "indexExpression": {
                                            "id": 8033,
                                            "name": "n",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8027,
                                            "src": "2591:1:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2584:9:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "functionReturnParameters": 8031,
                                    "id": 8035,
                                    "nodeType": "Return",
                                    "src": "2577:16:26"
                                }
                            ]
                        },
                        "functionSelector": "e4b50cb8",
                        "id": 8037,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getToken",
                        "nameLocation": "2516:8:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8028,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8027,
                                    "mutability": "mutable",
                                    "name": "n",
                                    "nameLocation": "2533:1:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8037,
                                    "src": "2525:9:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 8026,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2525:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2524:11:26"
                        },
                        "returnParameters": {
                            "id": 8031,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8030,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8037,
                                    "src": "2558:7:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8029,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2558:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2557:9:26"
                        },
                        "scope": 8681,
                        "src": "2507:94:26",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10116
                        ],
                        "body": {
                            "id": 8049,
                            "nodeType": "Block",
                            "src": "2677:48:26",
                            "statements": [
                                {
                                    "expression": {
                                        "expression": {
                                            "baseExpression": {
                                                "id": 8044,
                                                "name": "token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7882,
                                                "src": "2695:5:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_via_$7877_storage_$",
                                                    "typeString": "mapping(address => struct Factory.via storage ref)"
                                                }
                                            },
                                            "id": 8046,
                                            "indexExpression": {
                                                "id": 8045,
                                                "name": "viaAddress",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8039,
                                                "src": "2701:10:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "2695:17:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_via_$7877_storage",
                                                "typeString": "struct Factory.via storage ref"
                                            }
                                        },
                                        "id": 8047,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "2713:4:26",
                                        "memberName": "name",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7876,
                                        "src": "2695:22:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "functionReturnParameters": 8043,
                                    "id": 8048,
                                    "nodeType": "Return",
                                    "src": "2688:29:26"
                                }
                            ]
                        },
                        "functionSelector": "5fd4b08a",
                        "id": 8050,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getName",
                        "nameLocation": "2618:7:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8040,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8039,
                                    "mutability": "mutable",
                                    "name": "viaAddress",
                                    "nameLocation": "2634:10:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8050,
                                    "src": "2626:18:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8038,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2626:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2625:20:26"
                        },
                        "returnParameters": {
                            "id": 8043,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8042,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8050,
                                    "src": "2668:7:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8041,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2668:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2667:9:26"
                        },
                        "scope": 8681,
                        "src": "2609:116:26",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10123
                        ],
                        "body": {
                            "id": 8062,
                            "nodeType": "Block",
                            "src": "2801:53:26",
                            "statements": [
                                {
                                    "expression": {
                                        "expression": {
                                            "baseExpression": {
                                                "id": 8057,
                                                "name": "token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7882,
                                                "src": "2819:5:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_via_$7877_storage_$",
                                                    "typeString": "mapping(address => struct Factory.via storage ref)"
                                                }
                                            },
                                            "id": 8059,
                                            "indexExpression": {
                                                "id": 8058,
                                                "name": "viaAddress",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8052,
                                                "src": "2825:10:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "2819:17:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_via_$7877_storage",
                                                "typeString": "struct Factory.via storage ref"
                                            }
                                        },
                                        "id": 8060,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "2837:9:26",
                                        "memberName": "tokenType",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7874,
                                        "src": "2819:27:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "functionReturnParameters": 8056,
                                    "id": 8061,
                                    "nodeType": "Return",
                                    "src": "2812:34:26"
                                }
                            ]
                        },
                        "functionSelector": "f429f19b",
                        "id": 8063,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getType",
                        "nameLocation": "2742:7:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8053,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8052,
                                    "mutability": "mutable",
                                    "name": "viaAddress",
                                    "nameLocation": "2758:10:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8063,
                                    "src": "2750:18:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8051,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2750:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2749:20:26"
                        },
                        "returnParameters": {
                            "id": 8056,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8055,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8063,
                                    "src": "2792:7:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8054,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2792:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2791:9:26"
                        },
                        "scope": 8681,
                        "src": "2733:121:26",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10132
                        ],
                        "body": {
                            "id": 8082,
                            "nodeType": "Block",
                            "src": "2945:79:26",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "expression": {
                                                    "baseExpression": {
                                                        "id": 8072,
                                                        "name": "token",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7882,
                                                        "src": "2964:5:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_via_$7877_storage_$",
                                                            "typeString": "mapping(address => struct Factory.via storage ref)"
                                                        }
                                                    },
                                                    "id": 8074,
                                                    "indexExpression": {
                                                        "id": 8073,
                                                        "name": "viaAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8065,
                                                        "src": "2970:10:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "2964:17:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_via_$7877_storage",
                                                        "typeString": "struct Factory.via storage ref"
                                                    }
                                                },
                                                "id": 8075,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "2982:4:26",
                                                "memberName": "name",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 7876,
                                                "src": "2964:22:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "baseExpression": {
                                                        "id": 8076,
                                                        "name": "token",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7882,
                                                        "src": "2988:5:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_via_$7877_storage_$",
                                                            "typeString": "mapping(address => struct Factory.via storage ref)"
                                                        }
                                                    },
                                                    "id": 8078,
                                                    "indexExpression": {
                                                        "id": 8077,
                                                        "name": "viaAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8065,
                                                        "src": "2994:10:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "2988:17:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_via_$7877_storage",
                                                        "typeString": "struct Factory.via storage ref"
                                                    }
                                                },
                                                "id": 8079,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "3006:9:26",
                                                "memberName": "tokenType",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 7874,
                                                "src": "2988:27:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            }
                                        ],
                                        "id": 8080,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "2963:53:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                                            "typeString": "tuple(bytes32,bytes32)"
                                        }
                                    },
                                    "functionReturnParameters": 8071,
                                    "id": 8081,
                                    "nodeType": "Return",
                                    "src": "2956:60:26"
                                }
                            ]
                        },
                        "functionSelector": "668151a7",
                        "id": 8083,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getNameAndType",
                        "nameLocation": "2871:14:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8066,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8065,
                                    "mutability": "mutable",
                                    "name": "viaAddress",
                                    "nameLocation": "2894:10:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8083,
                                    "src": "2886:18:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8064,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2886:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2885:20:26"
                        },
                        "returnParameters": {
                            "id": 8071,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8068,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8083,
                                    "src": "2928:7:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8067,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2928:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8070,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8083,
                                    "src": "2937:7:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8069,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2937:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2927:18:26"
                        },
                        "scope": 8681,
                        "src": "2862:162:26",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10159
                        ],
                        "body": {
                            "id": 8125,
                            "nodeType": "Block",
                            "src": "3128:275:26",
                            "statements": [
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "id": 8112,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "id": 8101,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "expression": {
                                                    "baseExpression": {
                                                        "id": 8092,
                                                        "name": "token",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7882,
                                                        "src": "3156:5:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_via_$7877_storage_$",
                                                            "typeString": "mapping(address => struct Factory.via storage ref)"
                                                        }
                                                    },
                                                    "id": 8098,
                                                    "indexExpression": {
                                                        "baseExpression": {
                                                            "id": 8093,
                                                            "name": "tokens",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7893,
                                                            "src": "3162:6:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                "typeString": "address[] storage ref"
                                                            }
                                                        },
                                                        "id": 8097,
                                                        "indexExpression": {
                                                            "baseExpression": {
                                                                "id": 8094,
                                                                "name": "tokenIndex",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7897,
                                                                "src": "3169:10:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                                    "typeString": "mapping(bytes32 => uint256)"
                                                                }
                                                            },
                                                            "id": 8096,
                                                            "indexExpression": {
                                                                "id": 8095,
                                                                "name": "tokenName",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8085,
                                                                "src": "3180:9:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "3169:21:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "3162:29:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "3156:36:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_via_$7877_storage",
                                                        "typeString": "struct Factory.via storage ref"
                                                    }
                                                },
                                                "id": 8099,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "3193:4:26",
                                                "memberName": "name",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 7876,
                                                "src": "3156:41:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "id": 8100,
                                                "name": "tokenName",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8085,
                                                "src": "3201:9:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "src": "3156:54:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "id": 8111,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "expression": {
                                                    "baseExpression": {
                                                        "id": 8102,
                                                        "name": "token",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7882,
                                                        "src": "3227:5:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_via_$7877_storage_$",
                                                            "typeString": "mapping(address => struct Factory.via storage ref)"
                                                        }
                                                    },
                                                    "id": 8108,
                                                    "indexExpression": {
                                                        "baseExpression": {
                                                            "id": 8103,
                                                            "name": "tokens",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7893,
                                                            "src": "3233:6:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                "typeString": "address[] storage ref"
                                                            }
                                                        },
                                                        "id": 8107,
                                                        "indexExpression": {
                                                            "baseExpression": {
                                                                "id": 8104,
                                                                "name": "tokenIndex",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7897,
                                                                "src": "3240:10:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                                    "typeString": "mapping(bytes32 => uint256)"
                                                                }
                                                            },
                                                            "id": 8106,
                                                            "indexExpression": {
                                                                "id": 8105,
                                                                "name": "tokenName",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8085,
                                                                "src": "3251:9:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "3240:21:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "3233:29:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "3227:36:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_via_$7877_storage",
                                                        "typeString": "struct Factory.via storage ref"
                                                    }
                                                },
                                                "id": 8109,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "3264:9:26",
                                                "memberName": "tokenType",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 7874,
                                                "src": "3227:46:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "id": 8110,
                                                "name": "tokenType",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8087,
                                                "src": "3277:9:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "src": "3227:59:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "src": "3156:130:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "expression": {
                                            "arguments": [
                                                {
                                                    "hexValue": "307830",
                                                    "id": 8121,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3391:3:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0x0"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    }
                                                ],
                                                "id": 8120,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "3383:7:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 8119,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3383:7:26",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 8122,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3383:12:26",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "functionReturnParameters": 8091,
                                        "id": 8123,
                                        "nodeType": "Return",
                                        "src": "3376:19:26"
                                    },
                                    "id": 8124,
                                    "nodeType": "IfStatement",
                                    "src": "3139:256:26",
                                    "trueBody": {
                                        "expression": {
                                            "baseExpression": {
                                                "id": 8113,
                                                "name": "tokens",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7893,
                                                "src": "3318:6:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                    "typeString": "address[] storage ref"
                                                }
                                            },
                                            "id": 8117,
                                            "indexExpression": {
                                                "baseExpression": {
                                                    "id": 8114,
                                                    "name": "tokenIndex",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7897,
                                                    "src": "3325:10:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                        "typeString": "mapping(bytes32 => uint256)"
                                                    }
                                                },
                                                "id": 8116,
                                                "indexExpression": {
                                                    "id": 8115,
                                                    "name": "tokenName",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8085,
                                                    "src": "3336:9:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "3325:21:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3318:29:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "functionReturnParameters": 8091,
                                        "id": 8118,
                                        "nodeType": "Return",
                                        "src": "3311:36:26"
                                    }
                                }
                            ]
                        },
                        "functionSelector": "f3458f14",
                        "id": 8126,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getTokenByNameType",
                        "nameLocation": "3041:18:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8088,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8085,
                                    "mutability": "mutable",
                                    "name": "tokenName",
                                    "nameLocation": "3068:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8126,
                                    "src": "3060:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8084,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3060:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8087,
                                    "mutability": "mutable",
                                    "name": "tokenType",
                                    "nameLocation": "3087:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8126,
                                    "src": "3079:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8086,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3079:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3059:38:26"
                        },
                        "returnParameters": {
                            "id": 8091,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8090,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8126,
                                    "src": "3120:7:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8089,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3120:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3119:9:26"
                        },
                        "scope": 8681,
                        "src": "3032:371:26",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10141
                        ],
                        "body": {
                            "id": 8141,
                            "nodeType": "Block",
                            "src": "3573:55:26",
                            "statements": [
                                {
                                    "expression": {
                                        "baseExpression": {
                                            "baseExpression": {
                                                "id": 8135,
                                                "name": "issuers",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7903,
                                                "src": "3591:7:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                                                    "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                                                }
                                            },
                                            "id": 8137,
                                            "indexExpression": {
                                                "id": 8136,
                                                "name": "tokenType",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8128,
                                                "src": "3599:9:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3591:18:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                "typeString": "mapping(bytes32 => address)"
                                            }
                                        },
                                        "id": 8139,
                                        "indexExpression": {
                                            "id": 8138,
                                            "name": "tokenName",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8130,
                                            "src": "3610:9:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3591:29:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "functionReturnParameters": 8134,
                                    "id": 8140,
                                    "nodeType": "Return",
                                    "src": "3584:36:26"
                                }
                            ]
                        },
                        "functionSelector": "2ea77917",
                        "id": 8142,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getIssuer",
                        "nameLocation": "3495:9:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8131,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8128,
                                    "mutability": "mutable",
                                    "name": "tokenType",
                                    "nameLocation": "3513:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8142,
                                    "src": "3505:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8127,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3505:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8130,
                                    "mutability": "mutable",
                                    "name": "tokenName",
                                    "nameLocation": "3532:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8142,
                                    "src": "3524:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8129,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3524:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3504:38:26"
                        },
                        "returnParameters": {
                            "id": 8134,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8133,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8142,
                                    "src": "3565:7:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8132,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3565:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3564:9:26"
                        },
                        "scope": 8681,
                        "src": "3486:142:26",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10150
                        ],
                        "body": {
                            "id": 8194,
                            "nodeType": "Block",
                            "src": "3784:304:26",
                            "statements": [
                                {
                                    "assignments": [
                                        8152
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 8152,
                                            "mutability": "mutable",
                                            "name": "found",
                                            "nameLocation": "3800:5:26",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 8194,
                                            "src": "3795:10:26",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 8151,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3795:4:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 8154,
                                    "initialValue": {
                                        "hexValue": "66616c7365",
                                        "id": 8153,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3808:5:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "value": "false"
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3795:18:26"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        },
                                        "id": 8164,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "expression": {
                                                "baseExpression": {
                                                    "id": 8155,
                                                    "name": "token",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7882,
                                                    "src": "3827:5:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_via_$7877_storage_$",
                                                        "typeString": "mapping(address => struct Factory.via storage ref)"
                                                    }
                                                },
                                                "id": 8161,
                                                "indexExpression": {
                                                    "baseExpression": {
                                                        "id": 8156,
                                                        "name": "tokens",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7893,
                                                        "src": "3833:6:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                            "typeString": "address[] storage ref"
                                                        }
                                                    },
                                                    "id": 8160,
                                                    "indexExpression": {
                                                        "baseExpression": {
                                                            "id": 8157,
                                                            "name": "tokenIndex",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7897,
                                                            "src": "3840:10:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                                "typeString": "mapping(bytes32 => uint256)"
                                                            }
                                                        },
                                                        "id": 8159,
                                                        "indexExpression": {
                                                            "id": 8158,
                                                            "name": "tokenName",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8144,
                                                            "src": "3851:9:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "3840:21:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "3833:29:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "3827:36:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_via_$7877_storage",
                                                    "typeString": "struct Factory.via storage ref"
                                                }
                                            },
                                            "id": 8162,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "3864:4:26",
                                            "memberName": "name",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 7876,
                                            "src": "3827:41:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "id": 8163,
                                            "name": "tokenName",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8144,
                                            "src": "3870:9:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "src": "3827:52:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 8169,
                                    "nodeType": "IfStatement",
                                    "src": "3824:82:26",
                                    "trueBody": {
                                        "expression": {
                                            "id": 8167,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                                "id": 8165,
                                                "name": "found",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8152,
                                                "src": "3894:5:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                                "hexValue": "74727565",
                                                "id": 8166,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "bool",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3902:4:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "value": "true"
                                            },
                                            "src": "3894:12:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "id": 8168,
                                        "nodeType": "ExpressionStatement",
                                        "src": "3894:12:26"
                                    }
                                },
                                {
                                    "condition": {
                                        "id": 8170,
                                        "name": "found",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8152,
                                        "src": "3920:5:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "expression": {
                                            "components": [
                                                {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "307830",
                                                            "id": 8188,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4071:3:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0x0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 8187,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "4063:7:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 8186,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4063:7:26",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 8189,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4063:12:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                {
                                                    "hexValue": "",
                                                    "id": 8190,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "string",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "4077:2:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                        "typeString": "literal_string \"\""
                                                    },
                                                    "value": ""
                                                }
                                            ],
                                            "id": 8191,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "4062:18:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$_t_address_$_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_$",
                                                "typeString": "tuple(address,literal_string \"\")"
                                            }
                                        },
                                        "functionReturnParameters": 8150,
                                        "id": 8192,
                                        "nodeType": "Return",
                                        "src": "4055:25:26"
                                    },
                                    "id": 8193,
                                    "nodeType": "IfStatement",
                                    "src": "3917:163:26",
                                    "trueBody": {
                                        "expression": {
                                            "components": [
                                                {
                                                    "baseExpression": {
                                                        "id": 8171,
                                                        "name": "tokens",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7893,
                                                        "src": "3948:6:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                            "typeString": "address[] storage ref"
                                                        }
                                                    },
                                                    "id": 8175,
                                                    "indexExpression": {
                                                        "baseExpression": {
                                                            "id": 8172,
                                                            "name": "tokenIndex",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7897,
                                                            "src": "3955:10:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                                "typeString": "mapping(bytes32 => uint256)"
                                                            }
                                                        },
                                                        "id": 8174,
                                                        "indexExpression": {
                                                            "id": 8173,
                                                            "name": "tokenName",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8144,
                                                            "src": "3966:9:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "3955:21:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "3948:29:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                {
                                                    "expression": {
                                                        "baseExpression": {
                                                            "id": 8176,
                                                            "name": "token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7882,
                                                            "src": "3979:5:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_via_$7877_storage_$",
                                                                "typeString": "mapping(address => struct Factory.via storage ref)"
                                                            }
                                                        },
                                                        "id": 8182,
                                                        "indexExpression": {
                                                            "baseExpression": {
                                                                "id": 8177,
                                                                "name": "tokens",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7893,
                                                                "src": "3985:6:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                    "typeString": "address[] storage ref"
                                                                }
                                                            },
                                                            "id": 8181,
                                                            "indexExpression": {
                                                                "baseExpression": {
                                                                    "id": 8178,
                                                                    "name": "tokenIndex",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7897,
                                                                    "src": "3992:10:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                                        "typeString": "mapping(bytes32 => uint256)"
                                                                    }
                                                                },
                                                                "id": 8180,
                                                                "indexExpression": {
                                                                    "id": 8179,
                                                                    "name": "tokenName",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8144,
                                                                    "src": "4003:9:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "3992:21:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "3985:29:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "3979:36:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_via_$7877_storage",
                                                            "typeString": "struct Factory.via storage ref"
                                                        }
                                                    },
                                                    "id": 8183,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "4016:9:26",
                                                    "memberName": "tokenType",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 7874,
                                                    "src": "3979:46:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                }
                                            ],
                                            "id": 8184,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "3947:79:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$_t_address_$_t_bytes32_$",
                                                "typeString": "tuple(address,bytes32)"
                                            }
                                        },
                                        "functionReturnParameters": 8150,
                                        "id": 8185,
                                        "nodeType": "Return",
                                        "src": "3940:86:26"
                                    }
                                }
                            ]
                        },
                        "functionSelector": "b96b2004",
                        "id": 8195,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getAddressAndType",
                        "nameLocation": "3707:17:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8145,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8144,
                                    "mutability": "mutable",
                                    "name": "tokenName",
                                    "nameLocation": "3733:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8195,
                                    "src": "3725:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8143,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3725:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3724:19:26"
                        },
                        "returnParameters": {
                            "id": 8150,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8147,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8195,
                                    "src": "3767:7:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8146,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3767:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8149,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8195,
                                    "src": "3776:7:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8148,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3776:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3766:18:26"
                        },
                        "scope": 8681,
                        "src": "3698:390:26",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10168
                        ],
                        "body": {
                            "id": 8210,
                            "nodeType": "Block",
                            "src": "4194:65:26",
                            "statements": [
                                {
                                    "expression": {
                                        "baseExpression": {
                                            "baseExpression": {
                                                "id": 8204,
                                                "name": "CryptoDataUrl",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7888,
                                                "src": "4212:13:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                                                    "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                                                }
                                            },
                                            "id": 8206,
                                            "indexExpression": {
                                                "id": 8205,
                                                "name": "fromCurrency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8197,
                                                "src": "4226:12:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "4212:27:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                "typeString": "mapping(bytes32 => address)"
                                            }
                                        },
                                        "id": 8208,
                                        "indexExpression": {
                                            "id": 8207,
                                            "name": "toCurrency",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8199,
                                            "src": "4240:10:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4212:39:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "functionReturnParameters": 8203,
                                    "id": 8209,
                                    "nodeType": "Return",
                                    "src": "4205:46:26"
                                }
                            ]
                        },
                        "functionSelector": "708b0773",
                        "id": 8211,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getCryptoDataUrl",
                        "nameLocation": "4105:16:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8200,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8197,
                                    "mutability": "mutable",
                                    "name": "fromCurrency",
                                    "nameLocation": "4130:12:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8211,
                                    "src": "4122:20:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8196,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4122:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8199,
                                    "mutability": "mutable",
                                    "name": "toCurrency",
                                    "nameLocation": "4152:10:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8211,
                                    "src": "4144:18:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8198,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4144:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4121:42:26"
                        },
                        "returnParameters": {
                            "id": 8203,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8202,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8211,
                                    "src": "4186:7:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8201,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4186:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4185:9:26"
                        },
                        "scope": 8681,
                        "src": "4096:163:26",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10236
                        ],
                        "body": {
                            "id": 8218,
                            "nodeType": "Block",
                            "src": "4367:32:26",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 8216,
                                        "name": "client",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7890,
                                        "src": "4385:6:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "functionReturnParameters": 8215,
                                    "id": 8217,
                                    "nodeType": "Return",
                                    "src": "4378:13:26"
                                }
                            ]
                        },
                        "functionSelector": "59dc735c",
                        "id": 8219,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getClient",
                        "nameLocation": "4325:9:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8212,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4334:2:26"
                        },
                        "returnParameters": {
                            "id": 8215,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8214,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8219,
                                    "src": "4359:7:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8213,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4359:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4358:9:26"
                        },
                        "scope": 8681,
                        "src": "4316:83:26",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10175
                        ],
                        "body": {
                            "id": 8230,
                            "nodeType": "Block",
                            "src": "4478:42:26",
                            "statements": [
                                {
                                    "expression": {
                                        "baseExpression": {
                                            "id": 8226,
                                            "name": "term",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7907,
                                            "src": "4496:4:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                "typeString": "mapping(address => uint256)"
                                            }
                                        },
                                        "id": 8228,
                                        "indexExpression": {
                                            "id": 8227,
                                            "name": "_bondToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8221,
                                            "src": "4501:10:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4496:16:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 8225,
                                    "id": 8229,
                                    "nodeType": "Return",
                                    "src": "4489:23:26"
                                }
                            ]
                        },
                        "functionSelector": "5af4730a",
                        "id": 8231,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getBondTerm",
                        "nameLocation": "4416:11:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8222,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8221,
                                    "mutability": "mutable",
                                    "name": "_bondToken",
                                    "nameLocation": "4436:10:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8231,
                                    "src": "4428:18:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8220,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4428:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4427:20:26"
                        },
                        "returnParameters": {
                            "id": 8225,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8224,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8231,
                                    "src": "4470:7:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 8223,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4470:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4469:9:26"
                        },
                        "scope": 8681,
                        "src": "4407:113:26",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10212
                        ],
                        "body": {
                            "id": 8238,
                            "nodeType": "Block",
                            "src": "4592:39:26",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 8236,
                                        "name": "FiatPayoutUrl",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7909,
                                        "src": "4610:13:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage",
                                            "typeString": "string storage ref"
                                        }
                                    },
                                    "functionReturnParameters": 8235,
                                    "id": 8237,
                                    "nodeType": "Return",
                                    "src": "4603:20:26"
                                }
                            ]
                        },
                        "functionSelector": "968eb4b2",
                        "id": 8239,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getFiatPayoutUrl",
                        "nameLocation": "4537:16:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8232,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4553:2:26"
                        },
                        "returnParameters": {
                            "id": 8235,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8234,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8239,
                                    "src": "4578:13:26",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 8233,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4578:6:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4577:15:26"
                        },
                        "scope": 8681,
                        "src": "4528:103:26",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 8282,
                            "nodeType": "Block",
                            "src": "4739:280:26",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 8254,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 8249,
                                                    "name": "implementation",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8241,
                                                    "src": "4758:14:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 8252,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4784:1:26",
                                                            "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": 8251,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "4776:7:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 8250,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4776:7:26",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 8253,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4776:10:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "4758:28:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "496e76616c696420696d706c656d656e746174696f6e",
                                                "id": 8255,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4788:24:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_26b47a002132cea0a925aef4dbf669c486d2d4b7979ed0c176a2e4f058e38c3c",
                                                    "typeString": "literal_string \"Invalid implementation\""
                                                },
                                                "value": "Invalid implementation"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_26b47a002132cea0a925aef4dbf669c486d2d4b7979ed0c176a2e4f058e38c3c",
                                                    "typeString": "literal_string \"Invalid implementation\""
                                                }
                                            ],
                                            "id": 8248,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "4750:7:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 8256,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4750:63:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 8257,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4750:63:26"
                                },
                                {
                                    "expression": {
                                        "id": 8262,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 8258,
                                            "name": "instance",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8246,
                                            "src": "4826:8:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [],
                                            "expression": {
                                                "argumentTypes": [],
                                                "expression": {
                                                    "id": 8259,
                                                    "name": "implementation",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8241,
                                                    "src": "4837:14:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 8260,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "4852:5:26",
                                                "memberName": "clone",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1583,
                                                "src": "4837:20:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_$attached_to$_t_address_$",
                                                    "typeString": "function (address) returns (address)"
                                                }
                                            },
                                            "id": 8261,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4837:22:26",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "4826:33:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 8263,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4826:33:26"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 8267,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "expression": {
                                                "id": 8264,
                                                "name": "initData",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8243,
                                                "src": "4876:8:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            },
                                            "id": 8265,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "4885:6:26",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "4876:15:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 8266,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4894:1:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "4876:19:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 8281,
                                    "nodeType": "IfStatement",
                                    "src": "4872:140:26",
                                    "trueBody": {
                                        "id": 8280,
                                        "nodeType": "Block",
                                        "src": "4897:115:26",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    8269,
                                                    null
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 8269,
                                                        "mutability": "mutable",
                                                        "name": "ok",
                                                        "nameLocation": "4918:2:26",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 8280,
                                                        "src": "4913:7:26",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "typeName": {
                                                            "id": 8268,
                                                            "name": "bool",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4913:4:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    },
                                                    null
                                                ],
                                                "id": 8274,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 8272,
                                                            "name": "initData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8243,
                                                            "src": "4940:8:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 8270,
                                                            "name": "instance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8246,
                                                            "src": "4926:8:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "id": 8271,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "4935:4:26",
                                                        "memberName": "call",
                                                        "nodeType": "MemberAccess",
                                                        "src": "4926:13:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                                        }
                                                    },
                                                    "id": 8273,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4926:23:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                                        "typeString": "tuple(bool,bytes memory)"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4912:37:26"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 8276,
                                                            "name": "ok",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8269,
                                                            "src": "4972:2:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "496e697469616c697a6174696f6e206661696c6564",
                                                            "id": 8277,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4976:23:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_0ced64e7a7e72856969cefe00640aa7f13f8db705f9748f7d3003a20bc61daa4",
                                                                "typeString": "literal_string \"Initialization failed\""
                                                            },
                                                            "value": "Initialization failed"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_0ced64e7a7e72856969cefe00640aa7f13f8db705f9748f7d3003a20bc61daa4",
                                                                "typeString": "literal_string \"Initialization failed\""
                                                            }
                                                        ],
                                                        "id": 8275,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4294967278,
                                                            4294967278
                                                        ],
                                                        "referencedDeclaration": 4294967278,
                                                        "src": "4964:7:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 8278,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4964:36:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8279,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4964:36:26"
                                            }
                                        ]
                                    }
                                }
                            ]
                        },
                        "id": 8283,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_deploy",
                        "nameLocation": "4648:7:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8244,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8241,
                                    "mutability": "mutable",
                                    "name": "implementation",
                                    "nameLocation": "4664:14:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8283,
                                    "src": "4656:22:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8240,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4656:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8243,
                                    "mutability": "mutable",
                                    "name": "initData",
                                    "nameLocation": "4693:8:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8283,
                                    "src": "4680:21:26",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 8242,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4680:5:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4655:47:26"
                        },
                        "returnParameters": {
                            "id": 8247,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8246,
                                    "mutability": "mutable",
                                    "name": "instance",
                                    "nameLocation": "4729:8:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8283,
                                    "src": "4721:16:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8245,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4721:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4720:18:26"
                        },
                        "scope": 8681,
                        "src": "4639:380:26",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "baseFunctions": [
                            10192
                        ],
                        "body": {
                            "id": 8459,
                            "nodeType": "Block",
                            "src": "5221:1378:26",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 8308,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 8303,
                                                    "name": "_target",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8285,
                                                    "src": "5250:7:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 8306,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5269:1:26",
                                                            "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": 8305,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "5261:7:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 8304,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5261:7:26",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 8307,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5261:10:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "5250:21:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "496e76616c696420746172676574",
                                                "id": 8309,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5273:16:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_164f3d59e2a28679dc250ce99ebb52c1c471e60b45e8d5fed5845fd337ce17c2",
                                                    "typeString": "literal_string \"Invalid target\""
                                                },
                                                "value": "Invalid target"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_164f3d59e2a28679dc250ce99ebb52c1c471e60b45e8d5fed5845fd337ce17c2",
                                                    "typeString": "literal_string \"Invalid target\""
                                                }
                                            ],
                                            "id": 8302,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "5242:7:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 8310,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5242:48:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 8311,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5242:48:26"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 8318,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 8313,
                                                    "name": "_oracle",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8293,
                                                    "src": "5309:7:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 8316,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5328:1:26",
                                                            "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": 8315,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "5320:7:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 8314,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5320:7:26",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 8317,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5320:10:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "5309:21:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "496e76616c6964206f7261636c65",
                                                "id": 8319,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5332:16:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_de7fece8e30bf0f898e690a7b1eb43d878faf9b1918d3a8d53bf179a80024feb",
                                                    "typeString": "literal_string \"Invalid oracle\""
                                                },
                                                "value": "Invalid oracle"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_de7fece8e30bf0f898e690a7b1eb43d878faf9b1918d3a8d53bf179a80024feb",
                                                    "typeString": "literal_string \"Invalid oracle\""
                                                }
                                            ],
                                            "id": 8312,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "5301:7:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 8320,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5301:48:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 8321,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5301:48:26"
                                },
                                {
                                    "assignments": [
                                        8323
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 8323,
                                            "mutability": "mutable",
                                            "name": "_payload",
                                            "nameLocation": "5383:8:26",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 8459,
                                            "src": "5370:21:26",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes"
                                            },
                                            "typeName": {
                                                "id": 8322,
                                                "name": "bytes",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5370:5:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_storage_ptr",
                                                    "typeString": "bytes"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 8324,
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5370:21:26"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        },
                                        "id": 8327,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 8325,
                                            "name": "tokenType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8289,
                                            "src": "5406:9:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "hexValue": "426f6e64",
                                            "id": 8326,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5419:6:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_0f4c8b8dbaf47dd5302438160de8604b817a049d3d53ed9cefaa77780c9e9346",
                                                "typeString": "literal_string \"Bond\""
                                            },
                                            "value": "Bond"
                                        },
                                        "src": "5406:19:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "expression": {
                                            "id": 8353,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                                "id": 8342,
                                                "name": "_payload",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8323,
                                                "src": "5622:8:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                                "arguments": [
                                                    {
                                                        "hexValue": "696e697469616c697a6528627974657333322c627974657333322c616464726573732c616464726573732c6164647265737329",
                                                        "id": 8345,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "string",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "5657:53:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_stringliteral_46499770cb37b7fb5f4ce48da88d9614f1c755be99ca74e0fb42a0c342d3a791",
                                                            "typeString": "literal_string \"initialize(bytes32,bytes32,address,address,address)\""
                                                        },
                                                        "value": "initialize(bytes32,bytes32,address,address,address)"
                                                    },
                                                    {
                                                        "id": 8346,
                                                        "name": "tokenName",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8287,
                                                        "src": "5711:9:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    {
                                                        "id": 8347,
                                                        "name": "tokenCurrency",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8291,
                                                        "src": "5721:13:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "id": 8348,
                                                            "name": "owner",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 417,
                                                            "src": "5735:5:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                "typeString": "function () view returns (address)"
                                                            }
                                                        },
                                                        "id": 8349,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "5735:7:26",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    {
                                                        "id": 8350,
                                                        "name": "_oracle",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8293,
                                                        "src": "5743:7:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    {
                                                        "id": 8351,
                                                        "name": "_fee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8297,
                                                        "src": "5751:4:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_stringliteral_46499770cb37b7fb5f4ce48da88d9614f1c755be99ca74e0fb42a0c342d3a791",
                                                            "typeString": "literal_string \"initialize(bytes32,bytes32,address,address,address)\""
                                                        },
                                                        {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 8343,
                                                        "name": "abi",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967295,
                                                        "src": "5633:3:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_abi",
                                                            "typeString": "abi"
                                                        }
                                                    },
                                                    "id": 8344,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberLocation": "5637:19:26",
                                                    "memberName": "encodeWithSignature",
                                                    "nodeType": "MemberAccess",
                                                    "src": "5633:23:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                        "typeString": "function (string memory) pure returns (bytes memory)"
                                                    }
                                                },
                                                "id": 8352,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5633:123:26",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            },
                                            "src": "5622:134:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                            }
                                        },
                                        "id": 8354,
                                        "nodeType": "ExpressionStatement",
                                        "src": "5622:134:26"
                                    },
                                    "id": 8355,
                                    "nodeType": "IfStatement",
                                    "src": "5402:354:26",
                                    "trueBody": {
                                        "expression": {
                                            "id": 8340,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                                "id": 8328,
                                                "name": "_payload",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8323,
                                                "src": "5444:8:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                                "arguments": [
                                                    {
                                                        "hexValue": "696e697469616c697a6528627974657333322c627974657333322c616464726573732c616464726573732c616464726573732c6164647265737329",
                                                        "id": 8331,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "string",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "5479:61:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_stringliteral_89d29c4c62aed23557cdd6503067fff926c36e4130ad6bce6fa6ed9d62392f96",
                                                            "typeString": "literal_string \"initialize(bytes32,bytes32,address,address,address,address)\""
                                                        },
                                                        "value": "initialize(bytes32,bytes32,address,address,address,address)"
                                                    },
                                                    {
                                                        "id": 8332,
                                                        "name": "tokenName",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8287,
                                                        "src": "5541:9:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    {
                                                        "id": 8333,
                                                        "name": "tokenCurrency",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8291,
                                                        "src": "5551:13:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "id": 8334,
                                                            "name": "owner",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 417,
                                                            "src": "5565:5:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                "typeString": "function () view returns (address)"
                                                            }
                                                        },
                                                        "id": 8335,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "5565:7:26",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    {
                                                        "id": 8336,
                                                        "name": "_oracle",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8293,
                                                        "src": "5573:7:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    {
                                                        "id": 8337,
                                                        "name": "_token",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8295,
                                                        "src": "5581:6:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    {
                                                        "id": 8338,
                                                        "name": "_fee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8297,
                                                        "src": "5588:4:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_stringliteral_89d29c4c62aed23557cdd6503067fff926c36e4130ad6bce6fa6ed9d62392f96",
                                                            "typeString": "literal_string \"initialize(bytes32,bytes32,address,address,address,address)\""
                                                        },
                                                        {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 8329,
                                                        "name": "abi",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967295,
                                                        "src": "5455:3:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_abi",
                                                            "typeString": "abi"
                                                        }
                                                    },
                                                    "id": 8330,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberLocation": "5459:19:26",
                                                    "memberName": "encodeWithSignature",
                                                    "nodeType": "MemberAccess",
                                                    "src": "5455:23:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                        "typeString": "function (string memory) pure returns (bytes memory)"
                                                    }
                                                },
                                                "id": 8339,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5455:138:26",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            },
                                            "src": "5444:149:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                            }
                                        },
                                        "id": 8341,
                                        "nodeType": "ExpressionStatement",
                                        "src": "5444:149:26"
                                    }
                                },
                                {
                                    "assignments": [
                                        8357
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 8357,
                                            "mutability": "mutable",
                                            "name": "issuer",
                                            "nameLocation": "5802:6:26",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 8459,
                                            "src": "5794:14:26",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 8356,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5794:7:26",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 8362,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 8359,
                                                "name": "_target",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8285,
                                                "src": "5819:7:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 8360,
                                                "name": "_payload",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8323,
                                                "src": "5828:8:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            ],
                                            "id": 8358,
                                            "name": "_deploy",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8283,
                                            "src": "5811:7:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$",
                                                "typeString": "function (address,bytes memory) returns (address)"
                                            }
                                        },
                                        "id": 8361,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5811:26:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5794:43:26"
                                },
                                {
                                    "assignments": [
                                        8364
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 8364,
                                            "mutability": "mutable",
                                            "name": "finalType",
                                            "nameLocation": "5858:9:26",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 8459,
                                            "src": "5850:17:26",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 8363,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5850:7:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 8365,
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5850:17:26"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        },
                                        "id": 8368,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 8366,
                                            "name": "tokenType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8289,
                                            "src": "5884:9:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "hexValue": "43617368",
                                            "id": 8367,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5897:6:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_1739b83a302deda3e993297a9ec8fd7bba94ba13c6895920678c8620b597d0b7",
                                                "typeString": "literal_string \"Cash\""
                                            },
                                            "value": "Cash"
                                        },
                                        "src": "5884:19:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "id": 8382,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 8380,
                                                "name": "tokenType",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8289,
                                                "src": "6030:9:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "hexValue": "426f6e64",
                                                "id": 8381,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6043:6:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_0f4c8b8dbaf47dd5302438160de8604b817a049d3d53ed9cefaa77780c9e9346",
                                                    "typeString": "literal_string \"Bond\""
                                                },
                                                "value": "Bond"
                                            },
                                            "src": "6030:19:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "falseBody": {
                                            "id": 8398,
                                            "nodeType": "Block",
                                            "src": "6172:49:26",
                                            "statements": [
                                                {
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "hexValue": "496e76616c69642074797065",
                                                                "id": 8395,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "string",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "6194:14:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_stringliteral_ddd8d792d83efdc10800f57c64a85c0cb5f2fa0097bd509ab3dd1cc3fbb027f4",
                                                                    "typeString": "literal_string \"Invalid type\""
                                                                },
                                                                "value": "Invalid type"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_ddd8d792d83efdc10800f57c64a85c0cb5f2fa0097bd509ab3dd1cc3fbb027f4",
                                                                    "typeString": "literal_string \"Invalid type\""
                                                                }
                                                            ],
                                                            "id": 8394,
                                                            "name": "revert",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [
                                                                4294967277,
                                                                4294967277
                                                            ],
                                                            "referencedDeclaration": 4294967277,
                                                            "src": "6187:6:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                                                "typeString": "function (string memory) pure"
                                                            }
                                                        },
                                                        "id": 8396,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "6187:22:26",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 8397,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "6187:22:26"
                                                }
                                            ]
                                        },
                                        "id": 8399,
                                        "nodeType": "IfStatement",
                                        "src": "6026:195:26",
                                        "trueBody": {
                                            "id": 8393,
                                            "nodeType": "Block",
                                            "src": "6051:115:26",
                                            "statements": [
                                                {
                                                    "expression": {
                                                        "id": 8385,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                            "id": 8383,
                                                            "name": "finalType",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8364,
                                                            "src": "6066:9:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "=",
                                                        "rightHandSide": {
                                                            "hexValue": "566961426f6e64",
                                                            "id": 8384,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6078:9:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_52973aa3d1d0b9b2038bddf6fa0399136f1ab1c5f89b7edd623ff24875d0ed1f",
                                                                "typeString": "literal_string \"ViaBond\""
                                                            },
                                                            "value": "ViaBond"
                                                        },
                                                        "src": "6066:21:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "id": 8386,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "6066:21:26"
                                                },
                                                {
                                                    "eventCall": {
                                                        "arguments": [
                                                            {
                                                                "id": 8388,
                                                                "name": "issuer",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8357,
                                                                "src": "6125:6:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "id": 8389,
                                                                "name": "tokenName",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8287,
                                                                "src": "6133:9:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            {
                                                                "id": 8390,
                                                                "name": "tokenType",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8289,
                                                                "src": "6144:9:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            ],
                                                            "id": 8387,
                                                            "name": "BondIssuerCreated",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7936,
                                                            "src": "6107:17:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$returns$__$",
                                                                "typeString": "function (address,bytes32,bytes32)"
                                                            }
                                                        },
                                                        "id": 8391,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "6107:47:26",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 8392,
                                                    "nodeType": "EmitStatement",
                                                    "src": "6102:52:26"
                                                }
                                            ]
                                        }
                                    },
                                    "id": 8400,
                                    "nodeType": "IfStatement",
                                    "src": "5880:341:26",
                                    "trueBody": {
                                        "id": 8379,
                                        "nodeType": "Block",
                                        "src": "5905:115:26",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 8371,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 8369,
                                                        "name": "finalType",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8364,
                                                        "src": "5920:9:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "56696143617368",
                                                        "id": 8370,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "string",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "5932:9:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_stringliteral_3c30a0e8e1c782e31ccb8fae07c6066a8040aa799f508e8cb657fa62c08db465",
                                                            "typeString": "literal_string \"ViaCash\""
                                                        },
                                                        "value": "ViaCash"
                                                    },
                                                    "src": "5920:21:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "id": 8372,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5920:21:26"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 8374,
                                                            "name": "issuer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8357,
                                                            "src": "5979:6:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8375,
                                                            "name": "tokenName",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8287,
                                                            "src": "5987:9:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 8376,
                                                            "name": "tokenType",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8289,
                                                            "src": "5998:9:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "id": 8373,
                                                        "name": "CashIssuerCreated",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7928,
                                                        "src": "5961:17:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$returns$__$",
                                                            "typeString": "function (address,bytes32,bytes32)"
                                                        }
                                                    },
                                                    "id": 8377,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5961:47:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8378,
                                                "nodeType": "EmitStatement",
                                                "src": "5956:52:26"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "id": 8408,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 8401,
                                                "name": "token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7882,
                                                "src": "6233:5:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_via_$7877_storage_$",
                                                    "typeString": "mapping(address => struct Factory.via storage ref)"
                                                }
                                            },
                                            "id": 8403,
                                            "indexExpression": {
                                                "id": 8402,
                                                "name": "issuer",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8357,
                                                "src": "6239:6:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "6233:13:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_via_$7877_storage",
                                                "typeString": "struct Factory.via storage ref"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "id": 8405,
                                                    "name": "finalType",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8364,
                                                    "src": "6253:9:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                {
                                                    "id": 8406,
                                                    "name": "tokenName",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8287,
                                                    "src": "6264:9:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                ],
                                                "id": 8404,
                                                "name": "via",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7877,
                                                "src": "6249:3:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_struct$_via_$7877_storage_ptr_$",
                                                    "typeString": "type(struct Factory.via storage pointer)"
                                                }
                                            },
                                            "id": 8407,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "structConstructorCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "6249:25:26",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_via_$7877_memory_ptr",
                                                "typeString": "struct Factory.via memory"
                                            }
                                        },
                                        "src": "6233:41:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_via_$7877_storage",
                                            "typeString": "struct Factory.via storage ref"
                                        }
                                    },
                                    "id": 8409,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6233:41:26"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "id": 8426,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 8414,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "baseExpression": {
                                                    "id": 8410,
                                                    "name": "tokenIndex",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7897,
                                                    "src": "6291:10:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                        "typeString": "mapping(bytes32 => uint256)"
                                                    }
                                                },
                                                "id": 8412,
                                                "indexExpression": {
                                                    "id": 8411,
                                                    "name": "tokenName",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8287,
                                                    "src": "6302:9:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "6291:21:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "hexValue": "30",
                                                "id": 8413,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6316:1:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            "src": "6291:26:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                            "components": [
                                                {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 8424,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 8418,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 8415,
                                                                "name": "tokens",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7893,
                                                                "src": "6322:6:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                    "typeString": "address[] storage ref"
                                                                }
                                                            },
                                                            "id": 8416,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "6329:6:26",
                                                            "memberName": "length",
                                                            "nodeType": "MemberAccess",
                                                            "src": "6322:13:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "hexValue": "30",
                                                            "id": 8417,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6339:1:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "src": "6322:18:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "||",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "id": 8423,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "baseExpression": {
                                                                "id": 8419,
                                                                "name": "tokens",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7893,
                                                                "src": "6344:6:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                    "typeString": "address[] storage ref"
                                                                }
                                                            },
                                                            "id": 8421,
                                                            "indexExpression": {
                                                                "hexValue": "30",
                                                                "id": 8420,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "6351:1:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "6344:9:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "!=",
                                                        "rightExpression": {
                                                            "id": 8422,
                                                            "name": "issuer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8357,
                                                            "src": "6357:6:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "src": "6344:19:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "6322:41:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                }
                                            ],
                                            "id": 8425,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "6321:43:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "src": "6291:73:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "id": 8449,
                                        "nodeType": "Block",
                                        "src": "6470:65:26",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 8447,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 8441,
                                                            "name": "tokens",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7893,
                                                            "src": "6485:6:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                "typeString": "address[] storage ref"
                                                            }
                                                        },
                                                        "id": 8445,
                                                        "indexExpression": {
                                                            "baseExpression": {
                                                                "id": 8442,
                                                                "name": "tokenIndex",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7897,
                                                                "src": "6492:10:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                                    "typeString": "mapping(bytes32 => uint256)"
                                                                }
                                                            },
                                                            "id": 8444,
                                                            "indexExpression": {
                                                                "id": 8443,
                                                                "name": "tokenName",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8287,
                                                                "src": "6503:9:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "6492:21:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "6485:29:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 8446,
                                                        "name": "issuer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8357,
                                                        "src": "6517:6:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "6485:38:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 8448,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6485:38:26"
                                            }
                                        ]
                                    },
                                    "id": 8450,
                                    "nodeType": "IfStatement",
                                    "src": "6287:248:26",
                                    "trueBody": {
                                        "id": 8440,
                                        "nodeType": "Block",
                                        "src": "6366:98:26",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 8432,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 8427,
                                                            "name": "tokenIndex",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7897,
                                                            "src": "6381:10:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                                "typeString": "mapping(bytes32 => uint256)"
                                                            }
                                                        },
                                                        "id": 8429,
                                                        "indexExpression": {
                                                            "id": 8428,
                                                            "name": "tokenName",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8287,
                                                            "src": "6392:9:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "6381:21:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "expression": {
                                                            "id": 8430,
                                                            "name": "tokens",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7893,
                                                            "src": "6405:6:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                "typeString": "address[] storage ref"
                                                            }
                                                        },
                                                        "id": 8431,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "6412:6:26",
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "6405:13:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "6381:37:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 8433,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6381:37:26"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 8437,
                                                            "name": "issuer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8357,
                                                            "src": "6445:6:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 8434,
                                                            "name": "tokens",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7893,
                                                            "src": "6433:6:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                "typeString": "address[] storage ref"
                                                            }
                                                        },
                                                        "id": 8436,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "6440:4:26",
                                                        "memberName": "push",
                                                        "nodeType": "MemberAccess",
                                                        "src": "6433:11:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$",
                                                            "typeString": "function (address[] storage pointer,address)"
                                                        }
                                                    },
                                                    "id": 8438,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6433:19:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8439,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6433:19:26"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "id": 8457,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "baseExpression": {
                                                    "id": 8451,
                                                    "name": "issuers",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7903,
                                                    "src": "6547:7:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                                                        "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                                                    }
                                                },
                                                "id": 8454,
                                                "indexExpression": {
                                                    "id": 8452,
                                                    "name": "finalType",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8364,
                                                    "src": "6555:9:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "6547:18:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                    "typeString": "mapping(bytes32 => address)"
                                                }
                                            },
                                            "id": 8455,
                                            "indexExpression": {
                                                "id": 8453,
                                                "name": "tokenCurrency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8291,
                                                "src": "6566:13:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "6547:33:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 8456,
                                            "name": "issuer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8357,
                                            "src": "6583:6:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "6547:42:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 8458,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6547:42:26"
                                }
                            ]
                        },
                        "functionSelector": "88a365f4",
                        "id": 8460,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 8300,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 8299,
                                    "name": "onlyOwner",
                                    "nameLocations": [
                                        "5203:9:26"
                                    ],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 401,
                                    "src": "5203:9:26"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "5203:9:26"
                            }
                        ],
                        "name": "createIssuer",
                        "nameLocation": "5065:12:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8298,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8285,
                                    "mutability": "mutable",
                                    "name": "_target",
                                    "nameLocation": "5086:7:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8460,
                                    "src": "5078:15:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8284,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5078:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8287,
                                    "mutability": "mutable",
                                    "name": "tokenName",
                                    "nameLocation": "5103:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8460,
                                    "src": "5095:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8286,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5095:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8289,
                                    "mutability": "mutable",
                                    "name": "tokenType",
                                    "nameLocation": "5122:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8460,
                                    "src": "5114:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8288,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5114:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8291,
                                    "mutability": "mutable",
                                    "name": "tokenCurrency",
                                    "nameLocation": "5141:13:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8460,
                                    "src": "5133:21:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8290,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5133:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8293,
                                    "mutability": "mutable",
                                    "name": "_oracle",
                                    "nameLocation": "5164:7:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8460,
                                    "src": "5156:15:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8292,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5156:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8295,
                                    "mutability": "mutable",
                                    "name": "_token",
                                    "nameLocation": "5181:6:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8460,
                                    "src": "5173:14:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8294,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5173:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8297,
                                    "mutability": "mutable",
                                    "name": "_fee",
                                    "nameLocation": "5197:4:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8460,
                                    "src": "5189:12:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8296,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5189:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5077:125:26"
                        },
                        "returnParameters": {
                            "id": 8301,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "5221:0:26"
                        },
                        "scope": 8681,
                        "src": "5056:1543:26",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10207
                        ],
                        "body": {
                            "id": 8534,
                            "nodeType": "Block",
                            "src": "6766:523:26",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "id": 8488,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    },
                                                    "id": 8482,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 8476,
                                                                "name": "token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7882,
                                                                "src": "6785:5:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_via_$7877_storage_$",
                                                                    "typeString": "mapping(address => struct Factory.via storage ref)"
                                                                }
                                                            },
                                                            "id": 8479,
                                                            "indexExpression": {
                                                                "expression": {
                                                                    "id": 8477,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967281,
                                                                    "src": "6791:3:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 8478,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "6795:6:26",
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "6791:10:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "6785:17:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_via_$7877_storage",
                                                                "typeString": "struct Factory.via storage ref"
                                                            }
                                                        },
                                                        "id": 8480,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "6803:9:26",
                                                        "memberName": "tokenType",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 7874,
                                                        "src": "6785:27:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "hexValue": "566961426f6e64",
                                                        "id": 8481,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "string",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "6816:9:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_stringliteral_52973aa3d1d0b9b2038bddf6fa0399136f1ab1c5f89b7edd623ff24875d0ed1f",
                                                            "typeString": "literal_string \"ViaBond\""
                                                        },
                                                        "value": "ViaBond"
                                                    },
                                                    "src": "6785:40:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "||",
                                                "rightExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "id": 8487,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 8483,
                                                            "name": "msg",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967281,
                                                            "src": "6829:3:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_message",
                                                                "typeString": "msg"
                                                            }
                                                        },
                                                        "id": 8484,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "6833:6:26",
                                                        "memberName": "sender",
                                                        "nodeType": "MemberAccess",
                                                        "src": "6829:10:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "id": 8485,
                                                            "name": "owner",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 417,
                                                            "src": "6841:5:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                "typeString": "function () view returns (address)"
                                                            }
                                                        },
                                                        "id": 8486,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "nameLocations": [],
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "6841:7:26",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "6829:19:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "src": "6785:63:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            ],
                                            "id": 8475,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "6777:7:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                                "typeString": "function (bool) pure"
                                            }
                                        },
                                        "id": 8489,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6777:72:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 8490,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6777:72:26"
                                },
                                {
                                    "assignments": [
                                        8492
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 8492,
                                            "mutability": "mutable",
                                            "name": "_payload",
                                            "nameLocation": "6875:8:26",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 8534,
                                            "src": "6862:21:26",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes"
                                            },
                                            "typeName": {
                                                "id": 8491,
                                                "name": "bytes",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "6862:5:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_storage_ptr",
                                                    "typeString": "bytes"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 8503,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "hexValue": "696e697469616c697a6528627974657333322c616464726573732c616464726573732c616464726573732c6279746573333229",
                                                "id": 8495,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "6910:53:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_b5ddca1d0434650cd6a0c3f2bf7f2b3df2b36e849d58c7f2b083ed67b90ba5b4",
                                                    "typeString": "literal_string \"initialize(bytes32,address,address,address,bytes32)\""
                                                },
                                                "value": "initialize(bytes32,address,address,address,bytes32)"
                                            },
                                            {
                                                "id": 8496,
                                                "name": "tokenName",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8468,
                                                "src": "6965:9:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            {
                                                "id": 8497,
                                                "name": "issuer",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8464,
                                                "src": "6976:6:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 8498,
                                                "name": "payee",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8466,
                                                "src": "6984:5:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 8499,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "6991:3:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 8500,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "6995:6:26",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "6991:10:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 8501,
                                                "name": "tokenSymbol",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8470,
                                                "src": "7003:11:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_b5ddca1d0434650cd6a0c3f2bf7f2b3df2b36e849d58c7f2b083ed67b90ba5b4",
                                                    "typeString": "literal_string \"initialize(bytes32,address,address,address,bytes32)\""
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            ],
                                            "expression": {
                                                "id": 8493,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4294967295,
                                                "src": "6886:3:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_abi",
                                                    "typeString": "abi"
                                                }
                                            },
                                            "id": 8494,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberLocation": "6890:19:26",
                                            "memberName": "encodeWithSignature",
                                            "nodeType": "MemberAccess",
                                            "src": "6886:23:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function (string memory) pure returns (bytes memory)"
                                            }
                                        },
                                        "id": 8502,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6886:129:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6862:153:26"
                                },
                                {
                                    "assignments": [
                                        8505
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 8505,
                                            "mutability": "mutable",
                                            "name": "_token",
                                            "nameLocation": "7061:6:26",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 8534,
                                            "src": "7053:14:26",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 8504,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7053:7:26",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 8510,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 8507,
                                                "name": "_target",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8462,
                                                "src": "7078:7:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 8508,
                                                "name": "_payload",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8492,
                                                "src": "7087:8:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            ],
                                            "id": 8506,
                                            "name": "_deploy",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8283,
                                            "src": "7070:7:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$",
                                                "typeString": "function (address,bytes memory) returns (address)"
                                            }
                                        },
                                        "id": 8509,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7070:26:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7053:43:26"
                                },
                                {
                                    "expression": {
                                        "id": 8518,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 8511,
                                                "name": "token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7882,
                                                "src": "7117:5:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_via_$7877_storage_$",
                                                    "typeString": "mapping(address => struct Factory.via storage ref)"
                                                }
                                            },
                                            "id": 8513,
                                            "indexExpression": {
                                                "id": 8512,
                                                "name": "_token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8505,
                                                "src": "7123:6:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "7117:13:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_via_$7877_storage",
                                                "typeString": "struct Factory.via storage ref"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "hexValue": "566961426f6e64546f6b656e",
                                                    "id": 8515,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "string",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "7137:14:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_stringliteral_4c19ae4ab2cb4ec4ecfdd0e1418f065638103e1c91c3461c18dc6cee3fc03c59",
                                                        "typeString": "literal_string \"ViaBondToken\""
                                                    },
                                                    "value": "ViaBondToken"
                                                },
                                                {
                                                    "id": 8516,
                                                    "name": "tokenName",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8468,
                                                    "src": "7153:9:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_stringliteral_4c19ae4ab2cb4ec4ecfdd0e1418f065638103e1c91c3461c18dc6cee3fc03c59",
                                                        "typeString": "literal_string \"ViaBondToken\""
                                                    },
                                                    {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                ],
                                                "id": 8514,
                                                "name": "via",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7877,
                                                "src": "7133:3:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_struct$_via_$7877_storage_ptr_$",
                                                    "typeString": "type(struct Factory.via storage pointer)"
                                                }
                                            },
                                            "id": 8517,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "structConstructorCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7133:30:26",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_via_$7877_memory_ptr",
                                                "typeString": "struct Factory.via memory"
                                            }
                                        },
                                        "src": "7117:46:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_via_$7877_storage",
                                            "typeString": "struct Factory.via storage ref"
                                        }
                                    },
                                    "id": 8519,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7117:46:26"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 8523,
                                                "name": "_token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8505,
                                                "src": "7186:6:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "expression": {
                                                "id": 8520,
                                                "name": "tokens",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7893,
                                                "src": "7174:6:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                    "typeString": "address[] storage ref"
                                                }
                                            },
                                            "id": 8522,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "7181:4:26",
                                            "memberName": "push",
                                            "nodeType": "MemberAccess",
                                            "src": "7174:11:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$",
                                                "typeString": "function (address[] storage pointer,address)"
                                            }
                                        },
                                        "id": 8524,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7174:19:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 8525,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7174:19:26"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "id": 8527,
                                                "name": "_token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8505,
                                                "src": "7224:6:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 8528,
                                                "name": "tokenSymbol",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8470,
                                                "src": "7232:11:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            {
                                                "hexValue": "566961426f6e64",
                                                "id": 8529,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7245:9:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_52973aa3d1d0b9b2038bddf6fa0399136f1ab1c5f89b7edd623ff24875d0ed1f",
                                                    "typeString": "literal_string \"ViaBond\""
                                                },
                                                "value": "ViaBond"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_52973aa3d1d0b9b2038bddf6fa0399136f1ab1c5f89b7edd623ff24875d0ed1f",
                                                    "typeString": "literal_string \"ViaBond\""
                                                }
                                            ],
                                            "id": 8526,
                                            "name": "TokenCreated",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7944,
                                            "src": "7211:12:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$returns$__$",
                                                "typeString": "function (address,bytes32,bytes32)"
                                            }
                                        },
                                        "id": 8530,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7211:44:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 8531,
                                    "nodeType": "EmitStatement",
                                    "src": "7206:49:26"
                                },
                                {
                                    "expression": {
                                        "id": 8532,
                                        "name": "_token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8505,
                                        "src": "7275:6:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "functionReturnParameters": 8474,
                                    "id": 8533,
                                    "nodeType": "Return",
                                    "src": "7268:13:26"
                                }
                            ]
                        },
                        "functionSelector": "3b518bbd",
                        "id": 8535,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "createToken",
                        "nameLocation": "6641:11:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8471,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8462,
                                    "mutability": "mutable",
                                    "name": "_target",
                                    "nameLocation": "6661:7:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8535,
                                    "src": "6653:15:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8461,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6653:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8464,
                                    "mutability": "mutable",
                                    "name": "issuer",
                                    "nameLocation": "6678:6:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8535,
                                    "src": "6670:14:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8463,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6670:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8466,
                                    "mutability": "mutable",
                                    "name": "payee",
                                    "nameLocation": "6694:5:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8535,
                                    "src": "6686:13:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8465,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6686:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8468,
                                    "mutability": "mutable",
                                    "name": "tokenName",
                                    "nameLocation": "6709:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8535,
                                    "src": "6701:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8467,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6701:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8470,
                                    "mutability": "mutable",
                                    "name": "tokenSymbol",
                                    "nameLocation": "6728:11:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8535,
                                    "src": "6720:19:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8469,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6720:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6652:88:26"
                        },
                        "returnParameters": {
                            "id": 8474,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8473,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8535,
                                    "src": "6758:7:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8472,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6758:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6757:9:26"
                        },
                        "scope": 8681,
                        "src": "6632:657:26",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10226
                        ],
                        "body": {
                            "id": 8556,
                            "nodeType": "Block",
                            "src": "7415:68:26",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 8554,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "baseExpression": {
                                                    "id": 8548,
                                                    "name": "CryptoDataUrl",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7888,
                                                    "src": "7426:13:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
                                                        "typeString": "mapping(bytes32 => mapping(bytes32 => address))"
                                                    }
                                                },
                                                "id": 8551,
                                                "indexExpression": {
                                                    "id": 8549,
                                                    "name": "_fromCurrency",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8539,
                                                    "src": "7440:13:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "7426:28:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                    "typeString": "mapping(bytes32 => address)"
                                                }
                                            },
                                            "id": 8552,
                                            "indexExpression": {
                                                "id": 8550,
                                                "name": "_toCurrency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8541,
                                                "src": "7455:11:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "7426:41:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 8553,
                                            "name": "_feed",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8537,
                                            "src": "7470:5:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "7426:49:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 8555,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7426:49:26"
                                }
                            ]
                        },
                        "functionSelector": "0661722f",
                        "id": 8557,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "expression": {
                                            "id": 8544,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967281,
                                            "src": "7394:3:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                            }
                                        },
                                        "id": 8545,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "7398:6:26",
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "7394:10:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    }
                                ],
                                "id": 8546,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 8543,
                                    "name": "onlyManager",
                                    "nameLocations": [
                                        "7382:11:26"
                                    ],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 7992,
                                    "src": "7382:11:26"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "7382:23:26"
                            }
                        ],
                        "name": "setCryptoDataURL",
                        "nameLocation": "7306:16:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8542,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8537,
                                    "mutability": "mutable",
                                    "name": "_feed",
                                    "nameLocation": "7331:5:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8557,
                                    "src": "7323:13:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8536,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7323:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8539,
                                    "mutability": "mutable",
                                    "name": "_fromCurrency",
                                    "nameLocation": "7346:13:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8557,
                                    "src": "7338:21:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8538,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7338:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8541,
                                    "mutability": "mutable",
                                    "name": "_toCurrency",
                                    "nameLocation": "7369:11:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8557,
                                    "src": "7361:19:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8540,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7361:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "7322:59:26"
                        },
                        "returnParameters": {
                            "id": 8547,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "7415:0:26"
                        },
                        "scope": 8681,
                        "src": "7297:186:26",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10243
                        ],
                        "body": {
                            "id": 8582,
                            "nodeType": "Block",
                            "src": "7556:140:26",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 8572,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 8566,
                                                                    "name": "_bondToken",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8559,
                                                                    "src": "7584:10:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 8565,
                                                                "name": "ViaToken",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 10367,
                                                                "src": "7575:8:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_ViaToken_$10367_$",
                                                                    "typeString": "type(contract ViaToken)"
                                                                }
                                                            },
                                                            "id": 8567,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "7575:20:26",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ViaToken_$10367",
                                                                "typeString": "contract ViaToken"
                                                            }
                                                        },
                                                        "id": 8568,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "7596:9:26",
                                                        "memberName": "getIssuer",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 10297,
                                                        "src": "7575:30:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                            "typeString": "function () view external returns (address)"
                                                        }
                                                    },
                                                    "id": 8569,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7575:32:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "expression": {
                                                        "id": 8570,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967281,
                                                        "src": "7609:3:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 8571,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "7613:6:26",
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "src": "7609:10:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "7575:44:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "4f6e6c79206973737565722063616e2073657420626f6e64207465726d",
                                                "id": 8573,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7621:31:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_7d0138d89de4c582a2d8d327af85600121a748f37a1184aad78fbd63a64c2cf4",
                                                    "typeString": "literal_string \"Only issuer can set bond term\""
                                                },
                                                "value": "Only issuer can set bond term"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_7d0138d89de4c582a2d8d327af85600121a748f37a1184aad78fbd63a64c2cf4",
                                                    "typeString": "literal_string \"Only issuer can set bond term\""
                                                }
                                            ],
                                            "id": 8564,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                4294967278,
                                                4294967278
                                            ],
                                            "referencedDeclaration": 4294967278,
                                            "src": "7567:7:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 8574,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7567:86:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 8575,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7567:86:26"
                                },
                                {
                                    "expression": {
                                        "id": 8580,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 8576,
                                                "name": "term",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7907,
                                                "src": "7664:4:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 8578,
                                            "indexExpression": {
                                                "id": 8577,
                                                "name": "_bondToken",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8559,
                                                "src": "7669:10:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "7664:16:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 8579,
                                            "name": "_term",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8561,
                                            "src": "7683:5:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "7664:24:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 8581,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7664:24:26"
                                }
                            ]
                        },
                        "functionSelector": "5810c6ce",
                        "id": 8583,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "setBondTerm",
                        "nameLocation": "7500:11:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8562,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8559,
                                    "mutability": "mutable",
                                    "name": "_bondToken",
                                    "nameLocation": "7520:10:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8583,
                                    "src": "7512:18:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8558,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7512:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8561,
                                    "mutability": "mutable",
                                    "name": "_term",
                                    "nameLocation": "7540:5:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8583,
                                    "src": "7532:13:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 8560,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7532:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "7511:35:26"
                        },
                        "returnParameters": {
                            "id": 8563,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "7556:0:26"
                        },
                        "scope": 8681,
                        "src": "7491:205:26",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10231
                        ],
                        "body": {
                            "id": 8594,
                            "nodeType": "Block",
                            "src": "7766:35:26",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 8592,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 8590,
                                            "name": "client",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7890,
                                            "src": "7777:6:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 8591,
                                            "name": "_client",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8585,
                                            "src": "7786:7:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "7777:16:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 8593,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7777:16:26"
                                }
                            ]
                        },
                        "functionSelector": "805ef812",
                        "id": 8595,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 8588,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 8587,
                                    "name": "onlyOwner",
                                    "nameLocations": [
                                        "7747:9:26"
                                    ],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 401,
                                    "src": "7747:9:26"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "7747:9:26"
                            }
                        ],
                        "name": "setClientAddress",
                        "nameLocation": "7713:16:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8586,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8585,
                                    "mutability": "mutable",
                                    "name": "_client",
                                    "nameLocation": "7738:7:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8595,
                                    "src": "7730:15:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8584,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7730:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "7729:17:26"
                        },
                        "returnParameters": {
                            "id": 8589,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "7766:0:26"
                        },
                        "scope": 8681,
                        "src": "7704:97:26",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10217
                        ],
                        "body": {
                            "id": 8606,
                            "nodeType": "Block",
                            "src": "7876:39:26",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 8604,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 8602,
                                            "name": "FiatPayoutUrl",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7909,
                                            "src": "7887:13:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_string_storage",
                                                "typeString": "string storage ref"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 8603,
                                            "name": "_url",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8597,
                                            "src": "7903:4:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_string_calldata_ptr",
                                                "typeString": "string calldata"
                                            }
                                        },
                                        "src": "7887:20:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage",
                                            "typeString": "string storage ref"
                                        }
                                    },
                                    "id": 8605,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7887:20:26"
                                }
                            ]
                        },
                        "functionSelector": "baa796bd",
                        "id": 8607,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 8600,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 8599,
                                    "name": "onlyOwner",
                                    "nameLocations": [
                                        "7857:9:26"
                                    ],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 401,
                                    "src": "7857:9:26"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "7857:9:26"
                            }
                        ],
                        "name": "setFiatPayoutUrl",
                        "nameLocation": "7818:16:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8598,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8597,
                                    "mutability": "mutable",
                                    "name": "_url",
                                    "nameLocation": "7851:4:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8607,
                                    "src": "7835:20:26",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_calldata_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 8596,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7835:6:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "7834:22:26"
                        },
                        "returnParameters": {
                            "id": 8601,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "7876:0:26"
                        },
                        "scope": 8681,
                        "src": "7809:106:26",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10250
                        ],
                        "body": {
                            "id": 8649,
                            "nodeType": "Block",
                            "src": "8016:266:26",
                            "statements": [
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 8622,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "baseExpression": {
                                                "id": 8618,
                                                "name": "currencyIndex",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7916,
                                                "src": "8030:13:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                    "typeString": "mapping(bytes32 => uint256)"
                                                }
                                            },
                                            "id": 8620,
                                            "indexExpression": {
                                                "id": 8619,
                                                "name": "_currency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8609,
                                                "src": "8044:9:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8030:24:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 8621,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8056:1:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "8030:27:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 8648,
                                    "nodeType": "IfStatement",
                                    "src": "8027:248:26",
                                    "trueBody": {
                                        "id": 8647,
                                        "nodeType": "Block",
                                        "src": "8058:217:26",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 8626,
                                                            "name": "_currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8609,
                                                            "src": "8089:9:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 8623,
                                                            "name": "currencies",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7912,
                                                            "src": "8073:10:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                                                "typeString": "bytes32[] storage ref"
                                                            }
                                                        },
                                                        "id": 8625,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "8084:4:26",
                                                        "memberName": "push",
                                                        "nodeType": "MemberAccess",
                                                        "src": "8073:15:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$",
                                                            "typeString": "function (bytes32[] storage pointer,bytes32)"
                                                        }
                                                    },
                                                    "id": 8627,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8073:26:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8628,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8073:26:26"
                                            },
                                            {
                                                "expression": {
                                                    "id": 8634,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 8629,
                                                            "name": "currencyIndex",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7916,
                                                            "src": "8114:13:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                                "typeString": "mapping(bytes32 => uint256)"
                                                            }
                                                        },
                                                        "id": 8631,
                                                        "indexExpression": {
                                                            "id": 8630,
                                                            "name": "_currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8609,
                                                            "src": "8128:9:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "8114:24:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "expression": {
                                                            "id": 8632,
                                                            "name": "currencies",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7912,
                                                            "src": "8141:10:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                                                "typeString": "bytes32[] storage ref"
                                                            }
                                                        },
                                                        "id": 8633,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "8152:6:26",
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "8141:17:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "8114:44:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 8635,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8114:44:26"
                                            },
                                            {
                                                "expression": {
                                                    "id": 8640,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 8636,
                                                            "name": "currencyAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7920,
                                                            "src": "8173:15:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                                "typeString": "mapping(bytes32 => address)"
                                                            }
                                                        },
                                                        "id": 8638,
                                                        "indexExpression": {
                                                            "id": 8637,
                                                            "name": "_currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8609,
                                                            "src": "8189:9:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "8173:26:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 8639,
                                                        "name": "_address",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8611,
                                                        "src": "8202:8:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "8173:37:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 8641,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8173:37:26"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 8643,
                                                            "name": "_address",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8611,
                                                            "src": "8243:8:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8644,
                                                            "name": "_currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8609,
                                                            "src": "8253:9:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "id": 8642,
                                                        "name": "SupportToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7950,
                                                        "src": "8230:12:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                                                            "typeString": "function (address,bytes32)"
                                                        }
                                                    },
                                                    "id": 8645,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8230:33:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8646,
                                                "nodeType": "EmitStatement",
                                                "src": "8225:38:26"
                                            }
                                        ]
                                    }
                                }
                            ]
                        },
                        "functionSelector": "d6a5aad8",
                        "id": 8650,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "expression": {
                                            "id": 8614,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967281,
                                            "src": "7995:3:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                            }
                                        },
                                        "id": 8615,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "7999:6:26",
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "7995:10:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    }
                                ],
                                "id": 8616,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 8613,
                                    "name": "onlyManager",
                                    "nameLocations": [
                                        "7983:11:26"
                                    ],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 7992,
                                    "src": "7983:11:26"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "7983:23:26"
                            }
                        ],
                        "name": "supportTokens",
                        "nameLocation": "7932:13:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8612,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8609,
                                    "mutability": "mutable",
                                    "name": "_currency",
                                    "nameLocation": "7954:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8650,
                                    "src": "7946:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8608,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7946:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 8611,
                                    "mutability": "mutable",
                                    "name": "_address",
                                    "nameLocation": "7973:8:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8650,
                                    "src": "7965:16:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8610,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7965:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "7945:37:26"
                        },
                        "returnParameters": {
                            "id": 8617,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "8016:0:26"
                        },
                        "scope": 8681,
                        "src": "7923:359:26",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10257
                        ],
                        "body": {
                            "id": 8667,
                            "nodeType": "Block",
                            "src": "8366:115:26",
                            "statements": [
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 8661,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "baseExpression": {
                                                "id": 8657,
                                                "name": "currencyIndex",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7916,
                                                "src": "8380:13:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                    "typeString": "mapping(bytes32 => uint256)"
                                                }
                                            },
                                            "id": 8659,
                                            "indexExpression": {
                                                "id": 8658,
                                                "name": "_currency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8652,
                                                "src": "8394:9:26",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8380:24:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 8660,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8405:1:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "8380:26:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "expression": {
                                            "hexValue": "66616c7365",
                                            "id": 8664,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8468:5:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "value": "false"
                                        },
                                        "functionReturnParameters": 8656,
                                        "id": 8665,
                                        "nodeType": "Return",
                                        "src": "8461:12:26"
                                    },
                                    "id": 8666,
                                    "nodeType": "IfStatement",
                                    "src": "8377:96:26",
                                    "trueBody": {
                                        "expression": {
                                            "hexValue": "74727565",
                                            "id": 8662,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "8428:4:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "value": "true"
                                        },
                                        "functionReturnParameters": 8656,
                                        "id": 8663,
                                        "nodeType": "Return",
                                        "src": "8421:11:26"
                                    }
                                }
                            ]
                        },
                        "functionSelector": "d11322d4",
                        "id": 8668,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "checkSupportForToken",
                        "nameLocation": "8299:20:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8653,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8652,
                                    "mutability": "mutable",
                                    "name": "_currency",
                                    "nameLocation": "8328:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8668,
                                    "src": "8320:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8651,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8320:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "8319:19:26"
                        },
                        "returnParameters": {
                            "id": 8656,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8655,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8668,
                                    "src": "8361:4:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 8654,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8361:4:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "8360:6:26"
                        },
                        "scope": 8681,
                        "src": "8290:191:26",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            10264
                        ],
                        "body": {
                            "id": 8679,
                            "nodeType": "Block",
                            "src": "8564:52:26",
                            "statements": [
                                {
                                    "expression": {
                                        "baseExpression": {
                                            "id": 8675,
                                            "name": "currencyAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7920,
                                            "src": "8582:15:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                "typeString": "mapping(bytes32 => address)"
                                            }
                                        },
                                        "id": 8677,
                                        "indexExpression": {
                                            "id": 8676,
                                            "name": "_currency",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8670,
                                            "src": "8598:9:26",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "8582:26:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "functionReturnParameters": 8674,
                                    "id": 8678,
                                    "nodeType": "Return",
                                    "src": "8575:33:26"
                                }
                            ]
                        },
                        "functionSelector": "b9467629",
                        "id": 8680,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getCurrencyToken",
                        "nameLocation": "8498:16:26",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 8671,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8670,
                                    "mutability": "mutable",
                                    "name": "_currency",
                                    "nameLocation": "8523:9:26",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8680,
                                    "src": "8515:17:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 8669,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8515:7:26",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "8514:19:26"
                        },
                        "returnParameters": {
                            "id": 8674,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 8673,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8680,
                                    "src": "8556:7:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8672,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8556:7:26",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "8555:9:26"
                        },
                        "scope": 8681,
                        "src": "8489:127:26",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    }
                ],
                "scope": 8682,
                "src": "471:8150:26",
                "usedErrors": [
                    342,
                    347,
                    1976,
                    1979,
                    2910,
                    2916
                ],
                "usedEvents": [
                    353,
                    1984,
                    7928,
                    7936,
                    7944,
                    7950
                ]
            }
        ],
        "src": "114:8521:26"
    },
    "compiler": {
        "name": "solc",
        "version": "0.8.20+commit.a1b79de6.Emscripten.clang"
    },
    "networks": {
        "421614": {
            "events": {
                "0xdaec82b39e03602f1e7b1c03805276c348a0b9c50d3e83d4ae136f2bbb74137f": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "issuer",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "BondIssuerCreated",
                    "type": "event"
                },
                "0x49c2bdad6020b81dabafa7be5ba1d6b64dccc883841d724393e4a0242819bc34": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "issuer",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "CashIssuerCreated",
                    "type": "event"
                },
                "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": false,
                            "internalType": "uint64",
                            "name": "version",
                            "type": "uint64"
                        }
                    ],
                    "name": "Initialized",
                    "type": "event"
                },
                "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "previousOwner",
                            "type": "address"
                        },
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "newOwner",
                            "type": "address"
                        }
                    ],
                    "name": "OwnershipTransferred",
                    "type": "event"
                },
                "0x59bcd02033e203f8af464062ce742d11a3358b7b8fd7e996b91d74bee929d7e5": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "token",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "TokenCreated",
                    "type": "event"
                }
            },
            "links": {},
            "address": "0xF387D694B2ac3847F118778f16fdC11B58c0a859",
            "transactionHash": "0x65539268cfeccda32cca75c277390f4ac753e0b12ff09c3d9d052079476e90a3"
        },
        "11155111": {
            "events": {
                "0xdaec82b39e03602f1e7b1c03805276c348a0b9c50d3e83d4ae136f2bbb74137f": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "issuer",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "BondIssuerCreated",
                    "type": "event"
                },
                "0x49c2bdad6020b81dabafa7be5ba1d6b64dccc883841d724393e4a0242819bc34": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "issuer",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "CashIssuerCreated",
                    "type": "event"
                },
                "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": false,
                            "internalType": "uint64",
                            "name": "version",
                            "type": "uint64"
                        }
                    ],
                    "name": "Initialized",
                    "type": "event"
                },
                "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "previousOwner",
                            "type": "address"
                        },
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "newOwner",
                            "type": "address"
                        }
                    ],
                    "name": "OwnershipTransferred",
                    "type": "event"
                },
                "0x59bcd02033e203f8af464062ce742d11a3358b7b8fd7e996b91d74bee929d7e5": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "token",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "TokenCreated",
                    "type": "event"
                },
                "0xd890f7eb25689077af6295272755a655abe2e036d2f1cb4422eb9e46eacd5e84": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "token",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        }
                    ],
                    "name": "SupportToken",
                    "type": "event"
                }
            },
            "links": {},
            "address": "0xE4c6BC97383a4a3D82bf8DB18e3AbEDbC70A3eB6",
            "transactionHash": "0x332bccb29d915b55bc42842ae1b87654167de9aa3034b24cf5dc905e1a7529d6"
        },
        "1774635326531": {
            "events": {
                "0xdaec82b39e03602f1e7b1c03805276c348a0b9c50d3e83d4ae136f2bbb74137f": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "issuer",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "BondIssuerCreated",
                    "type": "event"
                },
                "0x49c2bdad6020b81dabafa7be5ba1d6b64dccc883841d724393e4a0242819bc34": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "issuer",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "CashIssuerCreated",
                    "type": "event"
                },
                "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": false,
                            "internalType": "uint64",
                            "name": "version",
                            "type": "uint64"
                        }
                    ],
                    "name": "Initialized",
                    "type": "event"
                },
                "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "previousOwner",
                            "type": "address"
                        },
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "newOwner",
                            "type": "address"
                        }
                    ],
                    "name": "OwnershipTransferred",
                    "type": "event"
                },
                "0x59bcd02033e203f8af464062ce742d11a3358b7b8fd7e996b91d74bee929d7e5": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "token",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "TokenCreated",
                    "type": "event"
                }
            },
            "links": {},
            "address": "0x20ABa79fc6Fbd18f7eFd0dfF7A34cbD70fEa2A27",
            "transactionHash": "0x02d242c2c007fe08f43a3157157699282d128a4739467085000692f8e2d82510"
        },
        "1775080177427": {
            "events": {
                "0xdaec82b39e03602f1e7b1c03805276c348a0b9c50d3e83d4ae136f2bbb74137f": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "issuer",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "BondIssuerCreated",
                    "type": "event"
                },
                "0x49c2bdad6020b81dabafa7be5ba1d6b64dccc883841d724393e4a0242819bc34": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "issuer",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "CashIssuerCreated",
                    "type": "event"
                },
                "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": false,
                            "internalType": "uint64",
                            "name": "version",
                            "type": "uint64"
                        }
                    ],
                    "name": "Initialized",
                    "type": "event"
                },
                "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "previousOwner",
                            "type": "address"
                        },
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "newOwner",
                            "type": "address"
                        }
                    ],
                    "name": "OwnershipTransferred",
                    "type": "event"
                },
                "0x59bcd02033e203f8af464062ce742d11a3358b7b8fd7e996b91d74bee929d7e5": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "token",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "TokenCreated",
                    "type": "event"
                }
            },
            "links": {},
            "address": "0x4EeCA1c53ea01F327DA6A57BC1Ee980dD85fA740",
            "transactionHash": "0x4b8baae8257758fe6eeb73adcfbd18946447eefff58c198bf798db95ca846945"
        },
        "1775332940148": {
            "events": {
                "0xdaec82b39e03602f1e7b1c03805276c348a0b9c50d3e83d4ae136f2bbb74137f": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "issuer",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "BondIssuerCreated",
                    "type": "event"
                },
                "0x49c2bdad6020b81dabafa7be5ba1d6b64dccc883841d724393e4a0242819bc34": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "issuer",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "CashIssuerCreated",
                    "type": "event"
                },
                "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": false,
                            "internalType": "uint64",
                            "name": "version",
                            "type": "uint64"
                        }
                    ],
                    "name": "Initialized",
                    "type": "event"
                },
                "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "previousOwner",
                            "type": "address"
                        },
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "newOwner",
                            "type": "address"
                        }
                    ],
                    "name": "OwnershipTransferred",
                    "type": "event"
                },
                "0x59bcd02033e203f8af464062ce742d11a3358b7b8fd7e996b91d74bee929d7e5": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "token",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "TokenCreated",
                    "type": "event"
                }
            },
            "links": {},
            "address": "0x31B0157D042a2500658097f38CEF1C803BEBfB74",
            "transactionHash": "0x62e572257a76a6be5d8c40688eb4ea55a0d412eae135621c308446db904c952e"
        },
        "1776003757093": {
            "events": {
                "0xdaec82b39e03602f1e7b1c03805276c348a0b9c50d3e83d4ae136f2bbb74137f": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "issuer",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "BondIssuerCreated",
                    "type": "event"
                },
                "0x49c2bdad6020b81dabafa7be5ba1d6b64dccc883841d724393e4a0242819bc34": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "issuer",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "CashIssuerCreated",
                    "type": "event"
                },
                "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": false,
                            "internalType": "uint64",
                            "name": "version",
                            "type": "uint64"
                        }
                    ],
                    "name": "Initialized",
                    "type": "event"
                },
                "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "previousOwner",
                            "type": "address"
                        },
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "newOwner",
                            "type": "address"
                        }
                    ],
                    "name": "OwnershipTransferred",
                    "type": "event"
                },
                "0x59bcd02033e203f8af464062ce742d11a3358b7b8fd7e996b91d74bee929d7e5": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "token",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "TokenCreated",
                    "type": "event"
                }
            },
            "links": {},
            "address": "0x43916E8bCCF92b8682c1A7457Bf1947287f0c313",
            "transactionHash": "0x4809a48e92305f35b9b6496a2466debf968427324737ff439f6d779623041f13"
        },
        "1776411775763": {
            "events": {
                "0xdaec82b39e03602f1e7b1c03805276c348a0b9c50d3e83d4ae136f2bbb74137f": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "issuer",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "BondIssuerCreated",
                    "type": "event"
                },
                "0x49c2bdad6020b81dabafa7be5ba1d6b64dccc883841d724393e4a0242819bc34": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "issuer",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "CashIssuerCreated",
                    "type": "event"
                },
                "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": false,
                            "internalType": "uint64",
                            "name": "version",
                            "type": "uint64"
                        }
                    ],
                    "name": "Initialized",
                    "type": "event"
                },
                "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "previousOwner",
                            "type": "address"
                        },
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "newOwner",
                            "type": "address"
                        }
                    ],
                    "name": "OwnershipTransferred",
                    "type": "event"
                },
                "0x59bcd02033e203f8af464062ce742d11a3358b7b8fd7e996b91d74bee929d7e5": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "token",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenName",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "tokenType",
                            "type": "bytes32"
                        }
                    ],
                    "name": "TokenCreated",
                    "type": "event"
                }
            },
            "links": {},
            "address": "0xbeDa525CB0521C7Dde5949A01c7520E7DE89DF14",
            "transactionHash": "0x5027b1f0927b044148ea242cdeef823ce667f9555751590717e3508e5961554e"
        }
    },
    "schemaVersion": "3.4.16",
    "updatedAt": "2026-07-28T10:02:37.693Z",
    "networkType": "ethereum",
    "devdoc": {
        "errors": {
            "FailedDeployment()": [
                {
                    "details": "The deployment failed."
                }
            ],
            "InsufficientBalance(uint256,uint256)": [
                {
                    "details": "The ETH balance of the account is not enough to perform the operation."
                }
            ],
            "InvalidInitialization()": [
                {
                    "details": "The contract is already initialized."
                }
            ],
            "NotInitializing()": [
                {
                    "details": "The contract is not initializing."
                }
            ],
            "OwnableInvalidOwner(address)": [
                {
                    "details": "The owner is not a valid owner account. (eg. `address(0)`)"
                }
            ],
            "OwnableUnauthorizedAccount(address)": [
                {
                    "details": "The caller account is not authorized to perform an operation."
                }
            ]
        },
        "events": {
            "Initialized(uint64)": {
                "details": "Triggered when the contract has been initialized or reinitialized."
            }
        },
        "kind": "dev",
        "methods": {
            "owner()": {
                "details": "Returns the address of the current owner."
            },
            "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."
            },
            "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
            }
        },
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
    }
}
