{
  "contractName": "ERC1538QueryDelegate",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalFunctions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "functionByIndex",
      "outputs": [
        {
          "internalType": "string",
          "name": "signature",
          "type": "string"
        },
        {
          "internalType": "bytes4",
          "name": "id",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "delegate",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_funcId",
          "type": "bytes4"
        }
      ],
      "name": "functionById",
      "outputs": [
        {
          "internalType": "string",
          "name": "signature",
          "type": "string"
        },
        {
          "internalType": "bytes4",
          "name": "id",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "delegate",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_funcSignature",
          "type": "string"
        }
      ],
      "name": "functionExists",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_funcSignature",
          "type": "string"
        }
      ],
      "name": "delegateAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "functionSignatures",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_delegate",
          "type": "address"
        }
      ],
      "name": "delegateFunctionSignatures",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "delegateAddresses",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.4+commit.1dca32f3\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_funcSignature\",\"type\":\"string\"}],\"name\":\"delegateAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegateAddresses\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"delegateFunctionSignatures\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_funcId\",\"type\":\"bytes4\"}],\"name\":\"functionById\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes4\",\"name\":\"id\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"functionByIndex\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"signature\",\"type\":\"string\"},{\"internalType\":\"bytes4\",\"name\":\"id\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_funcSignature\",\"type\":\"string\"}],\"name\":\"functionExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"functionSignatures\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalFunctions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner.     * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/amxx/Work/iExec/code/npm/iexec-solidity/contracts/ERC1538/ERC1538Modules/ERC1538Query.sol\":\"ERC1538QueryDelegate\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/amxx/Work/iExec/code/npm/iexec-solidity/contracts/ERC1538/ERC1538Module.sol\":{\"keccak256\":\"0xb1e1ff5fcce00614303b0bb01c595a7d2f3496ae88bc2068e56ba9cd72ec8921\",\"urls\":[\"bzz-raw://a6b87d03a17727ce6fe6c5b0078a198898153ae8230345468479a9aa4560835d\",\"dweb:/ipfs/QmV4T7Wg8TS3uAVhnqMhqD6yZ7Qv8iouYnYrkTSCJirG2P\"]},\"/home/amxx/Work/iExec/code/npm/iexec-solidity/contracts/ERC1538/ERC1538Modules/ERC1538Query.sol\":{\"keccak256\":\"0x7da49fa70e8525fd80271046b12aa4e4b8bca1fbc95bd27fcb6472bf5006447f\",\"urls\":[\"bzz-raw://55985cf2cb5130e32c57218b2e52d83e03fd769fa8f59a3ea032bae43850284d\",\"dweb:/ipfs/QmVmhkYMVgmiK4iaMqjZUUZSFKmSnJNeu4xwUZxvh3QPD9\"]},\"/home/amxx/Work/iExec/code/npm/iexec-solidity/contracts/ERC1538/ERC1538Store.sol\":{\"keccak256\":\"0x4d1e8821dc216013f20044bbf82df3c2ab2c739d1b2ce4d90c15cb65f85707d8\",\"urls\":[\"bzz-raw://e36d4db70862f87b8657c19330f0d45e8e7018ebcf3df97525638c8caa919d2b\",\"dweb:/ipfs/QmZqsrXPsyRkRkjuupKG2SYsyUTBXqe7nkkCy7RKxDKz1L\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x0de74dfa6b37943c1b834cbd8fb7a8d052e5ff80c7adb33692102dd6cd2985e9\",\"urls\":[\"bzz-raw://9d2d827fcf4a838f5821732c0acd6a40d21c2a5a2cfe2563feec91465f47bb60\",\"dweb:/ipfs/Qmex3wMKf5Sghbfvr288RUg1kP2uAyTMf11w83WbMbpQQc\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x13846e13b9a53dec12db1afd1e6ef8fb6b3a34577c59bab7b84db5c0fe227c6e\",\"urls\":[\"bzz-raw://ed869339a2fa5d4dda5f917d5b7970d845d1cdc1c02c7edb0f84ef1cda4d7646\",\"dweb:/ipfs/QmVYwkKDyxs9vT9S3HUHaQZ798NF3gYZ1QMg69CGedssgd\"]},\"solstruct/contracts/libs/LibMap2.bytes4.address.bytes.sol\":{\"keccak256\":\"0x471645d4b20cc36606122fc6bb692cdf8489118547f90bde2740cb73b1e64d54\",\"urls\":[\"bzz-raw://7ca824c03cd077e6d9630eaa4755787c785a61f612cb8e3ba13d0ce92ee55738\",\"dweb:/ipfs/QmdavtXDokZ7vWZt8pMxPi7DaG3Hd1Q5MyeJjXGRFQuL9r\"]},\"solstruct/contracts/libs/LibSet.bytes4.sol\":{\"keccak256\":\"0xdec5833ab65ae8cab500b84424dde49c1f7817c6575e1631a729fc88c6d4bd7f\",\"urls\":[\"bzz-raw://2e5d23b8383819e6dd77ea61ed30740bcba45b0fff609922b11d1cae2b0223f1\",\"dweb:/ipfs/QmQ27sefXEYXBUSEGdPkuzCqemtUJzNXhhsyd7kB94w6CE\"]}},\"version\":1}",
  "bytecode": "0x608060405260006100176001600160e01b0361006516565b600080546001600160a01b0319166001600160a01b038316908117825560405192935091600080516020610e54833981519152908290a3506100606001600160e01b0361006916565b610114565b3390565b61007a6001600160e01b0361006516565b6000546001600160a01b039081169116146100dc576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b0390911690600080516020610e54833981519152908390a3600080546001600160a01b0319169055565b610d31806101236000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063715018a611610071578063715018a61461032a5780638006a5d3146103345780638da5cb5b1461038c578063a08e8b3614610394578063a3f01e59146103ae578063f2fde38b146103d5576100a9565b80630164ee96146100ae5780630f0132b81461017757806349d0cd851461020357806351fc00ed146102805780635bfc7f77146102a6575b600080fd5b6100cb600480360360208110156100c457600080fd5b50356103fb565b6040518080602001846001600160e01b0319166001600160e01b0319168152602001836001600160a01b03166001600160a01b03168152602001828103825285818151815260200191508051906020019080838360005b8381101561013a578181015183820152602001610122565b50505050905090810190601f1680156101675780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6101e76004803603602081101561018d57600080fd5b8101906020810181356401000000008111156101a857600080fd5b8201836020820111156101ba57600080fd5b803590602001918460018302840111640100000000831117156101dc57600080fd5b509092509050610424565b604080516001600160a01b039092168252519081900360200190f35b61020b61045b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024557818101518382015260200161022d565b50505050905090810190601f1680156102725780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020b6004803603602081101561029657600080fd5b50356001600160a01b0316610591565b610316600480360360208110156102bc57600080fd5b8101906020810181356401000000008111156102d757600080fd5b8201836020820111156102e957600080fd5b8035906020019184600183028401116401000000008311171561030b57600080fd5b509092509050610742565b604080519115158252519081900360200190f35b610332610772565b005b61033c610826565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610378578181015183820152602001610360565b505050509050019250505060405180910390f35b6101e76109ab565b61039c6109ba565b60408051918252519081900360200190f35b6100cb600480360360208110156103c457600080fd5b50356001600160e01b0319166109cb565b610332600480360360208110156103eb57600080fd5b50356001600160a01b0316610a00565b6060600080808084610416600180890163ffffffff610a7616565b999198509650945050505050565b600061045483836040518083838082843760405192018290039091206001945092505063ffffffff610aac169050565b9392505050565b6060600060015b61046c6001610ad5565b81116104a25761049461048660018363ffffffff610ae616565b60019063ffffffff610af816565b516001920182019101610462565b506060816040519080825280601f01601f1916602001820160405280156104d0576020820181803683370190505b509050600060015b6104e26001610ad5565b81116105885760606104fe61048660018463ffffffff610ae616565b905060005b81518110156105525781818151811061051857fe5b602001015160f81c60f81b85858151811061052f57fe5b60200101906001600160f81b031916908160001a90535060019384019301610503565b50603b60f81b84848151811061056457fe5b60200101906001600160f81b031916908160001a90535050600191820191016104d8565b50909250505090565b60608061059e6001610ad5565b6040519080825280602002602001820160405280156105d157816020015b60608152602001906001900390816105bc5790505b50905060008060015b6105e46001610ad5565b811161065657600080606061060060018563ffffffff610a7616565b925092509250816001600160a01b0316896001600160a01b03161415610648578051600101850194508087878151811061063657fe5b60200260200101819052508560010195505b5050508060010190506105da565b506060816040519080825280601f01601f191660200182016040528015610684576020820181803683370190505b5090506000805b848110156107365760608682815181106106a157fe5b6020026020010151905060008090505b8151811015610700578181815181106106c657fe5b602001015160f81c60f81b8585815181106106dd57fe5b60200101906001600160f81b031916908160001a905350600193840193016106b1565b50603b60f81b84848151811061071257fe5b60200101906001600160f81b031916908160001a905350506001918201910161068b565b50909695505050505050565b600061045483836040518083838082843760405192018290039091206001945092505063ffffffff610ba7169050565b61077a610bb9565b6000546001600160a01b039081169116146107dc576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060806108336001610ad5565b60405190808252806020026020018201604052801561085c578160200160208202803683370190505b509050600060015b61086e6001610ad5565b811161092857600061089861088a60018463ffffffff610ae616565b60019063ffffffff610aac16565b90506000805b848110156108e4578581815181106108b257fe5b60200260200101516001600160a01b0316836001600160a01b031614156108dc57600191506108e4565b60010161089e565b508061091e57818585815181106108f757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508360010193505b5050600101610864565b50606081604051908082528060200260200182016040528015610955578160200160208202803683370190505b50905060005b828110156109a35783818151811061096f57fe5b602002602001015182828151811061098357fe5b6001600160a01b039092166020928302919091019091015260010161095b565b509250505090565b6000546001600160a01b031690565b60006109c66001610ad5565b905090565b60606000806109e160018563ffffffff610af816565b846109f360018263ffffffff610aac16565b9250925092509193909250565b610a08610bb9565b6000546001600160a01b03908116911614610a6a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610a7381610bbd565b50565b60008060606000610a878686610ae6565b905080610a948783610aac565b610a9e8884610af8565b935093509350509250925092565b6001600160e01b031916600090815260029190910160205260409020546001600160a01b031690565b6000610ae082610c5d565b92915050565b6000610454838363ffffffff610c6116565b6001600160e01b03198116600090815260038301602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610b9a5780601f10610b6f57610100808354040283529160200191610b9a565b820191906000526020600020905b815481529060010190602001808311610b7d57829003601f168201915b5050505050905092915050565b6000610454838363ffffffff610ca016565b3390565b6001600160a01b038116610c025760405162461bcd60e51b8152600401808060200182810382526026815260200180610cd66026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b5490565b6000826000016001830381548110610c7557fe5b90600052602060002090600891828204019190066004029054906101000a900460e01b905092915050565b6000610cac8383610cb5565b15159392505050565b6001600160e01b031916600090815260019190910160205260409020549056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a264697066735822122098fc9b58a1b5d0fdfeee180cfd826726897a2d24bca930c21ab2f4445c996f4064736f6c634300060400338be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063715018a611610071578063715018a61461032a5780638006a5d3146103345780638da5cb5b1461038c578063a08e8b3614610394578063a3f01e59146103ae578063f2fde38b146103d5576100a9565b80630164ee96146100ae5780630f0132b81461017757806349d0cd851461020357806351fc00ed146102805780635bfc7f77146102a6575b600080fd5b6100cb600480360360208110156100c457600080fd5b50356103fb565b6040518080602001846001600160e01b0319166001600160e01b0319168152602001836001600160a01b03166001600160a01b03168152602001828103825285818151815260200191508051906020019080838360005b8381101561013a578181015183820152602001610122565b50505050905090810190601f1680156101675780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6101e76004803603602081101561018d57600080fd5b8101906020810181356401000000008111156101a857600080fd5b8201836020820111156101ba57600080fd5b803590602001918460018302840111640100000000831117156101dc57600080fd5b509092509050610424565b604080516001600160a01b039092168252519081900360200190f35b61020b61045b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024557818101518382015260200161022d565b50505050905090810190601f1680156102725780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020b6004803603602081101561029657600080fd5b50356001600160a01b0316610591565b610316600480360360208110156102bc57600080fd5b8101906020810181356401000000008111156102d757600080fd5b8201836020820111156102e957600080fd5b8035906020019184600183028401116401000000008311171561030b57600080fd5b509092509050610742565b604080519115158252519081900360200190f35b610332610772565b005b61033c610826565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610378578181015183820152602001610360565b505050509050019250505060405180910390f35b6101e76109ab565b61039c6109ba565b60408051918252519081900360200190f35b6100cb600480360360208110156103c457600080fd5b50356001600160e01b0319166109cb565b610332600480360360208110156103eb57600080fd5b50356001600160a01b0316610a00565b6060600080808084610416600180890163ffffffff610a7616565b999198509650945050505050565b600061045483836040518083838082843760405192018290039091206001945092505063ffffffff610aac169050565b9392505050565b6060600060015b61046c6001610ad5565b81116104a25761049461048660018363ffffffff610ae616565b60019063ffffffff610af816565b516001920182019101610462565b506060816040519080825280601f01601f1916602001820160405280156104d0576020820181803683370190505b509050600060015b6104e26001610ad5565b81116105885760606104fe61048660018463ffffffff610ae616565b905060005b81518110156105525781818151811061051857fe5b602001015160f81c60f81b85858151811061052f57fe5b60200101906001600160f81b031916908160001a90535060019384019301610503565b50603b60f81b84848151811061056457fe5b60200101906001600160f81b031916908160001a90535050600191820191016104d8565b50909250505090565b60608061059e6001610ad5565b6040519080825280602002602001820160405280156105d157816020015b60608152602001906001900390816105bc5790505b50905060008060015b6105e46001610ad5565b811161065657600080606061060060018563ffffffff610a7616565b925092509250816001600160a01b0316896001600160a01b03161415610648578051600101850194508087878151811061063657fe5b60200260200101819052508560010195505b5050508060010190506105da565b506060816040519080825280601f01601f191660200182016040528015610684576020820181803683370190505b5090506000805b848110156107365760608682815181106106a157fe5b6020026020010151905060008090505b8151811015610700578181815181106106c657fe5b602001015160f81c60f81b8585815181106106dd57fe5b60200101906001600160f81b031916908160001a905350600193840193016106b1565b50603b60f81b84848151811061071257fe5b60200101906001600160f81b031916908160001a905350506001918201910161068b565b50909695505050505050565b600061045483836040518083838082843760405192018290039091206001945092505063ffffffff610ba7169050565b61077a610bb9565b6000546001600160a01b039081169116146107dc576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060806108336001610ad5565b60405190808252806020026020018201604052801561085c578160200160208202803683370190505b509050600060015b61086e6001610ad5565b811161092857600061089861088a60018463ffffffff610ae616565b60019063ffffffff610aac16565b90506000805b848110156108e4578581815181106108b257fe5b60200260200101516001600160a01b0316836001600160a01b031614156108dc57600191506108e4565b60010161089e565b508061091e57818585815181106108f757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508360010193505b5050600101610864565b50606081604051908082528060200260200182016040528015610955578160200160208202803683370190505b50905060005b828110156109a35783818151811061096f57fe5b602002602001015182828151811061098357fe5b6001600160a01b039092166020928302919091019091015260010161095b565b509250505090565b6000546001600160a01b031690565b60006109c66001610ad5565b905090565b60606000806109e160018563ffffffff610af816565b846109f360018263ffffffff610aac16565b9250925092509193909250565b610a08610bb9565b6000546001600160a01b03908116911614610a6a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610a7381610bbd565b50565b60008060606000610a878686610ae6565b905080610a948783610aac565b610a9e8884610af8565b935093509350509250925092565b6001600160e01b031916600090815260029190910160205260409020546001600160a01b031690565b6000610ae082610c5d565b92915050565b6000610454838363ffffffff610c6116565b6001600160e01b03198116600090815260038301602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610b9a5780601f10610b6f57610100808354040283529160200191610b9a565b820191906000526020600020905b815481529060010190602001808311610b7d57829003601f168201915b5050505050905092915050565b6000610454838363ffffffff610ca016565b3390565b6001600160a01b038116610c025760405162461bcd60e51b8152600401808060200182810382526026815260200180610cd66026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b5490565b6000826000016001830381548110610c7557fe5b90600052602060002090600891828204019190066004029054906101000a900460e01b905092915050565b6000610cac8383610cb5565b15159392505050565b6001600160e01b031916600090815260019190910160205260409020549056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a264697066735822122098fc9b58a1b5d0fdfeee180cfd826726897a2d24bca930c21ab2f4445c996f4064736f6c63430006040033",
  "sourceMap": "934:3351:5:-:0;;;832:17:30;852:12;-1:-1:-1;;;;;852:10:30;:12;:::i;:::-;874:6;:18;;-1:-1:-1;;;;;;874:18:30;-1:-1:-1;;;;;874:18:30;;;;;;;907:43;;874:18;;-1:-1:-1;874:18:30;-1:-1:-1;;;;;;;;;;;907:43:30;874:6;;907:43;-1:-1:-1;124:19:4;-1:-1:-1;;;;;124:17:4;:19;:::i;:::-;934:3351:5;;735:104:29;822:10;735:104;:::o;1656:145:30:-;1247:12;-1:-1:-1;;;;;1247:10:30;:12;:::i;:::-;1237:6;;-1:-1:-1;;;;;1237:6:30;;;:22;;;1229:67;;;;;-1:-1:-1;;;1229:67:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1762:1:::1;1746:6:::0;;1725:40:::1;::::0;-1:-1:-1;;;;;1746:6:30;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1725:40:30;1762:1;;1725:40:::1;1792:1;1775:19:::0;;-1:-1:-1;;;;;;1775:19:30::1;::::0;;1656:145::o;934:3351:5:-;;;;;;;",
  "deployedSourceMap": "934:3351:5:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;934:3351:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;1100:282:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1100:282:5;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1100:282:5;;-1:-1:-1;;;;;1100:282:5;;;;;;;-1:-1:-1;;;;;1100:282:5;-1:-1:-1;;;;;1100:282:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1100:282:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1766:170;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1766:170:5;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;1766:170:5;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1766:170:5;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;1766:170:5;;-1:-1:-1;1766:170:5;-1:-1:-1;1766:170:5;:::i;:::-;;;;-1:-1:-1;;;;;1766:170:5;;;;;;;;;;;;;;1939:639;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1939:639:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2581:972;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2581:972:5;-1:-1:-1;;;;;2581:972:5;;:::i;1595:168::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1595:168:5;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;1595:168:5;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1595:168:5;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;1595:168:5;;-1:-1:-1;1595:168:5;-1:-1:-1;1595:168:5;:::i;:::-;;;;;;;;;;;;;;;;;;1656:145:30;;;:::i;:::-;;3556:727:5;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3556:727:5;;;;;;;;;;;;;;;;;1033:77:30;;;:::i;998:99:5:-;;;:::i;:::-;;;;;;;;;;;;;;;;1385:207;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1385:207:5;-1:-1:-1;;;;;;1385:207:5;;:::i;1950:115:30:-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1950:115:30;-1:-1:-1;;;;;1950:115:30;;:::i;1100:282:5:-;1173:23;1198:9;;;;1173:23;1300:22;1320:1;1311:10;;;1300:22;:10;:22;:::i;:::-;1232:90;;;-1:-1:-1;1232:90:5;-1:-1:-1;1100:282:5;-1:-1:-1;;;;;1100:282:5:o;1766:170::-;1855:7;1876:56;1914:14;;1898:32;;;;;30:3:-1;22:6;14;1:33;1898:32:5;;45:16:-1;;1898:32:5;;;;;;1876:7;;-1:-1:-1;1898:32:5;-1:-1:-1;;1876:56:5;:14;:56;;-1:-1:-1;1876:56:5:i;:::-;1869:63;1766:170;-1:-1:-1;;;1766:170:5:o;1939:639::-;2001:13;2021:24;2070:1;2053:131;2078:16;:7;:14;:16::i;:::-;2073:1;:21;2053:131;;2128:32;2143:16;:7;2157:1;2143:16;:13;:16;:::i;:::-;2128:7;;:32;:14;:32;:::i;:::-;:39;2170:1;2108:63;;;;;2096:3;2053:131;;;;2188:23;2224:16;2214:27;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;2214:27:5;87:42:-1;143:17;;-1:-1;2214:27:5;-1:-1:-1;2188:53:5;-1:-1:-1;2245:15:5;2285:1;2268:277;2293:16;:7;:14;:16::i;:::-;2288:1;:21;2268:277;;2323:22;2348:32;2363:16;:7;2377:1;2363:16;:13;:16;:::i;2348:32::-;2323:57;-1:-1:-1;2390:9:5;2385:111;2409:9;:16;2405:1;:20;2385:111;;;2463:9;2473:1;2463:12;;;;;;;;;;;;;;;;2441:10;2452:7;2441:19;;;;;;;;;;;:34;-1:-1:-1;;;;;2441:34:5;;;;;;;;-1:-1:-1;2481:9:5;;;;;2427:3;2385:111;;;;2522:4;2500:26;;:10;2511:7;2500:19;;;;;;;;;;;:26;-1:-1:-1;;;;;2500:26:5;;;;;;;;-1:-1:-1;;2531:9:5;;;;;2311:3;2268:277;;;-1:-1:-1;2563:10:5;;-1:-1:-1;;;1939:639:5;:::o;2581:972::-;2668:13;2688:33;2736:16;:7;:14;:16::i;:::-;2724:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2688:65:5;-1:-1:-1;2757:32:5;;2847:1;2830:333;2855:16;:7;:14;:16::i;:::-;2850:1;:21;2830:333;;2886:13;;2923:26;2953:13;:7;2964:1;2953:13;:10;:13;:::i;:::-;2885:81;;;;;;2988:12;-1:-1:-1;;;;;2975:25:5;:9;-1:-1:-1;;;;;2975:25:5;;2971:188;;;3031:13;:20;3054:1;3031:24;3011:44;;;;3108:13;3061:18;3080:24;3061:44;;;;;;;;;;;;;:60;;;;3127:26;;;;;2971:188;2830:333;;;2873:3;;;;;2830:333;;;;3167:23;3203:16;3193:27;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;3193:27:5;87:42:-1;143:17;;-1:-1;3193:27:5;-1:-1:-1;3167:53:5;-1:-1:-1;3224:15:5;;3247:273;3271:24;3267:1;:28;3247:273;;;3309:22;3334:18;3353:1;3334:21;;;;;;;;;;;;;;3309:46;;3365:9;3377:1;3365:13;;3360:111;3384:9;:16;3380:1;:20;3360:111;;;3438:9;3448:1;3438:12;;;;;;;;;;;;;;;;3416:10;3427:7;3416:19;;;;;;;;;;;:34;-1:-1:-1;;;;;3416:34:5;;;;;;;;-1:-1:-1;3456:9:5;;;;;3402:3;3360:111;;;;3497:4;3475:26;;:10;3486:7;3475:19;;;;;;;;;;;:26;-1:-1:-1;;;;;3475:26:5;;;;;;;;-1:-1:-1;;3506:9:5;;;;;3297:3;3247:273;;;-1:-1:-1;3538:10:5;;2581:972;-1:-1:-1;;;;;;2581:972:5:o;1595:168::-;1683:4;1701:58;1741:14;;1725:32;;;;;30:3:-1;22:6;14;1:33;1725:32:5;;45:16:-1;;1725:32:5;;;;;;1701:7;;-1:-1:-1;1725:32:5;-1:-1:-1;;1701:58:5;:16;:58;;-1:-1:-1;1701:58:5:i;1656:145:30:-;1247:12;:10;:12::i;:::-;1237:6;;-1:-1:-1;;;;;1237:6:30;;;:22;;;1229:67;;;;;-1:-1:-1;;;1229:67:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1762:1:::1;1746:6:::0;;1725:40:::1;::::0;-1:-1:-1;;;;;1746:6:30;;::::1;::::0;1725:40:::1;::::0;1762:1;;1725:40:::1;1792:1;1775:19:::0;;-1:-1:-1;;;;;;1775:19:30::1;::::0;;1656:145::o;3556:727:5:-;3617:16;3640:32;3689:16;:7;:14;:16::i;:::-;3675:31;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;3675:31:5;-1:-1:-1;3640:66:5;-1:-1:-1;3711:20:5;3756:1;3739:369;3764:16;:7;:14;:16::i;:::-;3759:1;:21;3739:369;;3794:16;3813:32;3828:16;:7;3842:1;3828:16;:13;:16;:::i;:::-;3813:7;;:32;:14;:32;:::i;:::-;3794:51;-1:-1:-1;3850:9:5;;3872:134;3896:12;3892:1;:16;3872:134;;;3940:15;3956:1;3940:18;;;;;;;;;;;;;;-1:-1:-1;;;;;3928:30:5;:8;-1:-1:-1;;;;;3928:30:5;;3924:77;;;3978:4;3971:11;;3989:5;;3924:77;3910:3;;3872:134;;;-1:-1:-1;4014:13:5;4010:94;;4070:8;4038:15;4054:12;4038:29;;;;;;;;;;;;;:40;-1:-1:-1;;;;;4038:40:5;;;-1:-1:-1;;;;;4038:40:5;;;;;4084:14;;;;;4010:94;-1:-1:-1;;3782:3:5;;3739:369;;;;4112:26;4155:12;4141:27;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;4141:27:5;-1:-1:-1;4112:56:5;-1:-1:-1;4177:9:5;4172:88;4196:12;4192:1;:16;4172:88;;;4237:15;4253:1;4237:18;;;;;;;;;;;;;;4222:9;4232:1;4222:12;;;;;;;;-1:-1:-1;;;;;4222:33:5;;;:12;;;;;;;;;;;:33;4210:3;;4172:88;;;-1:-1:-1;4270:9:5;-1:-1:-1;;;3556:727:5;:::o;1033:77:30:-;1071:7;1097:6;-1:-1:-1;;;;;1097:6:30;1033:77;:::o;998:99:5:-;1056:7;1077:16;:7;:14;:16::i;:::-;1070:23;;998:99;:::o;1385:207::-;1455:23;1480:9;;1529:23;:7;1544;1529:23;:14;:23;:::i;:::-;1555:7;1564:23;:7;1555;1564:23;:14;:23;:::i;:::-;1514:74;;;;;;1385:207;;;;;:::o;1950:115:30:-;1247:12;:10;:12::i;:::-;1237:6;;-1:-1:-1;;;;;1237:6:30;;;:22;;;1229:67;;;;;-1:-1:-1;;;1229:67:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2030:28:::1;2049:8;2030:18;:28::i;:::-;1950:115:::0;:::o;740:199:32:-;810:6;819:7;829:12;848:11;862:19;868:4;874:6;862:5;:19::i;:::-;848:33;;893:3;898:17;905:4;911:3;898:6;:17::i;:::-;917;924:4;930:3;917:6;:17::i;:::-;885:50;;;;;;;740:199;;;;;:::o;375:116::-;-1:-1:-1;;;;;;469:18:32;447:7;469:18;;;:12;;;;;:18;;;;;;-1:-1:-1;;;;;469:18:32;;375:116::o;269:103::-;327:7;348:20;:4;:18;:20::i;:::-;341:27;269:103;-1:-1:-1;;269:103:32:o;617:120::-;690:6;711:22;:4;726:6;711:22;:14;:22;:::i;494:120::-;-1:-1:-1;;;;;;592:18:32;;;;;;:12;;;:18;;;;;;;;;585:25;;;;;;-1:-1:-1;;585:25:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;566:12;;585:25;;;592:18;585:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;494:120;;;;:::o;1068:122::-;1142:4;1160:26;:4;1181;1160:26;:20;:26;:::i;735:104:29:-;822:10;735:104;:::o;2166:233:30:-;-1:-1:-1;;;;;2247:22:30;;2239:73;;;;-1:-1:-1;;;2239:73:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2348:6;;;2327:38;;-1:-1:-1;;;;;2327:38:30;;;;2348:6;;;2327:38;;;2375:6;:17;;-1:-1:-1;;;;;;2375:17:30;-1:-1:-1;;;;;2375:17:30;;;;;;;;;;2166:233::o;133:101:33:-;212:18;;133:101::o;237:118::-;307:6;328:4;:11;;349:1;340:6;:10;328:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;321:30;;237:118;;;;:::o;481:124::-;557:4;575:21;583:4;589:6;575:7;:21::i;:::-;:26;;;481:124;-1:-1:-1;;;481:124:33:o;358:120::-;-1:-1:-1;;;;;;454:20:33;433:7;454:20;;;:12;;;;;:20;;;;;;;358:120::o",
  "source": "pragma solidity ^0.6.0;\n\nimport \"../ERC1538Module.sol\";\n\n\ninterface ERC1538Query\n{\n\tfunction totalFunctions            (                           ) external view returns(uint256);\n\tfunction functionByIndex           (uint256          _index    ) external view returns(string memory, bytes4, address);\n\tfunction functionById              (bytes4           _id       ) external view returns(string memory, bytes4, address);\n\tfunction functionExists            (string  calldata _signature) external view returns(bool);\n\tfunction functionSignatures        (                           ) external view returns(string memory);\n\tfunction delegateFunctionSignatures(address          _delegate ) external view returns(string memory);\n\tfunction delegateAddress           (string  calldata _signature) external view returns(address);\n\tfunction delegateAddresses         (                           ) external view returns(address[] memory);\n}\n\ncontract ERC1538QueryDelegate is ERC1538Query, ERC1538Module\n{\n\tfunction totalFunctions()\n\texternal override view returns(uint256)\n\t{\n\t\treturn m_funcs.length();\n\t}\n\n\tfunction functionByIndex(uint256 _index)\n\texternal override view returns(string memory signature, bytes4 id, address delegate)\n\t{\n\t\t(bytes4 funcId, address funcDelegate, bytes memory funcSignature) = m_funcs.at(_index + 1);\n\t\treturn (string(funcSignature), funcId, funcDelegate);\n\t}\n\n\tfunction functionById(bytes4 _funcId)\n\texternal override view returns(string memory signature, bytes4 id, address delegate)\n\t{\n\t\treturn (string(m_funcs.value2(_funcId)), _funcId, m_funcs.value1(_funcId));\n\t}\n\n\tfunction functionExists(string calldata _funcSignature)\n\texternal override view returns(bool)\n\t{\n\t\treturn m_funcs.contains(bytes4(keccak256(bytes(_funcSignature))));\n\t}\n\n\tfunction delegateAddress(string calldata _funcSignature)\n\texternal override view returns(address)\n\t{\n\t\treturn m_funcs.value1(bytes4(keccak256(bytes(_funcSignature))));\n\t}\n\n\tfunction functionSignatures()\n\texternal override view returns(string memory)\n\t{\n\t\tuint256 signaturesLength = 0;\n\t\tfor (uint256 i = 1; i <= m_funcs.length(); ++i)\n\t\t{\n\t\t\tsignaturesLength += m_funcs.value2(m_funcs.keyAt(i)).length + 1; // EDIT\n\t\t}\n\n\t\tbytes memory signatures = new bytes(signaturesLength);\n\t\tuint256 charPos = 0;\n\t\tfor (uint256 i = 1; i <= m_funcs.length(); ++i)\n\t\t{\n\t\t\tbytes memory signature = m_funcs.value2(m_funcs.keyAt(i));\n\t\t\tfor (uint256 c = 0; c < signature.length; ++c)\n\t\t\t{\n\t\t\t\tsignatures[charPos] = signature[c];\n\t\t\t\t++charPos;\n\t\t\t}\n\t\t\tsignatures[charPos] = 0x3B;\n\t\t\t++charPos;\n\t\t}\n\n\t\treturn string(signatures);\n\t}\n\n\tfunction delegateFunctionSignatures(address _delegate)\n\texternal override view returns(string memory)\n\t{\n\t\tbytes[] memory delegateSignatures = new bytes[](m_funcs.length());\n\t\tuint256 delegateSignaturesLength = 0;\n\n\t\tuint256 signaturesLength = 0;\n\t\tfor (uint256 i = 1; i <= m_funcs.length(); ++i)\n\t\t{\n\t\t\t(bytes4 funcId, address funcDelegate, bytes memory funcSignature) = m_funcs.at(i);\n\t\t\tif (_delegate == funcDelegate)\n\t\t\t{\n\t\t\t\tsignaturesLength += funcSignature.length + 1;\n\t\t\t\tdelegateSignatures[delegateSignaturesLength] = funcSignature;\n\t\t\t\t++delegateSignaturesLength;\n\t\t\t}\n\t\t}\n\n\t\tbytes memory signatures = new bytes(signaturesLength);\n\t\tuint256 charPos = 0;\n\t\tfor (uint256 i = 0; i < delegateSignaturesLength; ++i)\n\t\t{\n\t\t\tbytes memory signature = delegateSignatures[i];\n\t\t\tfor (uint256 c = 0; c < signature.length; ++c)\n\t\t\t{\n\t\t\t\tsignatures[charPos] = signature[c];\n\t\t\t\t++charPos;\n\t\t\t}\n\t\t\tsignatures[charPos] = 0x3B;\n\t\t\t++charPos;\n\t\t}\n\n\t\treturn string(signatures);\n\t}\n\n\tfunction delegateAddresses()\n\texternal override view returns(address[] memory)\n\t{\n\t\taddress[] memory delegatesBucket = new address[](m_funcs.length());\n\n\t\tuint256 numDelegates = 0;\n\t\tfor (uint256 i = 1; i <= m_funcs.length(); ++i)\n\t\t{\n\t\t\taddress delegate = m_funcs.value1(m_funcs.keyAt(i));\n\t\t\tbool seen = false;\n\t\t\tfor (uint256 j = 0; j < numDelegates; ++j)\n\t\t\t{\n\t\t\t\tif (delegate == delegatesBucket[j])\n\t\t\t\t{\n\t\t\t\t\tseen = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (seen == false)\n\t\t\t{\n\t\t\t\tdelegatesBucket[numDelegates] = delegate;\n\t\t\t\t++numDelegates;\n\t\t\t}\n\t\t}\n\n\t\taddress[] memory delegates = new address[](numDelegates);\n\t\tfor (uint256 i = 0; i < numDelegates; ++i)\n\t\t{\n\t\t\tdelegates[i] = delegatesBucket[i];\n\t\t}\n\t\treturn delegates;\n\t}\n}\n",
  "sourcePath": "/home/amxx/Work/iExec/code/npm/iexec-solidity/contracts/ERC1538/ERC1538Modules/ERC1538Query.sol",
  "ast": {
    "absolutePath": "/home/amxx/Work/iExec/code/npm/iexec-solidity/contracts/ERC1538/ERC1538Modules/ERC1538Query.sol",
    "exportedSymbols": {
      "ERC1538Query": [
        281
      ],
      "ERC1538QueryDelegate": [
        780
      ]
    },
    "id": 781,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 220,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:5"
      },
      {
        "absolutePath": "/home/amxx/Work/iExec/code/npm/iexec-solidity/contracts/ERC1538/ERC1538Module.sol",
        "file": "../ERC1538Module.sol",
        "id": 221,
        "nodeType": "ImportDirective",
        "scope": 781,
        "sourceUnit": 219,
        "src": "25:30:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 281,
        "linearizedBaseContracts": [
          281
        ],
        "name": "ERC1538Query",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "a08e8b36",
            "id": 226,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "totalFunctions",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 222,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "119:29:5"
            },
            "returnParameters": {
              "id": 225,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 224,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 226,
                  "src": "171:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 223,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "171:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "170:9:5"
            },
            "scope": 281,
            "src": "84:96:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "0164ee96",
            "id": 237,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "functionByIndex",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 229,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 228,
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 237,
                  "src": "218:23:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 227,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "218:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "217:29:5"
            },
            "returnParameters": {
              "id": 236,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 231,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 237,
                  "src": "269:13:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 230,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "269:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 233,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 237,
                  "src": "284:6:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 232,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "284:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 235,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 237,
                  "src": "292:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 234,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "292:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "268:32:5"
            },
            "scope": 281,
            "src": "182:119:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "a3f01e59",
            "id": 248,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "functionById",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 240,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 239,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 248,
                  "src": "339:20:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 238,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "339:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "338:29:5"
            },
            "returnParameters": {
              "id": 247,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 242,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 248,
                  "src": "390:13:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 241,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "390:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 244,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 248,
                  "src": "405:6:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 243,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "405:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 246,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 248,
                  "src": "413:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 245,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "413:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "389:32:5"
            },
            "scope": 281,
            "src": "303:119:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "5bfc7f77",
            "id": 255,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "functionExists",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 251,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 250,
                  "name": "_signature",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 255,
                  "src": "460:27:5",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 249,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "460:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "459:29:5"
            },
            "returnParameters": {
              "id": 254,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 253,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 255,
                  "src": "511:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 252,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "511:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "510:6:5"
            },
            "scope": 281,
            "src": "424:93:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "49d0cd85",
            "id": 260,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "functionSignatures",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 256,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "554:29:5"
            },
            "returnParameters": {
              "id": 259,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 258,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 260,
                  "src": "606:13:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 257,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "606:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "605:15:5"
            },
            "scope": 281,
            "src": "519:102:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "51fc00ed",
            "id": 267,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "delegateFunctionSignatures",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 263,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 262,
                  "name": "_delegate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 267,
                  "src": "659:26:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 261,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "659:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "658:29:5"
            },
            "returnParameters": {
              "id": 266,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 265,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 267,
                  "src": "710:13:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 264,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "710:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "709:15:5"
            },
            "scope": 281,
            "src": "623:102:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "0f0132b8",
            "id": 274,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "delegateAddress",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 269,
                  "name": "_signature",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 274,
                  "src": "763:27:5",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 268,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "763:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "762:29:5"
            },
            "returnParameters": {
              "id": 273,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 272,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 274,
                  "src": "814:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 271,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "814:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "813:9:5"
            },
            "scope": 281,
            "src": "727:96:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "8006a5d3",
            "id": 280,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "delegateAddresses",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 275,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "860:29:5"
            },
            "returnParameters": {
              "id": 279,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 278,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 280,
                  "src": "912:16:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 276,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "912:7:5",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 277,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "912:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "911:18:5"
            },
            "scope": 281,
            "src": "825:105:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 781,
        "src": "58:874:5"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 282,
              "name": "ERC1538Query",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 281,
              "src": "967:12:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC1538Query_$281",
                "typeString": "contract ERC1538Query"
              }
            },
            "id": 283,
            "nodeType": "InheritanceSpecifier",
            "src": "967:12:5"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 284,
              "name": "ERC1538Module",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 218,
              "src": "981:13:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC1538Module_$218",
                "typeString": "contract ERC1538Module"
              }
            },
            "id": 285,
            "nodeType": "InheritanceSpecifier",
            "src": "981:13:5"
          }
        ],
        "contractDependencies": [
          218,
          281,
          1107,
          3003,
          3123
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 780,
        "linearizedBaseContracts": [
          780,
          218,
          1107,
          3123,
          3003,
          281
        ],
        "name": "ERC1538QueryDelegate",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "baseFunctions": [
              226
            ],
            "body": {
              "id": 295,
              "nodeType": "Block",
              "src": "1066:31:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 291,
                        "name": "m_funcs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1106,
                        "src": "1077:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_map_$3205_storage",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                        }
                      },
                      "id": 292,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3218,
                      "src": "1077:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                        "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 293,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1077:16:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 290,
                  "id": 294,
                  "nodeType": "Return",
                  "src": "1070:23:5"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "a08e8b36",
            "id": 296,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "totalFunctions",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 287,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1034:8:5"
            },
            "parameters": {
              "id": 286,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1021:2:5"
            },
            "returnParameters": {
              "id": 290,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 289,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 296,
                  "src": "1056:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 288,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1056:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1055:9:5"
            },
            "scope": 780,
            "src": "998:99:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              237
            ],
            "body": {
              "id": 329,
              "nodeType": "Block",
              "src": "1228:154:5",
              "statements": [
                {
                  "assignments": [
                    309,
                    311,
                    313
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 309,
                      "name": "funcId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 329,
                      "src": "1233:13:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 308,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "1233:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 311,
                      "name": "funcDelegate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 329,
                      "src": "1248:20:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 310,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1248:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 313,
                      "name": "funcSignature",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 329,
                      "src": "1270:26:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 312,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1270:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 320,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 316,
                          "name": "_index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 298,
                          "src": "1311:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1320:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "1311:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 314,
                        "name": "m_funcs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1106,
                        "src": "1300:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_map_$3205_storage",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                        }
                      },
                      "id": 315,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "at",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3296,
                      "src": "1300:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_uint256_$returns$_t_bytes4_$_t_address_$_t_bytes_memory_ptr_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                        "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,uint256) view returns (bytes4,address,bytes memory)"
                      }
                    },
                    "id": 319,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1300:22:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes4_$_t_address_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bytes4,address,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1232:90:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 323,
                            "name": "funcSignature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 313,
                            "src": "1341:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1334:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                            "typeString": "type(string storage pointer)"
                          },
                          "typeName": {
                            "id": 321,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "1334:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 324,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1334:21:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 325,
                        "name": "funcId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 309,
                        "src": "1357:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 326,
                        "name": "funcDelegate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 311,
                        "src": "1365:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "id": 327,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "1333:45:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_bytes4_$_t_address_$",
                      "typeString": "tuple(string memory,bytes4,address)"
                    }
                  },
                  "functionReturnParameters": 307,
                  "id": 328,
                  "nodeType": "Return",
                  "src": "1326:52:5"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "0164ee96",
            "id": 330,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "functionByIndex",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 300,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1151:8:5"
            },
            "parameters": {
              "id": 299,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 298,
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 330,
                  "src": "1125:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 297,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1125:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1124:16:5"
            },
            "returnParameters": {
              "id": 307,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 302,
                  "name": "signature",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 330,
                  "src": "1173:23:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 301,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1173:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 304,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 330,
                  "src": "1198:9:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 303,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1198:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 306,
                  "name": "delegate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 330,
                  "src": "1209:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 305,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1209:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1172:54:5"
            },
            "scope": 780,
            "src": "1100:282:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              248
            ],
            "body": {
              "id": 356,
              "nodeType": "Block",
              "src": "1510:82:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 346,
                                "name": "_funcId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 332,
                                "src": "1544:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 344,
                                "name": "m_funcs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1106,
                                "src": "1529:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_map_$3205_storage",
                                  "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                                }
                              },
                              "id": 345,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value2",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3248,
                              "src": "1529:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_bytes4_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                                "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (bytes memory)"
                              }
                            },
                            "id": 347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1529:23:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1522:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                            "typeString": "type(string storage pointer)"
                          },
                          "typeName": {
                            "id": 342,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "1522:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 348,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1522:31:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 349,
                        "name": "_funcId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 332,
                        "src": "1555:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 352,
                            "name": "_funcId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 332,
                            "src": "1579:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 350,
                            "name": "m_funcs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1106,
                            "src": "1564:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_map_$3205_storage",
                              "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                            }
                          },
                          "id": 351,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value1",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3233,
                          "src": "1564:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_bytes4_$returns$_t_address_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                            "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (address)"
                          }
                        },
                        "id": 353,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1564:23:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "id": 354,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "1521:67:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_bytes4_$_t_address_$",
                      "typeString": "tuple(string memory,bytes4,address)"
                    }
                  },
                  "functionReturnParameters": 341,
                  "id": 355,
                  "nodeType": "Return",
                  "src": "1514:74:5"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "a3f01e59",
            "id": 357,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "functionById",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 334,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1433:8:5"
            },
            "parameters": {
              "id": 333,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 332,
                  "name": "_funcId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 357,
                  "src": "1407:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 331,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1407:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1406:16:5"
            },
            "returnParameters": {
              "id": 341,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 336,
                  "name": "signature",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 357,
                  "src": "1455:23:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 335,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1455:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 338,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 357,
                  "src": "1480:9:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 337,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1480:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 340,
                  "name": "delegate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 357,
                  "src": "1491:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 339,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1491:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1454:54:5"
            },
            "scope": 780,
            "src": "1385:207:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              255
            ],
            "body": {
              "id": 378,
              "nodeType": "Block",
              "src": "1690:73:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 372,
                                    "name": "_funcSignature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 359,
                                    "src": "1741:14:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    }
                                  ],
                                  "id": 371,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1735:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 370,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1735:5:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1735:21:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "id": 369,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "1725:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 374,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1725:32:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1718:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes4_$",
                            "typeString": "type(bytes4)"
                          },
                          "typeName": {
                            "id": 367,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "1718:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 375,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1718:40:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 365,
                        "name": "m_funcs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1106,
                        "src": "1701:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_map_$3205_storage",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                        }
                      },
                      "id": 366,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "contains",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3328,
                      "src": "1701:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_bytes4_$returns$_t_bool_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                        "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (bool)"
                      }
                    },
                    "id": 376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1701:58:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 364,
                  "id": 377,
                  "nodeType": "Return",
                  "src": "1694:65:5"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "5bfc7f77",
            "id": 379,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "functionExists",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 361,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1661:8:5"
            },
            "parameters": {
              "id": 360,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 359,
                  "name": "_funcSignature",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 379,
                  "src": "1619:30:5",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 358,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1619:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1618:32:5"
            },
            "returnParameters": {
              "id": 364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 363,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 379,
                  "src": "1683:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 362,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1683:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1682:6:5"
            },
            "scope": 780,
            "src": "1595:168:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              274
            ],
            "body": {
              "id": 400,
              "nodeType": "Block",
              "src": "1865:71:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 394,
                                    "name": "_funcSignature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 381,
                                    "src": "1914:14:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    }
                                  ],
                                  "id": 393,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1908:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 392,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1908:5:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 395,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1908:21:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "id": 391,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "1898:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 396,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1898:32:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1891:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes4_$",
                            "typeString": "type(bytes4)"
                          },
                          "typeName": {
                            "id": 389,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "1891:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 397,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1891:40:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 387,
                        "name": "m_funcs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1106,
                        "src": "1876:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_map_$3205_storage",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                        }
                      },
                      "id": 388,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3233,
                      "src": "1876:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_bytes4_$returns$_t_address_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                        "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (address)"
                      }
                    },
                    "id": 398,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1876:56:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 386,
                  "id": 399,
                  "nodeType": "Return",
                  "src": "1869:63:5"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "0f0132b8",
            "id": 401,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "delegateAddress",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 383,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1833:8:5"
            },
            "parameters": {
              "id": 382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 381,
                  "name": "_funcSignature",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 401,
                  "src": "1791:30:5",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 380,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1791:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1790:32:5"
            },
            "returnParameters": {
              "id": 386,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 385,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 401,
                  "src": "1855:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 384,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1855:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1854:9:5"
            },
            "scope": 780,
            "src": "1766:170:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              260
            ],
            "body": {
              "id": 511,
              "nodeType": "Block",
              "src": "2017:561:5",
              "statements": [
                {
                  "assignments": [
                    408
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 408,
                      "name": "signaturesLength",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 511,
                      "src": "2021:24:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 407,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2021:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 410,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 409,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2048:1:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2021:28:5"
                },
                {
                  "body": {
                    "id": 436,
                    "nodeType": "Block",
                    "src": "2103:81:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 423,
                            "name": "signaturesLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 408,
                            "src": "2108:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 428,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 412,
                                        "src": "2157:1:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 426,
                                        "name": "m_funcs",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1106,
                                        "src": "2143:7:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_map_$3205_storage",
                                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                                        }
                                      },
                                      "id": 427,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "keyAt",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3264,
                                      "src": "2143:13:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_uint256_$returns$_t_bytes4_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                                        "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,uint256) view returns (bytes4)"
                                      }
                                    },
                                    "id": 429,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2143:16:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 424,
                                    "name": "m_funcs",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1106,
                                    "src": "2128:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_map_$3205_storage",
                                      "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                                    }
                                  },
                                  "id": 425,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value2",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3248,
                                  "src": "2128:14:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_bytes4_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                                    "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (bytes memory)"
                                  }
                                },
                                "id": 430,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2128:32:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 431,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2128:39:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2170:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "2128:43:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2108:63:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 435,
                        "nodeType": "ExpressionStatement",
                        "src": "2108:63:5"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 419,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 415,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 412,
                      "src": "2073:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 416,
                          "name": "m_funcs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1106,
                          "src": "2078:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$3205_storage",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                          }
                        },
                        "id": 417,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3218,
                        "src": "2078:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                          "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 418,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2078:16:5",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2073:21:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 437,
                  "initializationExpression": {
                    "assignments": [
                      412
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 412,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 437,
                        "src": "2058:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 411,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2058:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 414,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 413,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2070:1:5",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2058:13:5"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 421,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "2096:3:5",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 420,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 412,
                        "src": "2098:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 422,
                    "nodeType": "ExpressionStatement",
                    "src": "2096:3:5"
                  },
                  "nodeType": "ForStatement",
                  "src": "2053:131:5"
                },
                {
                  "assignments": [
                    439
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 439,
                      "name": "signatures",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 511,
                      "src": "2188:23:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 438,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2188:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 444,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 442,
                        "name": "signaturesLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 408,
                        "src": "2224:16:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 441,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2214:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 440,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2218:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2214:27:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2188:53:5"
                },
                {
                  "assignments": [
                    446
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 446,
                      "name": "charPos",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 511,
                      "src": "2245:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 445,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2245:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 448,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2263:1:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2245:19:5"
                },
                {
                  "body": {
                    "id": 504,
                    "nodeType": "Block",
                    "src": "2318:227:5",
                    "statements": [
                      {
                        "assignments": [
                          462
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 462,
                            "name": "signature",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 504,
                            "src": "2323:22:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 461,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2323:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 470,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 467,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 450,
                                  "src": "2377:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 465,
                                  "name": "m_funcs",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1106,
                                  "src": "2363:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_map_$3205_storage",
                                    "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                                  }
                                },
                                "id": 466,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "keyAt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3264,
                                "src": "2363:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_uint256_$returns$_t_bytes4_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                                  "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,uint256) view returns (bytes4)"
                                }
                              },
                              "id": 468,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2363:16:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 463,
                              "name": "m_funcs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1106,
                              "src": "2348:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_map_$3205_storage",
                                "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                              }
                            },
                            "id": 464,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value2",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3248,
                            "src": "2348:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_bytes4_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                              "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (bytes memory)"
                            }
                          },
                          "id": 469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2348:32:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2323:57:5"
                      },
                      {
                        "body": {
                          "id": 493,
                          "nodeType": "Block",
                          "src": "2435:61:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 488,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 482,
                                    "name": "signatures",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 439,
                                    "src": "2441:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 484,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 483,
                                    "name": "charPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 446,
                                    "src": "2452:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2441:19:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 485,
                                    "name": "signature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 462,
                                    "src": "2463:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 487,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 486,
                                    "name": "c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 472,
                                    "src": "2473:1:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2463:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "2441:34:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 489,
                              "nodeType": "ExpressionStatement",
                              "src": "2441:34:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 491,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "2481:9:5",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 490,
                                  "name": "charPos",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 446,
                                  "src": "2483:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 492,
                              "nodeType": "ExpressionStatement",
                              "src": "2481:9:5"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 475,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 472,
                            "src": "2405:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 476,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 462,
                              "src": "2409:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2409:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2405:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 494,
                        "initializationExpression": {
                          "assignments": [
                            472
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 472,
                              "name": "c",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 494,
                              "src": "2390:9:5",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 471,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2390:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 474,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2402:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2390:13:5"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "2427:3:5",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 479,
                              "name": "c",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 472,
                              "src": "2429:1:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 481,
                          "nodeType": "ExpressionStatement",
                          "src": "2427:3:5"
                        },
                        "nodeType": "ForStatement",
                        "src": "2385:111:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 495,
                              "name": "signatures",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 439,
                              "src": "2500:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 497,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 496,
                              "name": "charPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 446,
                              "src": "2511:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2500:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30783342",
                            "id": 498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2522:4:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_59_by_1",
                              "typeString": "int_const 59"
                            },
                            "value": "0x3B"
                          },
                          "src": "2500:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 500,
                        "nodeType": "ExpressionStatement",
                        "src": "2500:26:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "2531:9:5",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 501,
                            "name": "charPos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 446,
                            "src": "2533:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 503,
                        "nodeType": "ExpressionStatement",
                        "src": "2531:9:5"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 453,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 450,
                      "src": "2288:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 454,
                          "name": "m_funcs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1106,
                          "src": "2293:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$3205_storage",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                          }
                        },
                        "id": 455,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3218,
                        "src": "2293:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                          "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 456,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2293:16:5",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2288:21:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 505,
                  "initializationExpression": {
                    "assignments": [
                      450
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 450,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 505,
                        "src": "2273:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 449,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2273:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 452,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 451,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2285:1:5",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2273:13:5"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "2311:3:5",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 458,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 450,
                        "src": "2313:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 460,
                    "nodeType": "ExpressionStatement",
                    "src": "2311:3:5"
                  },
                  "nodeType": "ForStatement",
                  "src": "2268:277:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 508,
                        "name": "signatures",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 439,
                        "src": "2563:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "2556:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                        "typeString": "type(string storage pointer)"
                      },
                      "typeName": {
                        "id": 506,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2556:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2556:18:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 406,
                  "id": 510,
                  "nodeType": "Return",
                  "src": "2549:25:5"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "49d0cd85",
            "id": 512,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "functionSignatures",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 403,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1979:8:5"
            },
            "parameters": {
              "id": 402,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1966:2:5"
            },
            "returnParameters": {
              "id": 406,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 405,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 512,
                  "src": "2001:13:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 404,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2001:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2000:15:5"
            },
            "scope": 780,
            "src": "1939:639:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              267
            ],
            "body": {
              "id": 654,
              "nodeType": "Block",
              "src": "2684:869:5",
              "statements": [
                {
                  "assignments": [
                    524
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 524,
                      "name": "delegateSignatures",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 654,
                      "src": "2688:33:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                        "typeString": "bytes[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 522,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2688:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "id": 523,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2688:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                          "typeString": "bytes[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 532,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 528,
                            "name": "m_funcs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1106,
                            "src": "2736:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_map_$3205_storage",
                              "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                            }
                          },
                          "id": 529,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3218,
                          "src": "2736:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                            "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer) view returns (uint256)"
                          }
                        },
                        "id": 530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2736:16:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 527,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2724:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 525,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2728:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "id": 526,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2728:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                          "typeString": "bytes[]"
                        }
                      }
                    },
                    "id": 531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2724:29:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory",
                      "typeString": "bytes memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2688:65:5"
                },
                {
                  "assignments": [
                    534
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 534,
                      "name": "delegateSignaturesLength",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 654,
                      "src": "2757:32:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 533,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2757:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 536,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2792:1:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2757:36:5"
                },
                {
                  "assignments": [
                    538
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 538,
                      "name": "signaturesLength",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 654,
                      "src": "2798:24:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 537,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2798:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 540,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 539,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2825:1:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2798:28:5"
                },
                {
                  "body": {
                    "id": 585,
                    "nodeType": "Block",
                    "src": "2880:283:5",
                    "statements": [
                      {
                        "assignments": [
                          554,
                          556,
                          558
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 554,
                            "name": "funcId",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 585,
                            "src": "2886:13:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 553,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "2886:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 556,
                            "name": "funcDelegate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 585,
                            "src": "2901:20:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 555,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2901:7:5",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 558,
                            "name": "funcSignature",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 585,
                            "src": "2923:26:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 557,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2923:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 563,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 561,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 542,
                              "src": "2964:1:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 559,
                              "name": "m_funcs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1106,
                              "src": "2953:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_map_$3205_storage",
                                "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                              }
                            },
                            "id": 560,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "at",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3296,
                            "src": "2953:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_uint256_$returns$_t_bytes4_$_t_address_$_t_bytes_memory_ptr_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                              "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,uint256) view returns (bytes4,address,bytes memory)"
                            }
                          },
                          "id": 562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2953:13:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes4_$_t_address_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bytes4,address,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2885:81:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 566,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 564,
                            "name": "_delegate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 514,
                            "src": "2975:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 565,
                            "name": "funcDelegate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 556,
                            "src": "2988:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2975:25:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 584,
                        "nodeType": "IfStatement",
                        "src": "2971:188:5",
                        "trueBody": {
                          "id": 583,
                          "nodeType": "Block",
                          "src": "3005:154:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 572,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 567,
                                  "name": "signaturesLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 538,
                                  "src": "3011:16:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 571,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 568,
                                      "name": "funcSignature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 558,
                                      "src": "3031:13:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 569,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3031:20:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 570,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3054:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "3031:24:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3011:44:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 573,
                              "nodeType": "ExpressionStatement",
                              "src": "3011:44:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 578,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 574,
                                    "name": "delegateSignatures",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 524,
                                    "src": "3061:18:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                                      "typeString": "bytes memory[] memory"
                                    }
                                  },
                                  "id": 576,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 575,
                                    "name": "delegateSignaturesLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 534,
                                    "src": "3080:24:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3061:44:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 577,
                                  "name": "funcSignature",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 558,
                                  "src": "3108:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "3061:60:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 579,
                              "nodeType": "ExpressionStatement",
                              "src": "3061:60:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 581,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "3127:26:5",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 580,
                                  "name": "delegateSignaturesLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 534,
                                  "src": "3129:24:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 582,
                              "nodeType": "ExpressionStatement",
                              "src": "3127:26:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 545,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 542,
                      "src": "2850:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 546,
                          "name": "m_funcs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1106,
                          "src": "2855:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$3205_storage",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                          }
                        },
                        "id": 547,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3218,
                        "src": "2855:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                          "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 548,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2855:16:5",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2850:21:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 586,
                  "initializationExpression": {
                    "assignments": [
                      542
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 542,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 586,
                        "src": "2835:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 541,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2835:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 544,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2847:1:5",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2835:13:5"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 551,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "2873:3:5",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 550,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 542,
                        "src": "2875:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 552,
                    "nodeType": "ExpressionStatement",
                    "src": "2873:3:5"
                  },
                  "nodeType": "ForStatement",
                  "src": "2830:333:5"
                },
                {
                  "assignments": [
                    588
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 588,
                      "name": "signatures",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 654,
                      "src": "3167:23:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 587,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3167:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 593,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 591,
                        "name": "signaturesLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 538,
                        "src": "3203:16:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 590,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "3193:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 589,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3197:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 592,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3193:27:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3167:53:5"
                },
                {
                  "assignments": [
                    595
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 595,
                      "name": "charPos",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 654,
                      "src": "3224:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 594,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3224:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 597,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3242:1:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3224:19:5"
                },
                {
                  "body": {
                    "id": 647,
                    "nodeType": "Block",
                    "src": "3304:216:5",
                    "statements": [
                      {
                        "assignments": [
                          609
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 609,
                            "name": "signature",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 647,
                            "src": "3309:22:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 608,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3309:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 613,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 610,
                            "name": "delegateSignatures",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 524,
                            "src": "3334:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          "id": 612,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 611,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 599,
                            "src": "3353:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3334:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3309:46:5"
                      },
                      {
                        "body": {
                          "id": 636,
                          "nodeType": "Block",
                          "src": "3410:61:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 631,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 625,
                                    "name": "signatures",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 588,
                                    "src": "3416:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 627,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 626,
                                    "name": "charPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 595,
                                    "src": "3427:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3416:19:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 628,
                                    "name": "signature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 609,
                                    "src": "3438:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 630,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 629,
                                    "name": "c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 615,
                                    "src": "3448:1:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3438:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "3416:34:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 632,
                              "nodeType": "ExpressionStatement",
                              "src": "3416:34:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "3456:9:5",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 633,
                                  "name": "charPos",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 595,
                                  "src": "3458:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 635,
                              "nodeType": "ExpressionStatement",
                              "src": "3456:9:5"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 618,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 615,
                            "src": "3380:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 619,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 609,
                              "src": "3384:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 620,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3384:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3380:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 637,
                        "initializationExpression": {
                          "assignments": [
                            615
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 615,
                              "name": "c",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 637,
                              "src": "3365:9:5",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 614,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3365:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 617,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3377:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3365:13:5"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "3402:3:5",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 622,
                              "name": "c",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 615,
                              "src": "3404:1:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 624,
                          "nodeType": "ExpressionStatement",
                          "src": "3402:3:5"
                        },
                        "nodeType": "ForStatement",
                        "src": "3360:111:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 638,
                              "name": "signatures",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 588,
                              "src": "3475:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 640,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 639,
                              "name": "charPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 595,
                              "src": "3486:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3475:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30783342",
                            "id": 641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3497:4:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_59_by_1",
                              "typeString": "int_const 59"
                            },
                            "value": "0x3B"
                          },
                          "src": "3475:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 643,
                        "nodeType": "ExpressionStatement",
                        "src": "3475:26:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "3506:9:5",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 644,
                            "name": "charPos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 595,
                            "src": "3508:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 646,
                        "nodeType": "ExpressionStatement",
                        "src": "3506:9:5"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 602,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 599,
                      "src": "3267:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 603,
                      "name": "delegateSignaturesLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 534,
                      "src": "3271:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3267:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 648,
                  "initializationExpression": {
                    "assignments": [
                      599
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 599,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 648,
                        "src": "3252:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 598,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3252:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 601,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 600,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3264:1:5",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3252:13:5"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "3297:3:5",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 605,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 599,
                        "src": "3299:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 607,
                    "nodeType": "ExpressionStatement",
                    "src": "3297:3:5"
                  },
                  "nodeType": "ForStatement",
                  "src": "3247:273:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 651,
                        "name": "signatures",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 588,
                        "src": "3538:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3531:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                        "typeString": "type(string storage pointer)"
                      },
                      "typeName": {
                        "id": 649,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "3531:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 652,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3531:18:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 519,
                  "id": 653,
                  "nodeType": "Return",
                  "src": "3524:25:5"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "51fc00ed",
            "id": 655,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "delegateFunctionSignatures",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 516,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2646:8:5"
            },
            "parameters": {
              "id": 515,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 514,
                  "name": "_delegate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 655,
                  "src": "2617:17:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 513,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2617:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2616:19:5"
            },
            "returnParameters": {
              "id": 519,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 518,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 655,
                  "src": "2668:13:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 517,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2668:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2667:15:5"
            },
            "scope": 780,
            "src": "2581:972:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              280
            ],
            "body": {
              "id": 778,
              "nodeType": "Block",
              "src": "3636:647:5",
              "statements": [
                {
                  "assignments": [
                    666
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 666,
                      "name": "delegatesBucket",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 778,
                      "src": "3640:32:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 664,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3640:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 665,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3640:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 674,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 670,
                            "name": "m_funcs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1106,
                            "src": "3689:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_map_$3205_storage",
                              "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                            }
                          },
                          "id": 671,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3218,
                          "src": "3689:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                            "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer) view returns (uint256)"
                          }
                        },
                        "id": 672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3689:16:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 669,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "3675:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 667,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3679:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 668,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3679:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3675:31:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3640:66:5"
                },
                {
                  "assignments": [
                    676
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 676,
                      "name": "numDelegates",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 778,
                      "src": "3711:20:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 675,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3711:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 678,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 677,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3734:1:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3711:24:5"
                },
                {
                  "body": {
                    "id": 743,
                    "nodeType": "Block",
                    "src": "3789:319:5",
                    "statements": [
                      {
                        "assignments": [
                          692
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 692,
                            "name": "delegate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 743,
                            "src": "3794:16:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 691,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3794:7:5",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 700,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 697,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 680,
                                  "src": "3842:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 695,
                                  "name": "m_funcs",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1106,
                                  "src": "3828:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_map_$3205_storage",
                                    "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                                  }
                                },
                                "id": 696,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "keyAt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3264,
                                "src": "3828:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_uint256_$returns$_t_bytes4_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                                  "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,uint256) view returns (bytes4)"
                                }
                              },
                              "id": 698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3828:16:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 693,
                              "name": "m_funcs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1106,
                              "src": "3813:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_map_$3205_storage",
                                "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                              }
                            },
                            "id": 694,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3233,
                            "src": "3813:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_bytes4_$returns$_t_address_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                              "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (address)"
                            }
                          },
                          "id": 699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3813:32:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3794:51:5"
                      },
                      {
                        "assignments": [
                          702
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 702,
                            "name": "seen",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 743,
                            "src": "3850:9:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 701,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "3850:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 704,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 703,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3862:5:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3850:17:5"
                      },
                      {
                        "body": {
                          "id": 727,
                          "nodeType": "Block",
                          "src": "3918:88:5",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 719,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 715,
                                  "name": "delegate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 692,
                                  "src": "3928:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 716,
                                    "name": "delegatesBucket",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 666,
                                    "src": "3940:15:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 718,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 717,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 706,
                                    "src": "3956:1:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3940:18:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3928:30:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 726,
                              "nodeType": "IfStatement",
                              "src": "3924:77:5",
                              "trueBody": {
                                "id": 725,
                                "nodeType": "Block",
                                "src": "3964:37:5",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 722,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 720,
                                        "name": "seen",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 702,
                                        "src": "3971:4:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "74727565",
                                        "id": 721,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3978:4:5",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "true"
                                      },
                                      "src": "3971:11:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 723,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3971:11:5"
                                  },
                                  {
                                    "id": 724,
                                    "nodeType": "Break",
                                    "src": "3989:5:5"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 709,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 706,
                            "src": "3892:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 710,
                            "name": "numDelegates",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 676,
                            "src": "3896:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3892:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 728,
                        "initializationExpression": {
                          "assignments": [
                            706
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 706,
                              "name": "j",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 728,
                              "src": "3877:9:5",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 705,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3877:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 708,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3889:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3877:13:5"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 713,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "3910:3:5",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 712,
                              "name": "j",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 706,
                              "src": "3912:1:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 714,
                          "nodeType": "ExpressionStatement",
                          "src": "3910:3:5"
                        },
                        "nodeType": "ForStatement",
                        "src": "3872:134:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 729,
                            "name": "seen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 702,
                            "src": "4014:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 730,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4022:5:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "4014:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 742,
                        "nodeType": "IfStatement",
                        "src": "4010:94:5",
                        "trueBody": {
                          "id": 741,
                          "nodeType": "Block",
                          "src": "4032:72:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 736,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 732,
                                    "name": "delegatesBucket",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 666,
                                    "src": "4038:15:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 734,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 733,
                                    "name": "numDelegates",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 676,
                                    "src": "4054:12:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4038:29:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 735,
                                  "name": "delegate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 692,
                                  "src": "4070:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4038:40:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 737,
                              "nodeType": "ExpressionStatement",
                              "src": "4038:40:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "4084:14:5",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 738,
                                  "name": "numDelegates",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 676,
                                  "src": "4086:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 740,
                              "nodeType": "ExpressionStatement",
                              "src": "4084:14:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 687,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 683,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 680,
                      "src": "3759:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 684,
                          "name": "m_funcs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1106,
                          "src": "3764:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$3205_storage",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                          }
                        },
                        "id": 685,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3218,
                        "src": "3764:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                          "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 686,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3764:16:5",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3759:21:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 744,
                  "initializationExpression": {
                    "assignments": [
                      680
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 680,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 744,
                        "src": "3744:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 679,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3744:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 682,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 681,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3756:1:5",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3744:13:5"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 689,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "3782:3:5",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 688,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 680,
                        "src": "3784:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 690,
                    "nodeType": "ExpressionStatement",
                    "src": "3782:3:5"
                  },
                  "nodeType": "ForStatement",
                  "src": "3739:369:5"
                },
                {
                  "assignments": [
                    749
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 749,
                      "name": "delegates",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 778,
                      "src": "4112:26:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 747,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4112:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 748,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4112:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 755,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 753,
                        "name": "numDelegates",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 676,
                        "src": "4155:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 752,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4141:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 750,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4145:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 751,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4145:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 754,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4141:27:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4112:56:5"
                },
                {
                  "body": {
                    "id": 774,
                    "nodeType": "Block",
                    "src": "4217:43:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 766,
                              "name": "delegates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 749,
                              "src": "4222:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 768,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 767,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 757,
                              "src": "4232:1:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4222:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 769,
                              "name": "delegatesBucket",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 666,
                              "src": "4237:15:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 771,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 770,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 757,
                              "src": "4253:1:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4237:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4222:33:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 773,
                        "nodeType": "ExpressionStatement",
                        "src": "4222:33:5"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 760,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 757,
                      "src": "4192:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 761,
                      "name": "numDelegates",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 676,
                      "src": "4196:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4192:16:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 775,
                  "initializationExpression": {
                    "assignments": [
                      757
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 757,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 775,
                        "src": "4177:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 756,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4177:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 759,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 758,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4189:1:5",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4177:13:5"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 764,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "4210:3:5",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 763,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 757,
                        "src": "4212:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 765,
                    "nodeType": "ExpressionStatement",
                    "src": "4210:3:5"
                  },
                  "nodeType": "ForStatement",
                  "src": "4172:88:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 776,
                    "name": "delegates",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 749,
                    "src": "4270:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 661,
                  "id": 777,
                  "nodeType": "Return",
                  "src": "4263:16:5"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "8006a5d3",
            "id": 779,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "delegateAddresses",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 657,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3595:8:5"
            },
            "parameters": {
              "id": 656,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3582:2:5"
            },
            "returnParameters": {
              "id": 661,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 660,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 779,
                  "src": "3617:16:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 658,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3617:7:5",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 659,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3617:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3616:18:5"
            },
            "scope": 780,
            "src": "3556:727:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 781,
        "src": "934:3351:5"
      }
    ],
    "src": "0:4286:5"
  },
  "legacyAST": {
    "absolutePath": "/home/amxx/Work/iExec/code/npm/iexec-solidity/contracts/ERC1538/ERC1538Modules/ERC1538Query.sol",
    "exportedSymbols": {
      "ERC1538Query": [
        281
      ],
      "ERC1538QueryDelegate": [
        780
      ]
    },
    "id": 781,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 220,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:5"
      },
      {
        "absolutePath": "/home/amxx/Work/iExec/code/npm/iexec-solidity/contracts/ERC1538/ERC1538Module.sol",
        "file": "../ERC1538Module.sol",
        "id": 221,
        "nodeType": "ImportDirective",
        "scope": 781,
        "sourceUnit": 219,
        "src": "25:30:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 281,
        "linearizedBaseContracts": [
          281
        ],
        "name": "ERC1538Query",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "functionSelector": "a08e8b36",
            "id": 226,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "totalFunctions",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 222,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "119:29:5"
            },
            "returnParameters": {
              "id": 225,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 224,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 226,
                  "src": "171:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 223,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "171:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "170:9:5"
            },
            "scope": 281,
            "src": "84:96:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "0164ee96",
            "id": 237,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "functionByIndex",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 229,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 228,
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 237,
                  "src": "218:23:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 227,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "218:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "217:29:5"
            },
            "returnParameters": {
              "id": 236,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 231,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 237,
                  "src": "269:13:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 230,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "269:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 233,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 237,
                  "src": "284:6:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 232,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "284:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 235,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 237,
                  "src": "292:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 234,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "292:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "268:32:5"
            },
            "scope": 281,
            "src": "182:119:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "a3f01e59",
            "id": 248,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "functionById",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 240,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 239,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 248,
                  "src": "339:20:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 238,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "339:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "338:29:5"
            },
            "returnParameters": {
              "id": 247,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 242,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 248,
                  "src": "390:13:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 241,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "390:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 244,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 248,
                  "src": "405:6:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 243,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "405:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 246,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 248,
                  "src": "413:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 245,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "413:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "389:32:5"
            },
            "scope": 281,
            "src": "303:119:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "5bfc7f77",
            "id": 255,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "functionExists",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 251,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 250,
                  "name": "_signature",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 255,
                  "src": "460:27:5",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 249,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "460:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "459:29:5"
            },
            "returnParameters": {
              "id": 254,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 253,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 255,
                  "src": "511:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 252,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "511:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "510:6:5"
            },
            "scope": 281,
            "src": "424:93:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "49d0cd85",
            "id": 260,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "functionSignatures",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 256,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "554:29:5"
            },
            "returnParameters": {
              "id": 259,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 258,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 260,
                  "src": "606:13:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 257,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "606:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "605:15:5"
            },
            "scope": 281,
            "src": "519:102:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "51fc00ed",
            "id": 267,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "delegateFunctionSignatures",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 263,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 262,
                  "name": "_delegate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 267,
                  "src": "659:26:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 261,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "659:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "658:29:5"
            },
            "returnParameters": {
              "id": 266,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 265,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 267,
                  "src": "710:13:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 264,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "710:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "709:15:5"
            },
            "scope": 281,
            "src": "623:102:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "0f0132b8",
            "id": 274,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "delegateAddress",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 269,
                  "name": "_signature",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 274,
                  "src": "763:27:5",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 268,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "763:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "762:29:5"
            },
            "returnParameters": {
              "id": 273,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 272,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 274,
                  "src": "814:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 271,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "814:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "813:9:5"
            },
            "scope": 281,
            "src": "727:96:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "functionSelector": "8006a5d3",
            "id": 280,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "delegateAddresses",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 275,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "860:29:5"
            },
            "returnParameters": {
              "id": 279,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 278,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 280,
                  "src": "912:16:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 276,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "912:7:5",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 277,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "912:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "911:18:5"
            },
            "scope": 281,
            "src": "825:105:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 781,
        "src": "58:874:5"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 282,
              "name": "ERC1538Query",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 281,
              "src": "967:12:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC1538Query_$281",
                "typeString": "contract ERC1538Query"
              }
            },
            "id": 283,
            "nodeType": "InheritanceSpecifier",
            "src": "967:12:5"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 284,
              "name": "ERC1538Module",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 218,
              "src": "981:13:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC1538Module_$218",
                "typeString": "contract ERC1538Module"
              }
            },
            "id": 285,
            "nodeType": "InheritanceSpecifier",
            "src": "981:13:5"
          }
        ],
        "contractDependencies": [
          218,
          281,
          1107,
          3003,
          3123
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 780,
        "linearizedBaseContracts": [
          780,
          218,
          1107,
          3123,
          3003,
          281
        ],
        "name": "ERC1538QueryDelegate",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "baseFunctions": [
              226
            ],
            "body": {
              "id": 295,
              "nodeType": "Block",
              "src": "1066:31:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 291,
                        "name": "m_funcs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1106,
                        "src": "1077:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_map_$3205_storage",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                        }
                      },
                      "id": 292,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3218,
                      "src": "1077:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                        "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 293,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1077:16:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 290,
                  "id": 294,
                  "nodeType": "Return",
                  "src": "1070:23:5"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "a08e8b36",
            "id": 296,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "totalFunctions",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 287,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1034:8:5"
            },
            "parameters": {
              "id": 286,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1021:2:5"
            },
            "returnParameters": {
              "id": 290,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 289,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 296,
                  "src": "1056:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 288,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1056:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1055:9:5"
            },
            "scope": 780,
            "src": "998:99:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              237
            ],
            "body": {
              "id": 329,
              "nodeType": "Block",
              "src": "1228:154:5",
              "statements": [
                {
                  "assignments": [
                    309,
                    311,
                    313
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 309,
                      "name": "funcId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 329,
                      "src": "1233:13:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 308,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "1233:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 311,
                      "name": "funcDelegate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 329,
                      "src": "1248:20:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 310,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1248:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 313,
                      "name": "funcSignature",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 329,
                      "src": "1270:26:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 312,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1270:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 320,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 316,
                          "name": "_index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 298,
                          "src": "1311:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1320:1:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "1311:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 314,
                        "name": "m_funcs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1106,
                        "src": "1300:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_map_$3205_storage",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                        }
                      },
                      "id": 315,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "at",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3296,
                      "src": "1300:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_uint256_$returns$_t_bytes4_$_t_address_$_t_bytes_memory_ptr_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                        "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,uint256) view returns (bytes4,address,bytes memory)"
                      }
                    },
                    "id": 319,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1300:22:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes4_$_t_address_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bytes4,address,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1232:90:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 323,
                            "name": "funcSignature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 313,
                            "src": "1341:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1334:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                            "typeString": "type(string storage pointer)"
                          },
                          "typeName": {
                            "id": 321,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "1334:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 324,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1334:21:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 325,
                        "name": "funcId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 309,
                        "src": "1357:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 326,
                        "name": "funcDelegate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 311,
                        "src": "1365:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "id": 327,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "1333:45:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_bytes4_$_t_address_$",
                      "typeString": "tuple(string memory,bytes4,address)"
                    }
                  },
                  "functionReturnParameters": 307,
                  "id": 328,
                  "nodeType": "Return",
                  "src": "1326:52:5"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "0164ee96",
            "id": 330,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "functionByIndex",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 300,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1151:8:5"
            },
            "parameters": {
              "id": 299,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 298,
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 330,
                  "src": "1125:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 297,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1125:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1124:16:5"
            },
            "returnParameters": {
              "id": 307,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 302,
                  "name": "signature",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 330,
                  "src": "1173:23:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 301,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1173:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 304,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 330,
                  "src": "1198:9:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 303,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1198:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 306,
                  "name": "delegate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 330,
                  "src": "1209:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 305,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1209:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1172:54:5"
            },
            "scope": 780,
            "src": "1100:282:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              248
            ],
            "body": {
              "id": 356,
              "nodeType": "Block",
              "src": "1510:82:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 346,
                                "name": "_funcId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 332,
                                "src": "1544:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 344,
                                "name": "m_funcs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1106,
                                "src": "1529:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_map_$3205_storage",
                                  "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                                }
                              },
                              "id": 345,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value2",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3248,
                              "src": "1529:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_bytes4_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                                "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (bytes memory)"
                              }
                            },
                            "id": 347,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1529:23:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1522:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                            "typeString": "type(string storage pointer)"
                          },
                          "typeName": {
                            "id": 342,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "1522:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 348,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1522:31:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 349,
                        "name": "_funcId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 332,
                        "src": "1555:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 352,
                            "name": "_funcId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 332,
                            "src": "1579:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 350,
                            "name": "m_funcs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1106,
                            "src": "1564:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_map_$3205_storage",
                              "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                            }
                          },
                          "id": 351,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value1",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3233,
                          "src": "1564:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_bytes4_$returns$_t_address_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                            "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (address)"
                          }
                        },
                        "id": 353,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1564:23:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "id": 354,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "1521:67:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_bytes4_$_t_address_$",
                      "typeString": "tuple(string memory,bytes4,address)"
                    }
                  },
                  "functionReturnParameters": 341,
                  "id": 355,
                  "nodeType": "Return",
                  "src": "1514:74:5"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "a3f01e59",
            "id": 357,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "functionById",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 334,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1433:8:5"
            },
            "parameters": {
              "id": 333,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 332,
                  "name": "_funcId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 357,
                  "src": "1407:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 331,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1407:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1406:16:5"
            },
            "returnParameters": {
              "id": 341,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 336,
                  "name": "signature",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 357,
                  "src": "1455:23:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 335,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1455:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 338,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 357,
                  "src": "1480:9:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 337,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1480:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 340,
                  "name": "delegate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 357,
                  "src": "1491:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 339,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1491:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1454:54:5"
            },
            "scope": 780,
            "src": "1385:207:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              255
            ],
            "body": {
              "id": 378,
              "nodeType": "Block",
              "src": "1690:73:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 372,
                                    "name": "_funcSignature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 359,
                                    "src": "1741:14:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    }
                                  ],
                                  "id": 371,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1735:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 370,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1735:5:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1735:21:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "id": 369,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "1725:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 374,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1725:32:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1718:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes4_$",
                            "typeString": "type(bytes4)"
                          },
                          "typeName": {
                            "id": 367,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "1718:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 375,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1718:40:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 365,
                        "name": "m_funcs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1106,
                        "src": "1701:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_map_$3205_storage",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                        }
                      },
                      "id": 366,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "contains",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3328,
                      "src": "1701:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_bytes4_$returns$_t_bool_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                        "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (bool)"
                      }
                    },
                    "id": 376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1701:58:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 364,
                  "id": 377,
                  "nodeType": "Return",
                  "src": "1694:65:5"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "5bfc7f77",
            "id": 379,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "functionExists",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 361,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1661:8:5"
            },
            "parameters": {
              "id": 360,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 359,
                  "name": "_funcSignature",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 379,
                  "src": "1619:30:5",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 358,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1619:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1618:32:5"
            },
            "returnParameters": {
              "id": 364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 363,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 379,
                  "src": "1683:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 362,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1683:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1682:6:5"
            },
            "scope": 780,
            "src": "1595:168:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              274
            ],
            "body": {
              "id": 400,
              "nodeType": "Block",
              "src": "1865:71:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 394,
                                    "name": "_funcSignature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 381,
                                    "src": "1914:14:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    }
                                  ],
                                  "id": 393,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1908:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 392,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1908:5:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 395,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1908:21:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "id": 391,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "1898:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 396,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1898:32:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1891:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes4_$",
                            "typeString": "type(bytes4)"
                          },
                          "typeName": {
                            "id": 389,
                            "name": "bytes4",
                            "nodeType": "ElementaryTypeName",
                            "src": "1891:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 397,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1891:40:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 387,
                        "name": "m_funcs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1106,
                        "src": "1876:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_map_$3205_storage",
                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                        }
                      },
                      "id": 388,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3233,
                      "src": "1876:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_bytes4_$returns$_t_address_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                        "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (address)"
                      }
                    },
                    "id": 398,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1876:56:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 386,
                  "id": 399,
                  "nodeType": "Return",
                  "src": "1869:63:5"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "0f0132b8",
            "id": 401,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "delegateAddress",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 383,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1833:8:5"
            },
            "parameters": {
              "id": 382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 381,
                  "name": "_funcSignature",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 401,
                  "src": "1791:30:5",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 380,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1791:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1790:32:5"
            },
            "returnParameters": {
              "id": 386,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 385,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 401,
                  "src": "1855:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 384,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1855:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1854:9:5"
            },
            "scope": 780,
            "src": "1766:170:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              260
            ],
            "body": {
              "id": 511,
              "nodeType": "Block",
              "src": "2017:561:5",
              "statements": [
                {
                  "assignments": [
                    408
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 408,
                      "name": "signaturesLength",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 511,
                      "src": "2021:24:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 407,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2021:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 410,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 409,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2048:1:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2021:28:5"
                },
                {
                  "body": {
                    "id": 436,
                    "nodeType": "Block",
                    "src": "2103:81:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 423,
                            "name": "signaturesLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 408,
                            "src": "2108:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 428,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 412,
                                        "src": "2157:1:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 426,
                                        "name": "m_funcs",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1106,
                                        "src": "2143:7:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_map_$3205_storage",
                                          "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                                        }
                                      },
                                      "id": 427,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "keyAt",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3264,
                                      "src": "2143:13:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_uint256_$returns$_t_bytes4_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                                        "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,uint256) view returns (bytes4)"
                                      }
                                    },
                                    "id": 429,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2143:16:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 424,
                                    "name": "m_funcs",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1106,
                                    "src": "2128:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_map_$3205_storage",
                                      "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                                    }
                                  },
                                  "id": 425,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value2",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3248,
                                  "src": "2128:14:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_bytes4_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                                    "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (bytes memory)"
                                  }
                                },
                                "id": 430,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2128:32:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 431,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2128:39:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2170:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "2128:43:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2108:63:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 435,
                        "nodeType": "ExpressionStatement",
                        "src": "2108:63:5"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 419,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 415,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 412,
                      "src": "2073:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 416,
                          "name": "m_funcs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1106,
                          "src": "2078:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$3205_storage",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                          }
                        },
                        "id": 417,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3218,
                        "src": "2078:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                          "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 418,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2078:16:5",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2073:21:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 437,
                  "initializationExpression": {
                    "assignments": [
                      412
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 412,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 437,
                        "src": "2058:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 411,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2058:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 414,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 413,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2070:1:5",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2058:13:5"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 421,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "2096:3:5",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 420,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 412,
                        "src": "2098:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 422,
                    "nodeType": "ExpressionStatement",
                    "src": "2096:3:5"
                  },
                  "nodeType": "ForStatement",
                  "src": "2053:131:5"
                },
                {
                  "assignments": [
                    439
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 439,
                      "name": "signatures",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 511,
                      "src": "2188:23:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 438,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2188:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 444,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 442,
                        "name": "signaturesLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 408,
                        "src": "2224:16:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 441,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2214:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 440,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2218:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2214:27:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2188:53:5"
                },
                {
                  "assignments": [
                    446
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 446,
                      "name": "charPos",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 511,
                      "src": "2245:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 445,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2245:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 448,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2263:1:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2245:19:5"
                },
                {
                  "body": {
                    "id": 504,
                    "nodeType": "Block",
                    "src": "2318:227:5",
                    "statements": [
                      {
                        "assignments": [
                          462
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 462,
                            "name": "signature",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 504,
                            "src": "2323:22:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 461,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2323:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 470,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 467,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 450,
                                  "src": "2377:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 465,
                                  "name": "m_funcs",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1106,
                                  "src": "2363:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_map_$3205_storage",
                                    "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                                  }
                                },
                                "id": 466,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "keyAt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3264,
                                "src": "2363:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_uint256_$returns$_t_bytes4_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                                  "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,uint256) view returns (bytes4)"
                                }
                              },
                              "id": 468,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2363:16:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 463,
                              "name": "m_funcs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1106,
                              "src": "2348:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_map_$3205_storage",
                                "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                              }
                            },
                            "id": 464,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value2",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3248,
                            "src": "2348:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_bytes4_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                              "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (bytes memory)"
                            }
                          },
                          "id": 469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2348:32:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2323:57:5"
                      },
                      {
                        "body": {
                          "id": 493,
                          "nodeType": "Block",
                          "src": "2435:61:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 488,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 482,
                                    "name": "signatures",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 439,
                                    "src": "2441:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 484,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 483,
                                    "name": "charPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 446,
                                    "src": "2452:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2441:19:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 485,
                                    "name": "signature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 462,
                                    "src": "2463:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 487,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 486,
                                    "name": "c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 472,
                                    "src": "2473:1:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2463:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "2441:34:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 489,
                              "nodeType": "ExpressionStatement",
                              "src": "2441:34:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 491,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "2481:9:5",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 490,
                                  "name": "charPos",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 446,
                                  "src": "2483:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 492,
                              "nodeType": "ExpressionStatement",
                              "src": "2481:9:5"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 475,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 472,
                            "src": "2405:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 476,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 462,
                              "src": "2409:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2409:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2405:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 494,
                        "initializationExpression": {
                          "assignments": [
                            472
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 472,
                              "name": "c",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 494,
                              "src": "2390:9:5",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 471,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2390:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 474,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2402:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2390:13:5"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "2427:3:5",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 479,
                              "name": "c",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 472,
                              "src": "2429:1:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 481,
                          "nodeType": "ExpressionStatement",
                          "src": "2427:3:5"
                        },
                        "nodeType": "ForStatement",
                        "src": "2385:111:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 495,
                              "name": "signatures",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 439,
                              "src": "2500:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 497,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 496,
                              "name": "charPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 446,
                              "src": "2511:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2500:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30783342",
                            "id": 498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2522:4:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_59_by_1",
                              "typeString": "int_const 59"
                            },
                            "value": "0x3B"
                          },
                          "src": "2500:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 500,
                        "nodeType": "ExpressionStatement",
                        "src": "2500:26:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "2531:9:5",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 501,
                            "name": "charPos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 446,
                            "src": "2533:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 503,
                        "nodeType": "ExpressionStatement",
                        "src": "2531:9:5"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 453,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 450,
                      "src": "2288:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 454,
                          "name": "m_funcs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1106,
                          "src": "2293:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$3205_storage",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                          }
                        },
                        "id": 455,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3218,
                        "src": "2293:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                          "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 456,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2293:16:5",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2288:21:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 505,
                  "initializationExpression": {
                    "assignments": [
                      450
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 450,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 505,
                        "src": "2273:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 449,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2273:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 452,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 451,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2285:1:5",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2273:13:5"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "2311:3:5",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 458,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 450,
                        "src": "2313:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 460,
                    "nodeType": "ExpressionStatement",
                    "src": "2311:3:5"
                  },
                  "nodeType": "ForStatement",
                  "src": "2268:277:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 508,
                        "name": "signatures",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 439,
                        "src": "2563:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "2556:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                        "typeString": "type(string storage pointer)"
                      },
                      "typeName": {
                        "id": 506,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2556:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2556:18:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 406,
                  "id": 510,
                  "nodeType": "Return",
                  "src": "2549:25:5"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "49d0cd85",
            "id": 512,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "functionSignatures",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 403,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1979:8:5"
            },
            "parameters": {
              "id": 402,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1966:2:5"
            },
            "returnParameters": {
              "id": 406,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 405,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 512,
                  "src": "2001:13:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 404,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2001:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2000:15:5"
            },
            "scope": 780,
            "src": "1939:639:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              267
            ],
            "body": {
              "id": 654,
              "nodeType": "Block",
              "src": "2684:869:5",
              "statements": [
                {
                  "assignments": [
                    524
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 524,
                      "name": "delegateSignatures",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 654,
                      "src": "2688:33:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                        "typeString": "bytes[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 522,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2688:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "id": 523,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2688:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                          "typeString": "bytes[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 532,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 528,
                            "name": "m_funcs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1106,
                            "src": "2736:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_map_$3205_storage",
                              "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                            }
                          },
                          "id": 529,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3218,
                          "src": "2736:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                            "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer) view returns (uint256)"
                          }
                        },
                        "id": 530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2736:16:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 527,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2724:11:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 525,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2728:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "id": 526,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2728:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                          "typeString": "bytes[]"
                        }
                      }
                    },
                    "id": 531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2724:29:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory",
                      "typeString": "bytes memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2688:65:5"
                },
                {
                  "assignments": [
                    534
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 534,
                      "name": "delegateSignaturesLength",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 654,
                      "src": "2757:32:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 533,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2757:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 536,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2792:1:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2757:36:5"
                },
                {
                  "assignments": [
                    538
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 538,
                      "name": "signaturesLength",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 654,
                      "src": "2798:24:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 537,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2798:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 540,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 539,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2825:1:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2798:28:5"
                },
                {
                  "body": {
                    "id": 585,
                    "nodeType": "Block",
                    "src": "2880:283:5",
                    "statements": [
                      {
                        "assignments": [
                          554,
                          556,
                          558
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 554,
                            "name": "funcId",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 585,
                            "src": "2886:13:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 553,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "2886:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 556,
                            "name": "funcDelegate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 585,
                            "src": "2901:20:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 555,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2901:7:5",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 558,
                            "name": "funcSignature",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 585,
                            "src": "2923:26:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 557,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2923:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 563,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 561,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 542,
                              "src": "2964:1:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 559,
                              "name": "m_funcs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1106,
                              "src": "2953:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_map_$3205_storage",
                                "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                              }
                            },
                            "id": 560,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "at",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3296,
                            "src": "2953:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_uint256_$returns$_t_bytes4_$_t_address_$_t_bytes_memory_ptr_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                              "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,uint256) view returns (bytes4,address,bytes memory)"
                            }
                          },
                          "id": 562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2953:13:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes4_$_t_address_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bytes4,address,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2885:81:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 566,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 564,
                            "name": "_delegate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 514,
                            "src": "2975:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 565,
                            "name": "funcDelegate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 556,
                            "src": "2988:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2975:25:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 584,
                        "nodeType": "IfStatement",
                        "src": "2971:188:5",
                        "trueBody": {
                          "id": 583,
                          "nodeType": "Block",
                          "src": "3005:154:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 572,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 567,
                                  "name": "signaturesLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 538,
                                  "src": "3011:16:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 571,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 568,
                                      "name": "funcSignature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 558,
                                      "src": "3031:13:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 569,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3031:20:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 570,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3054:1:5",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "3031:24:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3011:44:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 573,
                              "nodeType": "ExpressionStatement",
                              "src": "3011:44:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 578,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 574,
                                    "name": "delegateSignatures",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 524,
                                    "src": "3061:18:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                                      "typeString": "bytes memory[] memory"
                                    }
                                  },
                                  "id": 576,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 575,
                                    "name": "delegateSignaturesLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 534,
                                    "src": "3080:24:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3061:44:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 577,
                                  "name": "funcSignature",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 558,
                                  "src": "3108:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "3061:60:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 579,
                              "nodeType": "ExpressionStatement",
                              "src": "3061:60:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 581,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "3127:26:5",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 580,
                                  "name": "delegateSignaturesLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 534,
                                  "src": "3129:24:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 582,
                              "nodeType": "ExpressionStatement",
                              "src": "3127:26:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 545,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 542,
                      "src": "2850:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 546,
                          "name": "m_funcs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1106,
                          "src": "2855:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$3205_storage",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                          }
                        },
                        "id": 547,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3218,
                        "src": "2855:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                          "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 548,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2855:16:5",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2850:21:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 586,
                  "initializationExpression": {
                    "assignments": [
                      542
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 542,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 586,
                        "src": "2835:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 541,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2835:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 544,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2847:1:5",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2835:13:5"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 551,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "2873:3:5",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 550,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 542,
                        "src": "2875:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 552,
                    "nodeType": "ExpressionStatement",
                    "src": "2873:3:5"
                  },
                  "nodeType": "ForStatement",
                  "src": "2830:333:5"
                },
                {
                  "assignments": [
                    588
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 588,
                      "name": "signatures",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 654,
                      "src": "3167:23:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 587,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3167:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 593,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 591,
                        "name": "signaturesLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 538,
                        "src": "3203:16:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 590,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "3193:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 589,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3197:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 592,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3193:27:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3167:53:5"
                },
                {
                  "assignments": [
                    595
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 595,
                      "name": "charPos",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 654,
                      "src": "3224:15:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 594,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3224:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 597,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3242:1:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3224:19:5"
                },
                {
                  "body": {
                    "id": 647,
                    "nodeType": "Block",
                    "src": "3304:216:5",
                    "statements": [
                      {
                        "assignments": [
                          609
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 609,
                            "name": "signature",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 647,
                            "src": "3309:22:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 608,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3309:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 613,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 610,
                            "name": "delegateSignatures",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 524,
                            "src": "3334:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          "id": 612,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 611,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 599,
                            "src": "3353:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3334:21:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3309:46:5"
                      },
                      {
                        "body": {
                          "id": 636,
                          "nodeType": "Block",
                          "src": "3410:61:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 631,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 625,
                                    "name": "signatures",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 588,
                                    "src": "3416:10:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 627,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 626,
                                    "name": "charPos",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 595,
                                    "src": "3427:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3416:19:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 628,
                                    "name": "signature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 609,
                                    "src": "3438:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 630,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 629,
                                    "name": "c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 615,
                                    "src": "3448:1:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3438:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "3416:34:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 632,
                              "nodeType": "ExpressionStatement",
                              "src": "3416:34:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "3456:9:5",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 633,
                                  "name": "charPos",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 595,
                                  "src": "3458:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 635,
                              "nodeType": "ExpressionStatement",
                              "src": "3456:9:5"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 618,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 615,
                            "src": "3380:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 619,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 609,
                              "src": "3384:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 620,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3384:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3380:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 637,
                        "initializationExpression": {
                          "assignments": [
                            615
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 615,
                              "name": "c",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 637,
                              "src": "3365:9:5",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 614,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3365:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 617,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3377:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3365:13:5"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "3402:3:5",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 622,
                              "name": "c",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 615,
                              "src": "3404:1:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 624,
                          "nodeType": "ExpressionStatement",
                          "src": "3402:3:5"
                        },
                        "nodeType": "ForStatement",
                        "src": "3360:111:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 638,
                              "name": "signatures",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 588,
                              "src": "3475:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 640,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 639,
                              "name": "charPos",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 595,
                              "src": "3486:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3475:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30783342",
                            "id": 641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3497:4:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_59_by_1",
                              "typeString": "int_const 59"
                            },
                            "value": "0x3B"
                          },
                          "src": "3475:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 643,
                        "nodeType": "ExpressionStatement",
                        "src": "3475:26:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "3506:9:5",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 644,
                            "name": "charPos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 595,
                            "src": "3508:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 646,
                        "nodeType": "ExpressionStatement",
                        "src": "3506:9:5"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 602,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 599,
                      "src": "3267:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 603,
                      "name": "delegateSignaturesLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 534,
                      "src": "3271:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3267:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 648,
                  "initializationExpression": {
                    "assignments": [
                      599
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 599,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 648,
                        "src": "3252:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 598,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3252:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 601,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 600,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3264:1:5",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3252:13:5"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "3297:3:5",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 605,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 599,
                        "src": "3299:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 607,
                    "nodeType": "ExpressionStatement",
                    "src": "3297:3:5"
                  },
                  "nodeType": "ForStatement",
                  "src": "3247:273:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 651,
                        "name": "signatures",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 588,
                        "src": "3538:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3531:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                        "typeString": "type(string storage pointer)"
                      },
                      "typeName": {
                        "id": 649,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "3531:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 652,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3531:18:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 519,
                  "id": 653,
                  "nodeType": "Return",
                  "src": "3524:25:5"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "51fc00ed",
            "id": 655,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "delegateFunctionSignatures",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 516,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2646:8:5"
            },
            "parameters": {
              "id": 515,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 514,
                  "name": "_delegate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 655,
                  "src": "2617:17:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 513,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2617:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2616:19:5"
            },
            "returnParameters": {
              "id": 519,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 518,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 655,
                  "src": "2668:13:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 517,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2668:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2667:15:5"
            },
            "scope": 780,
            "src": "2581:972:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              280
            ],
            "body": {
              "id": 778,
              "nodeType": "Block",
              "src": "3636:647:5",
              "statements": [
                {
                  "assignments": [
                    666
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 666,
                      "name": "delegatesBucket",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 778,
                      "src": "3640:32:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 664,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3640:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 665,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3640:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 674,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 670,
                            "name": "m_funcs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1106,
                            "src": "3689:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_map_$3205_storage",
                              "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                            }
                          },
                          "id": 671,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3218,
                          "src": "3689:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                            "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer) view returns (uint256)"
                          }
                        },
                        "id": 672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3689:16:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 669,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "3675:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 667,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3679:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 668,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3679:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3675:31:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3640:66:5"
                },
                {
                  "assignments": [
                    676
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 676,
                      "name": "numDelegates",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 778,
                      "src": "3711:20:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 675,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3711:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 678,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 677,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3734:1:5",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3711:24:5"
                },
                {
                  "body": {
                    "id": 743,
                    "nodeType": "Block",
                    "src": "3789:319:5",
                    "statements": [
                      {
                        "assignments": [
                          692
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 692,
                            "name": "delegate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 743,
                            "src": "3794:16:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 691,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3794:7:5",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 700,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 697,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 680,
                                  "src": "3842:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 695,
                                  "name": "m_funcs",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1106,
                                  "src": "3828:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_map_$3205_storage",
                                    "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                                  }
                                },
                                "id": 696,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "keyAt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3264,
                                "src": "3828:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_uint256_$returns$_t_bytes4_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                                  "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,uint256) view returns (bytes4)"
                                }
                              },
                              "id": 698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3828:16:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 693,
                              "name": "m_funcs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1106,
                              "src": "3813:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_map_$3205_storage",
                                "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                              }
                            },
                            "id": 694,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3233,
                            "src": "3813:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$_t_bytes4_$returns$_t_address_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                              "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer,bytes4) view returns (address)"
                            }
                          },
                          "id": 699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3813:32:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3794:51:5"
                      },
                      {
                        "assignments": [
                          702
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 702,
                            "name": "seen",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 743,
                            "src": "3850:9:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 701,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "3850:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 704,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 703,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3862:5:5",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3850:17:5"
                      },
                      {
                        "body": {
                          "id": 727,
                          "nodeType": "Block",
                          "src": "3918:88:5",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 719,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 715,
                                  "name": "delegate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 692,
                                  "src": "3928:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 716,
                                    "name": "delegatesBucket",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 666,
                                    "src": "3940:15:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 718,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 717,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 706,
                                    "src": "3956:1:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3940:18:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3928:30:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 726,
                              "nodeType": "IfStatement",
                              "src": "3924:77:5",
                              "trueBody": {
                                "id": 725,
                                "nodeType": "Block",
                                "src": "3964:37:5",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 722,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 720,
                                        "name": "seen",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 702,
                                        "src": "3971:4:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "74727565",
                                        "id": 721,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3978:4:5",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "true"
                                      },
                                      "src": "3971:11:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 723,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3971:11:5"
                                  },
                                  {
                                    "id": 724,
                                    "nodeType": "Break",
                                    "src": "3989:5:5"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 709,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 706,
                            "src": "3892:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 710,
                            "name": "numDelegates",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 676,
                            "src": "3896:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3892:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 728,
                        "initializationExpression": {
                          "assignments": [
                            706
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 706,
                              "name": "j",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 728,
                              "src": "3877:9:5",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 705,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3877:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 708,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3889:1:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3877:13:5"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 713,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "3910:3:5",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 712,
                              "name": "j",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 706,
                              "src": "3912:1:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 714,
                          "nodeType": "ExpressionStatement",
                          "src": "3910:3:5"
                        },
                        "nodeType": "ForStatement",
                        "src": "3872:134:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 729,
                            "name": "seen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 702,
                            "src": "4014:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 730,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4022:5:5",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "4014:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 742,
                        "nodeType": "IfStatement",
                        "src": "4010:94:5",
                        "trueBody": {
                          "id": 741,
                          "nodeType": "Block",
                          "src": "4032:72:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 736,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 732,
                                    "name": "delegatesBucket",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 666,
                                    "src": "4038:15:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 734,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 733,
                                    "name": "numDelegates",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 676,
                                    "src": "4054:12:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4038:29:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 735,
                                  "name": "delegate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 692,
                                  "src": "4070:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4038:40:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 737,
                              "nodeType": "ExpressionStatement",
                              "src": "4038:40:5"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "4084:14:5",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 738,
                                  "name": "numDelegates",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 676,
                                  "src": "4086:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 740,
                              "nodeType": "ExpressionStatement",
                              "src": "4084:14:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 687,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 683,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 680,
                      "src": "3759:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 684,
                          "name": "m_funcs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1106,
                          "src": "3764:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_map_$3205_storage",
                            "typeString": "struct LibMap2_bytes4_address_bytes.map storage ref"
                          }
                        },
                        "id": 685,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3218,
                        "src": "3764:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_map_$3205_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_map_$3205_storage_ptr_$",
                          "typeString": "function (struct LibMap2_bytes4_address_bytes.map storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 686,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3764:16:5",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3759:21:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 744,
                  "initializationExpression": {
                    "assignments": [
                      680
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 680,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 744,
                        "src": "3744:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 679,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3744:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 682,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 681,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3756:1:5",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3744:13:5"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 689,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "3782:3:5",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 688,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 680,
                        "src": "3784:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 690,
                    "nodeType": "ExpressionStatement",
                    "src": "3782:3:5"
                  },
                  "nodeType": "ForStatement",
                  "src": "3739:369:5"
                },
                {
                  "assignments": [
                    749
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 749,
                      "name": "delegates",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 778,
                      "src": "4112:26:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 747,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4112:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 748,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4112:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 755,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 753,
                        "name": "numDelegates",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 676,
                        "src": "4155:12:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 752,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4141:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 750,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4145:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 751,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4145:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 754,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4141:27:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4112:56:5"
                },
                {
                  "body": {
                    "id": 774,
                    "nodeType": "Block",
                    "src": "4217:43:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 766,
                              "name": "delegates",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 749,
                              "src": "4222:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 768,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 767,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 757,
                              "src": "4232:1:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4222:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 769,
                              "name": "delegatesBucket",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 666,
                              "src": "4237:15:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 771,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 770,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 757,
                              "src": "4253:1:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4237:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4222:33:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 773,
                        "nodeType": "ExpressionStatement",
                        "src": "4222:33:5"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 760,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 757,
                      "src": "4192:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 761,
                      "name": "numDelegates",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 676,
                      "src": "4196:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4192:16:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 775,
                  "initializationExpression": {
                    "assignments": [
                      757
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 757,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 775,
                        "src": "4177:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 756,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4177:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 759,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 758,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4189:1:5",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4177:13:5"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 764,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "4210:3:5",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 763,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 757,
                        "src": "4212:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 765,
                    "nodeType": "ExpressionStatement",
                    "src": "4210:3:5"
                  },
                  "nodeType": "ForStatement",
                  "src": "4172:88:5"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 776,
                    "name": "delegates",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 749,
                    "src": "4270:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 661,
                  "id": 777,
                  "nodeType": "Return",
                  "src": "4263:16:5"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "8006a5d3",
            "id": 779,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "delegateAddresses",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 657,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3595:8:5"
            },
            "parameters": {
              "id": 656,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3582:2:5"
            },
            "returnParameters": {
              "id": 661,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 660,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 779,
                  "src": "3617:16:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 658,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3617:7:5",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 659,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3617:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3616:18:5"
            },
            "scope": 780,
            "src": "3556:727:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 781,
        "src": "934:3351:5"
      }
    ],
    "src": "0:4286:5"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.4+commit.1dca32f3.Emscripten.clang"
  },
  "networks": {
    "1": {
      "events": {
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x7EeFE627bbd5863f7D03FEed1E51082d4F702ce4"
    },
    "3": {
      "events": {
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x7EeFE627bbd5863f7D03FEed1E51082d4F702ce4"
    },
    "4": {
      "events": {
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x7EeFE627bbd5863f7D03FEed1E51082d4F702ce4"
    },
    "5": {
      "events": {
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x7EeFE627bbd5863f7D03FEed1E51082d4F702ce4"
    },
    "42": {
      "events": {
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x7EeFE627bbd5863f7D03FEed1E51082d4F702ce4"
    }
  },
  "schemaVersion": "3.1.0",
  "updatedAt": "2020-04-21T19:16:56.024Z",
  "networkType": "ethereum",
  "devdoc": {
    "methods": {
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner.     * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    }
  },
  "userdoc": {
    "methods": {}
  }
}