{
  "contractName": "EvrynetCreditCustodian",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        }
      ],
      "name": "add",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        },
        {
          "name": "_prevTypeID",
          "type": "uint256"
        }
      ],
      "name": "remove",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "linklist",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "assets",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_credit",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "typeID",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Unlock",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "typeID",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "Lock",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "typeID",
          "type": "uint256"
        }
      ],
      "name": "AddedAsset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "typeID",
          "type": "uint256"
        }
      ],
      "name": "RemovedAsset",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "unlock",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_typeID",
          "type": "uint256"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "lock",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_operator",
          "type": "address"
        },
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_typeID",
          "type": "uint256"
        },
        {
          "name": "_value",
          "type": "uint256"
        },
        {
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "onEER2Received",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_operator",
          "type": "address"
        },
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_typeIDs",
          "type": "uint256[]"
        },
        {
          "name": "_values",
          "type": "uint256[]"
        },
        {
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "onEER2BatchReceived",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.0+commit.1d4f565a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_typeID\",\"type\":\"uint256\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onEER2Received\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"}],\"name\":\"add\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"unlock\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_typeID\",\"type\":\"uint256\"},{\"name\":\"_prevTypeID\",\"type\":\"uint256\"}],\"name\":\"remove\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"linklist\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_typeIDs\",\"type\":\"uint256[]\"},{\"name\":\"_values\",\"type\":\"uint256[]\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onEER2BatchReceived\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"assets\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_credit\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"typeID\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Unlock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"typeID\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Lock\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"typeID\",\"type\":\"uint256\"}],\"name\":\"AddedAsset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"typeID\",\"type\":\"uint256\"}],\"name\":\"RemovedAsset\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"add(uint256)\":{\"params\":{\"_typeID\":\"the ID of credit being added\"}},\"remove(uint256,uint256)\":{\"params\":{\"_prevTypeID\":\"the prior credit ID in the linklist\",\"_typeID\":\"the ID of credit being removed\"}}}},\"userdoc\":{\"methods\":{\"add(uint256)\":{\"notice\":\"Add a new asset the whitelist asset database\"},\"remove(uint256,uint256)\":{\"notice\":\"remove an asset from the whitelist asset database\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/100x/Evrynetlabs/warp-contract/contracts/EvrynetCreditCustodian.sol\":\"EvrynetCreditCustodian\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/100x/Evrynetlabs/warp-contract/contracts/EvrynetCreditCustodian.sol\":{\"keccak256\":\"0x9907f6990b8ebbae6f5d07e079c3aa47962ee1df5f733bfa5c4bba1b155051c5\",\"urls\":[\"bzzr://55f71b589e812085797b69698f66f0e21be26579aae793c82ad135bf02fe29b6\"]},\"/Users/100x/Evrynetlabs/warp-contract/contracts/ICreditCustodian.sol\":{\"keccak256\":\"0x670aac841c9f839ba580cb00fc9686420a405eaf4d2b1c40e3433e376ec88e6b\",\"urls\":[\"bzzr://cc584593ba8781050bcace5e1104d19b8444b810de32b0be03922d4bad84e786\"]},\"/Users/100x/Evrynetlabs/warp-contract/contracts/IMetadata.sol\":{\"keccak256\":\"0xc8def8625e9e47bcb14c84cf3413ff505de7befe9f6f553eec623f0318a91ec9\",\"urls\":[\"bzzr://aa4ab5607ca5f7d02d89e5dda48e819e05b3425d2af389d220514acee04ca7fd\"]},\"/Users/100x/Evrynetlabs/warp-contract/contracts/Metadata.sol\":{\"keccak256\":\"0xcece9f02355b9542ca20bf8dc75a5c4caa7da537596e6ffdc21ecc8e8266608c\",\"urls\":[\"bzzr://c10e4871b1fc49087b86fcd86cb5d0f48090e6c58db52056565e2826d08bd695\"]},\"/Users/100x/Evrynetlabs/warp-contract/contracts/WhitelistAssets.sol\":{\"keccak256\":\"0xc44d63f8fb3919a9f1ca6f3bb312e5e40b2b27f0bda144940418bf43c3a511e2\",\"urls\":[\"bzzr://63566f9ab6372d1f3ff503eecc8a02255930aa378e5ac9b98170d405935c4707\"]},\"/Users/100x/Evrynetlabs/warp-contract/contracts/lib/Convert.sol\":{\"keccak256\":\"0x0e099e28785ae2480834c18d444b439c760a5eb96c783a3bf6b0ade9be24a19f\",\"urls\":[\"bzzr://53b0181609a4227f28d9d57a2a17f90f338dee97c96b442db4a8760f8ef0bdb2\"]},\"@evrynetlabs/credit-contract/contracts/EER2A.sol\":{\"keccak256\":\"0xf587547e337ca82e02112b697f9f6575fa2b216b1bdf99bc8f31301e37c9040f\",\"urls\":[\"bzzr://98cea014b451ffecaffd9067997955f5aa82e230c2147dbe8cad4fe1fe45b15a\"]},\"@evrynetlabs/credit-contract/contracts/EER2B.sol\":{\"keccak256\":\"0xd8be5ffa39877c2bb907033c961a3cd297aeb9401bb4b11cdd7816427a85a2f5\",\"urls\":[\"bzzr://1b66a991c02ecd4a20a923dc05fc5560a27c37f20d9941d73ea3d4a6449f3764\"]},\"@evrynetlabs/credit-contract/contracts/IEER2A.sol\":{\"keccak256\":\"0xa966511cbbb94eb21ae8b492f5189deb44d05827b73432bf46dd9e1a5260b4dc\",\"urls\":[\"bzzr://c878777f49799664ac6e583aacde59ea97e894f6a57c3822615f5f7ed8ee26d5\"]},\"@evrynetlabs/credit-contract/contracts/IEER2B.sol\":{\"keccak256\":\"0xfea74ab98ddc2254ae89edd408586a0e8d855cef9ca46f116862ce85f069e214\",\"urls\":[\"bzzr://eac5d51e127ff328ef72b817b946202843d282c36ec49696fb24168d95ea08f3\"]},\"@evrynetlabs/credit-contract/contracts/IEER2TokenReceiver.sol\":{\"keccak256\":\"0x788e5351918d81c8afe4465fcf2624947e7b2261d85f2f539fea413d85c9128e\",\"urls\":[\"bzzr://df72bbeb95755ea0298775633a45d7e78fffe3c619b2e168309f47d4cc8e07db\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0x661553e43d7c4fbb2de504e5999fd5c104d367488350ed5bf023031bd1ba5ac5\",\"urls\":[\"bzzr://fc2ba15143ce3a00268ecd15fc98eb2469b18bfe27a64bbab0ac6446f161c739\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xd1804d04fb39689453f673601429a99a0c68c422a981fc338773df9a59180fe9\",\"urls\":[\"bzzr://a7dfb6fc259d0074da840a848461487567e2a6309105dd5c050a4e025f0fa7cb\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzzr://f7f6da60a184233fd666ac44e6fb2bd51ca6ebdc4867a310d368049aa4e62786\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50604051602080610fc98339810180604052602081101561003057600080fd5b505160028054600160a060020a031916600160a060020a03909216919091179055610f69806100606000396000f3fe6080604052600436106100715760003560e01c63ffffffff16806309a23c29146100765780631003e2d21461014d5780631338736f146101795780635bfadb24146101a95780636526db7a146101d957806371bc35ab14610209578063baf5f22814610245578063cf35bdd01461037f575b600080fd5b34801561008257600080fd5b50610118600480360360a081101561009957600080fd5b600160a060020a03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184600183028401116401000000008311171561010d57600080fd5b5090925090506103bd565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b34801561015957600080fd5b506101776004803603602081101561017057600080fd5b5035610468565b005b34801561018557600080fd5b506101776004803603604081101561019c57600080fd5b508035906020013561093d565b3480156101b557600080fd5b50610177600480360360408110156101cc57600080fd5b5080359060200135610ae5565b3480156101e557600080fd5b50610177600480360360408110156101fc57600080fd5b5080359060200135610cc4565b34801561021557600080fd5b506102336004803603602081101561022c57600080fd5b5035610e24565b60408051918252519081900360200190f35b34801561025157600080fd5b50610118600480360360a081101561026857600080fd5b600160a060020a03823581169260208101359091169181019060608101604082013564010000000081111561029c57600080fd5b8201836020820111156102ae57600080fd5b803590602001918460208302840111640100000000831117156102d057600080fd5b9193909290916020810190356401000000008111156102ee57600080fd5b82018360208201111561030057600080fd5b8035906020019184602083028401116401000000008311171561032257600080fd5b91939092909160208101903564010000000081111561034057600080fd5b82018360208201111561035257600080fd5b8035906020019184600183028401116401000000008311171561037457600080fd5b509092509050610e36565b34801561038b57600080fd5b506103a9600480360360208110156103a257600080fd5b5035610f28565b604080519115158252519081900360200190f35b60008486600160a060020a031688600160a060020a03167fda16e0e36c9314946d6174ade0a7a5df06ffaf49c5c56d3f01193d53db0ace9887878760405180848152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a4507f09a23c29000000000000000000000000000000000000000000000000000000009695505050505050565b60008181526020819052604090205460ff161561051b576040805160e560020a62461bcd02815260206004820152604c60248201527f57686974656c6973744173736574733a2063616e6e6f7420616464207468652060448201527f617373657420746861742068617320616c7265616479206265656e20696e207460648201527f68652077686974656c6973740000000000000000000000000000000000000000608482015290519081900360a40190fd5b801515610598576040805160e560020a62461bcd02815260206004820152602d60248201527f57686974656c6973744173736574733a2074686520637265646974206964206360448201527f616e6e6f74206265207a65726f00000000000000000000000000000000000000606482015290519081900360840190fd5b600254604080517f01c376a0000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a03909216916301c376a091602480820192600092909190829003018186803b1580156105fd57600080fd5b505afa158015610611573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561063a57600080fd5b81019080805164010000000081111561065257600080fd5b8201602081018481111561066557600080fd5b815164010000000081118282018710171561067f57600080fd5b50506040517f7e4115ba00000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835173__Convert_______________________________9750637e4115ba96509394509283926044019185019080838360005b838110156107025781810151838201526020016106ea565b50505050905090810190601f16801561072f5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801561074c57600080fd5b505af4158015610760573d6000803e3d6000fd5b505050506040513d602081101561077657600080fd5b5051604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f2ad5032c0000000000000000000000000000000000000000000000000000000060048201529051600160a060020a03909216916301ffc9a791602480820192602092909190829003018186803b1580156107f957600080fd5b505afa15801561080d573d6000803e3d6000fd5b505050506040513d602081101561082357600080fd5b505115156108c7576040805160e560020a62461bcd02815260206004820152604160248201527f57686974656c6973744173736574733a20746865206d6574616461746120636f60448201527f6e7472616374206973206e6f7420737570706f7274656420696e74657266616360648201527f6500000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600081815260208181526040808320805460ff191660019081179091559091527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb498054828420558280528390555182917f808590b2e92602ac21a55184174c55027e40248219525b4fbe0f637f5f3a346c91a250565b600082815260208190526040902054829060ff1615156109cd576040805160e560020a62461bcd02815260206004820152602960248201527f57686974656c6973744173736574733a2074686520637265646974206973207060448201527f726f686962697465640000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6002546040805160208101808352600080835292517ff242432a00000000000000000000000000000000000000000000000000000000815233600482018181523060248401819052604484018b9052606484018a905260a060848501908152865160a48601528651600160a060020a039099169863f242432a98949792968d968d9694959460c490910192908190849084905b83811015610a78578181015183820152602001610a60565b50505050905090810190601f168015610aa55780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b50505050505050565b600082815260208190526040902054829060ff161515610b75576040805160e560020a62461bcd02815260206004820152602960248201527f57686974656c6973744173736574733a2074686520637265646974206973207060448201527f726f686962697465640000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6002546040805160208101808352600080835292517ff242432a00000000000000000000000000000000000000000000000000000000815230600482018181523360248401819052604484018b9052606484018a905260a060848501908152865160a48601528651600160a060020a039099169863f242432a98949792968d968d9694959460c490910192908190849084905b83811015610c20578181015183820152602001610c08565b50505050905090810190601f168015610c4d5780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015610c7057600080fd5b505af1158015610c84573d6000803e3d6000fd5b50506040805185815290518693503392507ff7870c5b224cbc19873599e46ccfc7103934650509b1af0c3ce90138377c20049181900360200190a3505050565b811515610d41576040805160e560020a62461bcd02815260206004820152602d60248201527f57686974656c6973744173736574733a2074686520637265646974206964206360448201527f616e6e6f74206265207a65726f00000000000000000000000000000000000000606482015290519081900360840190fd5b6000818152600160205260409020548214610dcc576040805160e560020a62461bcd02815260206004820152602860248201527f57686974656c6973744173736574733a20696e76616c69642072656d6f76652060448201527f617267756d656e74000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600082815260208181526040808320805460ff1916905560019091528082208054848452828420558483528290555183917fd8a3abf4ebfa76253e2780cdc5ec4857e8e40886cdcd10b169ecb18052d6ce2291a25050565b60016020526000908152604090205481565b6000805b86811015610ef9576000888883818110610e5057fe5b90506020020135905060008787848181101515610e6957fe5b905060200201359050818b600160a060020a03168d600160a060020a03167fda16e0e36c9314946d6174ade0a7a5df06ffaf49c5c56d3f01193d53db0ace98848a8a60405180848152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a45050600101610e3a565b507fbaf5f228000000000000000000000000000000000000000000000000000000009998505050505050505050565b60006020819052908152604090205460ff168156fea165627a7a723058209e5c8baad49b6aae20394cd57b765f2f27dcb1d5777eddab429f512e71d513460029",
  "deployedBytecode": "0x6080604052600436106100715760003560e01c63ffffffff16806309a23c29146100765780631003e2d21461014d5780631338736f146101795780635bfadb24146101a95780636526db7a146101d957806371bc35ab14610209578063baf5f22814610245578063cf35bdd01461037f575b600080fd5b34801561008257600080fd5b50610118600480360360a081101561009957600080fd5b600160a060020a03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184600183028401116401000000008311171561010d57600080fd5b5090925090506103bd565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b34801561015957600080fd5b506101776004803603602081101561017057600080fd5b5035610468565b005b34801561018557600080fd5b506101776004803603604081101561019c57600080fd5b508035906020013561093d565b3480156101b557600080fd5b50610177600480360360408110156101cc57600080fd5b5080359060200135610ae5565b3480156101e557600080fd5b50610177600480360360408110156101fc57600080fd5b5080359060200135610cc4565b34801561021557600080fd5b506102336004803603602081101561022c57600080fd5b5035610e24565b60408051918252519081900360200190f35b34801561025157600080fd5b50610118600480360360a081101561026857600080fd5b600160a060020a03823581169260208101359091169181019060608101604082013564010000000081111561029c57600080fd5b8201836020820111156102ae57600080fd5b803590602001918460208302840111640100000000831117156102d057600080fd5b9193909290916020810190356401000000008111156102ee57600080fd5b82018360208201111561030057600080fd5b8035906020019184602083028401116401000000008311171561032257600080fd5b91939092909160208101903564010000000081111561034057600080fd5b82018360208201111561035257600080fd5b8035906020019184600183028401116401000000008311171561037457600080fd5b509092509050610e36565b34801561038b57600080fd5b506103a9600480360360208110156103a257600080fd5b5035610f28565b604080519115158252519081900360200190f35b60008486600160a060020a031688600160a060020a03167fda16e0e36c9314946d6174ade0a7a5df06ffaf49c5c56d3f01193d53db0ace9887878760405180848152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a4507f09a23c29000000000000000000000000000000000000000000000000000000009695505050505050565b60008181526020819052604090205460ff161561051b576040805160e560020a62461bcd02815260206004820152604c60248201527f57686974656c6973744173736574733a2063616e6e6f7420616464207468652060448201527f617373657420746861742068617320616c7265616479206265656e20696e207460648201527f68652077686974656c6973740000000000000000000000000000000000000000608482015290519081900360a40190fd5b801515610598576040805160e560020a62461bcd02815260206004820152602d60248201527f57686974656c6973744173736574733a2074686520637265646974206964206360448201527f616e6e6f74206265207a65726f00000000000000000000000000000000000000606482015290519081900360840190fd5b600254604080517f01c376a0000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a03909216916301c376a091602480820192600092909190829003018186803b1580156105fd57600080fd5b505afa158015610611573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561063a57600080fd5b81019080805164010000000081111561065257600080fd5b8201602081018481111561066557600080fd5b815164010000000081118282018710171561067f57600080fd5b50506040517f7e4115ba00000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835173__Convert_______________________________9750637e4115ba96509394509283926044019185019080838360005b838110156107025781810151838201526020016106ea565b50505050905090810190601f16801561072f5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801561074c57600080fd5b505af4158015610760573d6000803e3d6000fd5b505050506040513d602081101561077657600080fd5b5051604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f2ad5032c0000000000000000000000000000000000000000000000000000000060048201529051600160a060020a03909216916301ffc9a791602480820192602092909190829003018186803b1580156107f957600080fd5b505afa15801561080d573d6000803e3d6000fd5b505050506040513d602081101561082357600080fd5b505115156108c7576040805160e560020a62461bcd02815260206004820152604160248201527f57686974656c6973744173736574733a20746865206d6574616461746120636f60448201527f6e7472616374206973206e6f7420737570706f7274656420696e74657266616360648201527f6500000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600081815260208181526040808320805460ff191660019081179091559091527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb498054828420558280528390555182917f808590b2e92602ac21a55184174c55027e40248219525b4fbe0f637f5f3a346c91a250565b600082815260208190526040902054829060ff1615156109cd576040805160e560020a62461bcd02815260206004820152602960248201527f57686974656c6973744173736574733a2074686520637265646974206973207060448201527f726f686962697465640000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6002546040805160208101808352600080835292517ff242432a00000000000000000000000000000000000000000000000000000000815233600482018181523060248401819052604484018b9052606484018a905260a060848501908152865160a48601528651600160a060020a039099169863f242432a98949792968d968d9694959460c490910192908190849084905b83811015610a78578181015183820152602001610a60565b50505050905090810190601f168015610aa55780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015610ac857600080fd5b505af1158015610adc573d6000803e3d6000fd5b50505050505050565b600082815260208190526040902054829060ff161515610b75576040805160e560020a62461bcd02815260206004820152602960248201527f57686974656c6973744173736574733a2074686520637265646974206973207060448201527f726f686962697465640000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6002546040805160208101808352600080835292517ff242432a00000000000000000000000000000000000000000000000000000000815230600482018181523360248401819052604484018b9052606484018a905260a060848501908152865160a48601528651600160a060020a039099169863f242432a98949792968d968d9694959460c490910192908190849084905b83811015610c20578181015183820152602001610c08565b50505050905090810190601f168015610c4d5780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015610c7057600080fd5b505af1158015610c84573d6000803e3d6000fd5b50506040805185815290518693503392507ff7870c5b224cbc19873599e46ccfc7103934650509b1af0c3ce90138377c20049181900360200190a3505050565b811515610d41576040805160e560020a62461bcd02815260206004820152602d60248201527f57686974656c6973744173736574733a2074686520637265646974206964206360448201527f616e6e6f74206265207a65726f00000000000000000000000000000000000000606482015290519081900360840190fd5b6000818152600160205260409020548214610dcc576040805160e560020a62461bcd02815260206004820152602860248201527f57686974656c6973744173736574733a20696e76616c69642072656d6f76652060448201527f617267756d656e74000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600082815260208181526040808320805460ff1916905560019091528082208054848452828420558483528290555183917fd8a3abf4ebfa76253e2780cdc5ec4857e8e40886cdcd10b169ecb18052d6ce2291a25050565b60016020526000908152604090205481565b6000805b86811015610ef9576000888883818110610e5057fe5b90506020020135905060008787848181101515610e6957fe5b905060200201359050818b600160a060020a03168d600160a060020a03167fda16e0e36c9314946d6174ade0a7a5df06ffaf49c5c56d3f01193d53db0ace98848a8a60405180848152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a45050600101610e3a565b507fbaf5f228000000000000000000000000000000000000000000000000000000009998505050505050505050565b60006020819052908152604090205460ff168156fea165627a7a723058209e5c8baad49b6aae20394cd57b765f2f27dcb1d5777eddab429f512e71d513460029",
  "sourceMap": "164:1560:0:-;;;429:63;8:9:-1;5:2;;;30:1;27;20:12;5:2;429:63:0;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;429:63:0;591:6:7;:23;;-1:-1:-1;;;;;;591:23:7;-1:-1:-1;;;;;591:23:7;;;;;;;;;164:1560:0;;;-1:-1:-1;164:1560:0;;",
  "deployedSourceMap": "164:1560:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;953:289;;8:9:-1;5:2;;;30:1;27;20:12;5:2;953:289:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;953:289:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;953:289:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;953:289:0;;;;;;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;953:289:0;;-1:-1:-1;953:289:0;-1:-1:-1;953:289:0;;;;;;;;;;;;;;;;;;;;;1054:667:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1054:667:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1054:667:7;;;;;738:182:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;738:182:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;738:182:0;;;;;;;;498:234;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:234:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;498:234:0;;;;;;;;2081:396:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2081:396:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2081:396:7;;;;;;;;395:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:43:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;395:43:7;;;;;;;;;;;;;;;;;;;1248:474:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1248:474:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;1248:474:0;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1248:474:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1248:474:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1248:474:0;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1248:474:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1248:474:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1248:474:0;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1248:474:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1248:474:0;;;;;;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;1248:474:0;;-1:-1:-1;1248:474:0;-1:-1:-1;1248:474:0;;351:38:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;351:38:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;351:38:7;;;;;;;;;;;;;;;;;;;;;953:289:0;1130:6;1176:7;1169:5;-1:-1:-1;;;;;1153:46:0;1158:9;-1:-1:-1;;;;;1153:46:0;;1185:6;1193:5;;1153:46;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;1153:46:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;1153:46:0;;;;-1:-1:-1;1153:46:0;;-1:-1:-1;;;;;1153:46:0;-1:-1:-1;1216:19:0;953:289;;;;;;;;:::o;1054:667:7:-;1124:6;:15;;;;;;;;;;;;;:24;1103:147;;;;;-1:-1:-1;;;;;1103:147:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1268:12;;;1260:70;;;;;-1:-1:-1;;;;;1260:70:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1369:6;;:25;;;;;;;;;;;;;;-1:-1:-1;;;;;1369:6:7;;;;:16;;:25;;;;;:6;;:25;;;;;;;;:6;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;1369:25:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1369:25:7;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1369:25:7;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;1369:25:7;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;-1:-1;;1369:37:7;;;;;;;;;;;;;;;;;;;;:35;;-1:-1:-1;1369:35:7;;-1:-1:-1;1369:25:7;;-1:-1:-1;1369:37:7;;;;;;;;;;;;;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;1369:37:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1369:37:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1369:37:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1369:37:7;1361:124;;;;;;1443:28;1361:124;;;;;;-1:-1:-1;;;;;1361:64:7;;;;;;:124;;;;;1369:37;;1361:124;;;;;;;;:64;:124;;;5:2:-1;;;;30:1;27;20:12;5:2;1361:124:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1361:124:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1361:124:7;1340:236;;;;;;;-1:-1:-1;;;;;1340:236:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1586:6;:15;;;;;;;;;;;:22;;-1:-1:-1;;1586:22:7;1604:4;1586:22;;;;;;1638:11;;;;;;1618:17;;;:31;1659:11;;;:21;;;1695:19;1586:15;;1695:19;;;1054:667;:::o;738:182:0:-;693:6:7;:15;;;;;;;;;;;816:7:0;;693:15:7;;685:69;;;;;;;-1:-1:-1;;;;;685:69:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;835:6:0;;903:9;;;;;;;;;835:6;903:9;;;835:78;;;;;859:10;835:78;;;;;;879:4;835:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;835:6:0;;;;:23;;859:10;;879:4;;886:7;;895:6;;903:9;;835:78;;;;;;;;;;;903:9;;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;835:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;835:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;835:78:0;;;;738:182;;;:::o;498:234::-;693:6:7;:15;;;;;;;;;;;578:7:0;;693:15:7;;685:69;;;;;;;-1:-1:-1;;;;;685:69:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;597:6:0;;665:9;;;;;;;;;597:6;665:9;;;597:78;;;;;629:4;597:78;;;;;;636:10;597:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;597:6:0;;;;:23;;629:4;;636:10;;648:7;;657:6;;665:9;;597:78;;;;;;;;;;;665:9;;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;597:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;597:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;690:35:0;;;;;;;;709:7;;-1:-1:-1;697:10:0;;-1:-1:-1;690:35:0;;;;;;;;;498:234;;;:::o;2081:396:7:-;2162:12;;;2154:70;;;;;-1:-1:-1;;;;;2154:70:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2242:21;;;;:8;:21;;;;;;:32;;2234:85;;;;;-1:-1:-1;;;;;2234:85:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2347:5;2329:15;;;;;;;;;;;:23;;-1:-1:-1;;2329:23:7;;;;2386:17;;;;;;;;2362:21;;;;;;:41;2413:17;;;:21;;;2449;2336:7;;2449:21;;;2081:396;;:::o;395:43::-;;;;;;;;;;;;;:::o;1248:474:0:-;1454:6;;1472:202;1492:19;;;1472:202;;;1532:14;1549:8;;1558:1;1549:11;;;;;;;;;;;;;1532:28;;1574:13;1590:7;;1598:1;1590:10;;;;;;;;;;;;;;;1574:26;;1642:6;1635:5;-1:-1:-1;;;;;1619:44:0;1624:9;-1:-1:-1;;;;;1619:44:0;;1650:5;1657;;1619:44;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;1619:44:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;1619:44:0;;;;-1:-1:-1;1619:44:0;;-1:-1:-1;;;;;1619:44:0;-1:-1:-1;;1513:3:0;;1472:202;;;-1:-1:-1;1690:25:0;;1248:474;-1:-1:-1;;;;;;;;;1248:474:0:o;351:38:7:-;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.5.0;\n\nimport \"./WhitelistAssets.sol\";\nimport \"./ICreditCustodian.sol\";\nimport \"@evrynetlabs/credit-contract/contracts/IEER2TokenReceiver.sol\";\n\n\ncontract EvrynetCreditCustodian is WhitelistAssets, IEER2TokenReceiver, ICreditCustodian {\n    // onReceive function signatures\n    bytes4 internal constant EER2_RECEIVED_VALUE = 0x09a23c29;\n    bytes4 internal constant EER2_BATCH_RECEIVED_VALUE = 0xbaf5f228;\n\n    constructor(address _credit) public WhitelistAssets(_credit) {}\n\n    function unlock(uint256 _typeID, uint256 _value) external onlyWhitelistedAssets(_typeID) {\n        credit.safeTransferFrom(address(this), msg.sender, _typeID, _value, bytes(\"\"));\n        emit Unlock(msg.sender, _typeID, _value);\n    }\n\n    function lock(uint256 _typeID, uint256 _value) external onlyWhitelistedAssets(_typeID) {\n        credit.safeTransferFrom(msg.sender, address(this), _typeID, _value, bytes(\"\"));\n    }\n\n    // EER2 implementation\n    function onEER2Received(\n        address _operator,\n        address _from,\n        uint256 _typeID,\n        uint256 _value,\n        bytes calldata _data\n    ) external returns (bytes4) {\n        emit Lock(_operator, _from, _typeID, _value, _data);\n        return EER2_RECEIVED_VALUE;\n    }\n\n    function onEER2BatchReceived(\n        address _operator,\n        address _from,\n        uint256[] calldata _typeIDs,\n        uint256[] calldata _values,\n        bytes calldata _data\n    ) external returns (bytes4) {\n        for (uint256 i = 0; i < _typeIDs.length; ++i) {\n            uint256 typeID = _typeIDs[i];\n            uint256 value = _values[i];\n            emit Lock(_operator, _from, typeID, value, _data);\n        }\n        return EER2_BATCH_RECEIVED_VALUE;\n    }\n}\n",
  "sourcePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/EvrynetCreditCustodian.sol",
  "ast": {
    "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/EvrynetCreditCustodian.sol",
    "exportedSymbols": {
      "EvrynetCreditCustodian": [
        164
      ]
    },
    "id": 165,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:0"
      },
      {
        "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/WhitelistAssets.sol",
        "file": "./WhitelistAssets.sol",
        "id": 2,
        "nodeType": "ImportDirective",
        "scope": 165,
        "sourceUnit": 809,
        "src": "25:31:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/ICreditCustodian.sol",
        "file": "./ICreditCustodian.sol",
        "id": 3,
        "nodeType": "ImportDirective",
        "scope": 165,
        "sourceUnit": 202,
        "src": "57:32:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@evrynetlabs/credit-contract/contracts/IEER2TokenReceiver.sol",
        "file": "@evrynetlabs/credit-contract/contracts/IEER2TokenReceiver.sol",
        "id": 4,
        "nodeType": "ImportDirective",
        "scope": 165,
        "sourceUnit": 2818,
        "src": "90:71:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5,
              "name": "WhitelistAssets",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 808,
              "src": "199:15:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_WhitelistAssets_$808",
                "typeString": "contract WhitelistAssets"
              }
            },
            "id": 6,
            "nodeType": "InheritanceSpecifier",
            "src": "199:15:0"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7,
              "name": "IEER2TokenReceiver",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2817,
              "src": "216:18:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IEER2TokenReceiver_$2817",
                "typeString": "contract IEER2TokenReceiver"
              }
            },
            "id": 8,
            "nodeType": "InheritanceSpecifier",
            "src": "216:18:0"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9,
              "name": "ICreditCustodian",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 201,
              "src": "236:16:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ICreditCustodian_$201",
                "typeString": "contract ICreditCustodian"
              }
            },
            "id": 10,
            "nodeType": "InheritanceSpecifier",
            "src": "236:16:0"
          }
        ],
        "contractDependencies": [
          201,
          808,
          2817
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 164,
        "linearizedBaseContracts": [
          164,
          201,
          2817,
          808
        ],
        "name": "EvrynetCreditCustodian",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 13,
            "name": "EER2_RECEIVED_VALUE",
            "nodeType": "VariableDeclaration",
            "scope": 164,
            "src": "296:57:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 11,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "296:6:0",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783039613233633239",
              "id": 12,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "343:10:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_161627177_by_1",
                "typeString": "int_const 161627177"
              },
              "value": "0x09a23c29"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 16,
            "name": "EER2_BATCH_RECEIVED_VALUE",
            "nodeType": "VariableDeclaration",
            "scope": 164,
            "src": "359:63:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 14,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "359:6:0",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786261663566323238",
              "id": 15,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "412:10:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3136680488_by_1",
                "typeString": "int_const 3136680488"
              },
              "value": "0xbaf5f228"
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24,
              "nodeType": "Block",
              "src": "490:2:0",
              "statements": []
            },
            "documentation": null,
            "id": 25,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 21,
                    "name": "_credit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18,
                    "src": "481:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 22,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 20,
                  "name": "WhitelistAssets",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 808,
                  "src": "465:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_WhitelistAssets_$808_$",
                    "typeString": "type(contract WhitelistAssets)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "465:24:0"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18,
                  "name": "_credit",
                  "nodeType": "VariableDeclaration",
                  "scope": 25,
                  "src": "441:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "441:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "440:17:0"
            },
            "returnParameters": {
              "id": 23,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "490:0:0"
            },
            "scope": 164,
            "src": "429:63:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 57,
              "nodeType": "Block",
              "src": "587:145:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 39,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3033,
                            "src": "629:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EvrynetCreditCustodian_$164",
                              "typeString": "contract EvrynetCreditCustodian"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_EvrynetCreditCustodian_$164",
                              "typeString": "contract EvrynetCreditCustodian"
                            }
                          ],
                          "id": 38,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "621:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 40,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "621:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 41,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "636:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 42,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "636:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 43,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27,
                        "src": "648:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 44,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29,
                        "src": "657:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "",
                            "id": 46,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "671:2:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            }
                          ],
                          "id": 45,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "665:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 47,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "665:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 35,
                        "name": "credit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 662,
                        "src": "597:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EER2B_$2558",
                          "typeString": "contract EER2B"
                        }
                      },
                      "id": 37,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "safeTransferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1560,
                      "src": "597:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                      }
                    },
                    "id": 48,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "597:78:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 49,
                  "nodeType": "ExpressionStatement",
                  "src": "597:78:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 51,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "697:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 52,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "697:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 53,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27,
                        "src": "709:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 54,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29,
                        "src": "718:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 50,
                      "name": "Unlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 174,
                      "src": "690:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 55,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "690:35:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 56,
                  "nodeType": "EmitStatement",
                  "src": "685:40:0"
                }
              ]
            },
            "documentation": null,
            "id": 58,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 32,
                    "name": "_typeID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27,
                    "src": "578:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 33,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 31,
                  "name": "onlyWhitelistedAssets",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 690,
                  "src": "556:21:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "556:30:0"
              }
            ],
            "name": "unlock",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 30,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 58,
                  "src": "514:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 26,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "514:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 29,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 58,
                  "src": "531:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 28,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "531:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "513:33:0"
            },
            "returnParameters": {
              "id": 34,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "587:0:0"
            },
            "scope": 164,
            "src": "498:234:0",
            "stateMutability": "nonpayable",
            "superFunction": 193,
            "visibility": "external"
          },
          {
            "body": {
              "id": 83,
              "nodeType": "Block",
              "src": "825:95:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 71,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "859:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 72,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "859:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 74,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3033,
                            "src": "879:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EvrynetCreditCustodian_$164",
                              "typeString": "contract EvrynetCreditCustodian"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_EvrynetCreditCustodian_$164",
                              "typeString": "contract EvrynetCreditCustodian"
                            }
                          ],
                          "id": 73,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "871:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 75,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "871:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 76,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 60,
                        "src": "886:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 77,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62,
                        "src": "895:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "",
                            "id": 79,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "909:2:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            }
                          ],
                          "id": 78,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "903:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 80,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "903:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 68,
                        "name": "credit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 662,
                        "src": "835:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EER2B_$2558",
                          "typeString": "contract EER2B"
                        }
                      },
                      "id": 70,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "safeTransferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1560,
                      "src": "835:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                      }
                    },
                    "id": 81,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "835:78:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 82,
                  "nodeType": "ExpressionStatement",
                  "src": "835:78:0"
                }
              ]
            },
            "documentation": null,
            "id": 84,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 65,
                    "name": "_typeID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 60,
                    "src": "816:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 66,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 64,
                  "name": "onlyWhitelistedAssets",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 690,
                  "src": "794:21:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "794:30:0"
              }
            ],
            "name": "lock",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 63,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 60,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 84,
                  "src": "752:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 59,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "752:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 62,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 84,
                  "src": "769:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 61,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "769:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "751:33:0"
            },
            "returnParameters": {
              "id": 67,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "825:0:0"
            },
            "scope": 164,
            "src": "738:182:0",
            "stateMutability": "nonpayable",
            "superFunction": 200,
            "visibility": "external"
          },
          {
            "body": {
              "id": 109,
              "nodeType": "Block",
              "src": "1138:104:0",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 100,
                        "name": "_operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 86,
                        "src": "1158:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 101,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 88,
                        "src": "1169:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 102,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 90,
                        "src": "1176:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 103,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 92,
                        "src": "1185:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 104,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 94,
                        "src": "1193:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 99,
                      "name": "Lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 186,
                      "src": "1153:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,bytes memory)"
                      }
                    },
                    "id": 105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1153:46:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 106,
                  "nodeType": "EmitStatement",
                  "src": "1148:51:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 107,
                    "name": "EER2_RECEIVED_VALUE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13,
                    "src": "1216:19:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 98,
                  "id": 108,
                  "nodeType": "Return",
                  "src": "1209:26:0"
                }
              ]
            },
            "documentation": null,
            "id": 110,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "onEER2Received",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 95,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 86,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 110,
                  "src": "986:17:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 85,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "986:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 88,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 110,
                  "src": "1013:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 87,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1013:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 90,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 110,
                  "src": "1036:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 89,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1036:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 92,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 110,
                  "src": "1061:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 91,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1061:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 94,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 110,
                  "src": "1085:20:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 93,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1085:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "976:135:0"
            },
            "returnParameters": {
              "id": 98,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 97,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 110,
                  "src": "1130:6:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 96,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1130:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1129:8:0"
            },
            "scope": 164,
            "src": "953:289:0",
            "stateMutability": "nonpayable",
            "superFunction": 2799,
            "visibility": "external"
          },
          {
            "body": {
              "id": 162,
              "nodeType": "Block",
              "src": "1462:260:0",
              "statements": [
                {
                  "body": {
                    "id": 158,
                    "nodeType": "Block",
                    "src": "1518:156:0",
                    "statements": [
                      {
                        "assignments": [
                          139
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 139,
                            "name": "typeID",
                            "nodeType": "VariableDeclaration",
                            "scope": 158,
                            "src": "1532:14:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 138,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1532:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 143,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 140,
                            "name": "_typeIDs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 117,
                            "src": "1549:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 142,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 141,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 128,
                            "src": "1558:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1549:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1532:28:0"
                      },
                      {
                        "assignments": [
                          145
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 145,
                            "name": "value",
                            "nodeType": "VariableDeclaration",
                            "scope": 158,
                            "src": "1574:13:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 144,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1574:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 149,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 146,
                            "name": "_values",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 120,
                            "src": "1590:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 148,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 147,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 128,
                            "src": "1598:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1590:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1574:26:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 151,
                              "name": "_operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 112,
                              "src": "1624:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 152,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 114,
                              "src": "1635:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 153,
                              "name": "typeID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 139,
                              "src": "1642:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 154,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 145,
                              "src": "1650:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 155,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 122,
                              "src": "1657:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 150,
                            "name": "Lock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 186,
                            "src": "1619:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1619:44:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 157,
                        "nodeType": "EmitStatement",
                        "src": "1614:49:0"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 134,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 131,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 128,
                      "src": "1492:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 132,
                        "name": "_typeIDs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 117,
                        "src": "1496:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 133,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1496:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1492:19:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 159,
                  "initializationExpression": {
                    "assignments": [
                      128
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 128,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 159,
                        "src": "1477:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 127,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1477:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 130,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 129,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1489:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1477:13:0"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 136,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "1513:3:0",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 135,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 128,
                        "src": "1515:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 137,
                    "nodeType": "ExpressionStatement",
                    "src": "1513:3:0"
                  },
                  "nodeType": "ForStatement",
                  "src": "1472:202:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 160,
                    "name": "EER2_BATCH_RECEIVED_VALUE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16,
                    "src": "1690:25:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 126,
                  "id": 161,
                  "nodeType": "Return",
                  "src": "1683:32:0"
                }
              ]
            },
            "documentation": null,
            "id": 163,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "onEER2BatchReceived",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 123,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 112,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 163,
                  "src": "1286:17:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 111,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1286:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 114,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 163,
                  "src": "1313:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 113,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1313:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 117,
                  "name": "_typeIDs",
                  "nodeType": "VariableDeclaration",
                  "scope": 163,
                  "src": "1336:27:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 115,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1336:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 116,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1336:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 120,
                  "name": "_values",
                  "nodeType": "VariableDeclaration",
                  "scope": 163,
                  "src": "1373:26:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 118,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1373:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 119,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1373:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 122,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 163,
                  "src": "1409:20:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 121,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1409:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1276:159:0"
            },
            "returnParameters": {
              "id": 126,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 125,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 163,
                  "src": "1454:6:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 124,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1454:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1453:8:0"
            },
            "scope": 164,
            "src": "1248:474:0",
            "stateMutability": "nonpayable",
            "superFunction": 2816,
            "visibility": "external"
          }
        ],
        "scope": 165,
        "src": "164:1560:0"
      }
    ],
    "src": "0:1725:0"
  },
  "legacyAST": {
    "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/EvrynetCreditCustodian.sol",
    "exportedSymbols": {
      "EvrynetCreditCustodian": [
        164
      ]
    },
    "id": 165,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:0"
      },
      {
        "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/WhitelistAssets.sol",
        "file": "./WhitelistAssets.sol",
        "id": 2,
        "nodeType": "ImportDirective",
        "scope": 165,
        "sourceUnit": 809,
        "src": "25:31:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/100x/Evrynetlabs/warp-contract/contracts/ICreditCustodian.sol",
        "file": "./ICreditCustodian.sol",
        "id": 3,
        "nodeType": "ImportDirective",
        "scope": 165,
        "sourceUnit": 202,
        "src": "57:32:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@evrynetlabs/credit-contract/contracts/IEER2TokenReceiver.sol",
        "file": "@evrynetlabs/credit-contract/contracts/IEER2TokenReceiver.sol",
        "id": 4,
        "nodeType": "ImportDirective",
        "scope": 165,
        "sourceUnit": 2818,
        "src": "90:71:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 5,
              "name": "WhitelistAssets",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 808,
              "src": "199:15:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_WhitelistAssets_$808",
                "typeString": "contract WhitelistAssets"
              }
            },
            "id": 6,
            "nodeType": "InheritanceSpecifier",
            "src": "199:15:0"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7,
              "name": "IEER2TokenReceiver",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2817,
              "src": "216:18:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IEER2TokenReceiver_$2817",
                "typeString": "contract IEER2TokenReceiver"
              }
            },
            "id": 8,
            "nodeType": "InheritanceSpecifier",
            "src": "216:18:0"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9,
              "name": "ICreditCustodian",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 201,
              "src": "236:16:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ICreditCustodian_$201",
                "typeString": "contract ICreditCustodian"
              }
            },
            "id": 10,
            "nodeType": "InheritanceSpecifier",
            "src": "236:16:0"
          }
        ],
        "contractDependencies": [
          201,
          808,
          2817
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 164,
        "linearizedBaseContracts": [
          164,
          201,
          2817,
          808
        ],
        "name": "EvrynetCreditCustodian",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 13,
            "name": "EER2_RECEIVED_VALUE",
            "nodeType": "VariableDeclaration",
            "scope": 164,
            "src": "296:57:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 11,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "296:6:0",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783039613233633239",
              "id": 12,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "343:10:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_161627177_by_1",
                "typeString": "int_const 161627177"
              },
              "value": "0x09a23c29"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 16,
            "name": "EER2_BATCH_RECEIVED_VALUE",
            "nodeType": "VariableDeclaration",
            "scope": 164,
            "src": "359:63:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 14,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "359:6:0",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786261663566323238",
              "id": 15,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "412:10:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3136680488_by_1",
                "typeString": "int_const 3136680488"
              },
              "value": "0xbaf5f228"
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24,
              "nodeType": "Block",
              "src": "490:2:0",
              "statements": []
            },
            "documentation": null,
            "id": 25,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 21,
                    "name": "_credit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18,
                    "src": "481:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 22,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 20,
                  "name": "WhitelistAssets",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 808,
                  "src": "465:15:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_WhitelistAssets_$808_$",
                    "typeString": "type(contract WhitelistAssets)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "465:24:0"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18,
                  "name": "_credit",
                  "nodeType": "VariableDeclaration",
                  "scope": 25,
                  "src": "441:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "441:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "440:17:0"
            },
            "returnParameters": {
              "id": 23,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "490:0:0"
            },
            "scope": 164,
            "src": "429:63:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 57,
              "nodeType": "Block",
              "src": "587:145:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 39,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3033,
                            "src": "629:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EvrynetCreditCustodian_$164",
                              "typeString": "contract EvrynetCreditCustodian"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_EvrynetCreditCustodian_$164",
                              "typeString": "contract EvrynetCreditCustodian"
                            }
                          ],
                          "id": 38,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "621:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 40,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "621:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 41,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "636:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 42,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "636:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 43,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27,
                        "src": "648:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 44,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29,
                        "src": "657:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "",
                            "id": 46,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "671:2:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            }
                          ],
                          "id": 45,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "665:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 47,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "665:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 35,
                        "name": "credit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 662,
                        "src": "597:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EER2B_$2558",
                          "typeString": "contract EER2B"
                        }
                      },
                      "id": 37,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "safeTransferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1560,
                      "src": "597:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                      }
                    },
                    "id": 48,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "597:78:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 49,
                  "nodeType": "ExpressionStatement",
                  "src": "597:78:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 51,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "697:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 52,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "697:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 53,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27,
                        "src": "709:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 54,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 29,
                        "src": "718:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 50,
                      "name": "Unlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 174,
                      "src": "690:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 55,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "690:35:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 56,
                  "nodeType": "EmitStatement",
                  "src": "685:40:0"
                }
              ]
            },
            "documentation": null,
            "id": 58,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 32,
                    "name": "_typeID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27,
                    "src": "578:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 33,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 31,
                  "name": "onlyWhitelistedAssets",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 690,
                  "src": "556:21:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "556:30:0"
              }
            ],
            "name": "unlock",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 30,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 58,
                  "src": "514:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 26,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "514:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 29,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 58,
                  "src": "531:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 28,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "531:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "513:33:0"
            },
            "returnParameters": {
              "id": 34,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "587:0:0"
            },
            "scope": 164,
            "src": "498:234:0",
            "stateMutability": "nonpayable",
            "superFunction": 193,
            "visibility": "external"
          },
          {
            "body": {
              "id": 83,
              "nodeType": "Block",
              "src": "825:95:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 71,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2994,
                          "src": "859:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 72,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "859:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 74,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3033,
                            "src": "879:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_EvrynetCreditCustodian_$164",
                              "typeString": "contract EvrynetCreditCustodian"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_EvrynetCreditCustodian_$164",
                              "typeString": "contract EvrynetCreditCustodian"
                            }
                          ],
                          "id": 73,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "871:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 75,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "871:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 76,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 60,
                        "src": "886:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 77,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62,
                        "src": "895:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "",
                            "id": 79,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "909:2:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            }
                          ],
                          "id": 78,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "903:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": "bytes"
                        },
                        "id": 80,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "903:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 68,
                        "name": "credit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 662,
                        "src": "835:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_EER2B_$2558",
                          "typeString": "contract EER2B"
                        }
                      },
                      "id": 70,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "safeTransferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1560,
                      "src": "835:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                      }
                    },
                    "id": 81,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "835:78:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 82,
                  "nodeType": "ExpressionStatement",
                  "src": "835:78:0"
                }
              ]
            },
            "documentation": null,
            "id": 84,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 65,
                    "name": "_typeID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 60,
                    "src": "816:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 66,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 64,
                  "name": "onlyWhitelistedAssets",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 690,
                  "src": "794:21:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "794:30:0"
              }
            ],
            "name": "lock",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 63,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 60,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 84,
                  "src": "752:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 59,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "752:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 62,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 84,
                  "src": "769:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 61,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "769:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "751:33:0"
            },
            "returnParameters": {
              "id": 67,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "825:0:0"
            },
            "scope": 164,
            "src": "738:182:0",
            "stateMutability": "nonpayable",
            "superFunction": 200,
            "visibility": "external"
          },
          {
            "body": {
              "id": 109,
              "nodeType": "Block",
              "src": "1138:104:0",
              "statements": [
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 100,
                        "name": "_operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 86,
                        "src": "1158:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 101,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 88,
                        "src": "1169:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 102,
                        "name": "_typeID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 90,
                        "src": "1176:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 103,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 92,
                        "src": "1185:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 104,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 94,
                        "src": "1193:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 99,
                      "name": "Lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 186,
                      "src": "1153:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,bytes memory)"
                      }
                    },
                    "id": 105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1153:46:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 106,
                  "nodeType": "EmitStatement",
                  "src": "1148:51:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 107,
                    "name": "EER2_RECEIVED_VALUE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13,
                    "src": "1216:19:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 98,
                  "id": 108,
                  "nodeType": "Return",
                  "src": "1209:26:0"
                }
              ]
            },
            "documentation": null,
            "id": 110,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "onEER2Received",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 95,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 86,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 110,
                  "src": "986:17:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 85,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "986:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 88,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 110,
                  "src": "1013:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 87,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1013:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 90,
                  "name": "_typeID",
                  "nodeType": "VariableDeclaration",
                  "scope": 110,
                  "src": "1036:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 89,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1036:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 92,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 110,
                  "src": "1061:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 91,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1061:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 94,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 110,
                  "src": "1085:20:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 93,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1085:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "976:135:0"
            },
            "returnParameters": {
              "id": 98,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 97,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 110,
                  "src": "1130:6:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 96,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1130:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1129:8:0"
            },
            "scope": 164,
            "src": "953:289:0",
            "stateMutability": "nonpayable",
            "superFunction": 2799,
            "visibility": "external"
          },
          {
            "body": {
              "id": 162,
              "nodeType": "Block",
              "src": "1462:260:0",
              "statements": [
                {
                  "body": {
                    "id": 158,
                    "nodeType": "Block",
                    "src": "1518:156:0",
                    "statements": [
                      {
                        "assignments": [
                          139
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 139,
                            "name": "typeID",
                            "nodeType": "VariableDeclaration",
                            "scope": 158,
                            "src": "1532:14:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 138,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1532:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 143,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 140,
                            "name": "_typeIDs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 117,
                            "src": "1549:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 142,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 141,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 128,
                            "src": "1558:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1549:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1532:28:0"
                      },
                      {
                        "assignments": [
                          145
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 145,
                            "name": "value",
                            "nodeType": "VariableDeclaration",
                            "scope": 158,
                            "src": "1574:13:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 144,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1574:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 149,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 146,
                            "name": "_values",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 120,
                            "src": "1590:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 148,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 147,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 128,
                            "src": "1598:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1590:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1574:26:0"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 151,
                              "name": "_operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 112,
                              "src": "1624:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 152,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 114,
                              "src": "1635:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 153,
                              "name": "typeID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 139,
                              "src": "1642:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 154,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 145,
                              "src": "1650:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 155,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 122,
                              "src": "1657:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 150,
                            "name": "Lock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 186,
                            "src": "1619:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1619:44:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 157,
                        "nodeType": "EmitStatement",
                        "src": "1614:49:0"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 134,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 131,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 128,
                      "src": "1492:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 132,
                        "name": "_typeIDs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 117,
                        "src": "1496:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 133,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1496:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1492:19:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 159,
                  "initializationExpression": {
                    "assignments": [
                      128
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 128,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 159,
                        "src": "1477:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 127,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1477:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 130,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 129,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1489:1:0",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1477:13:0"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 136,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "1513:3:0",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 135,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 128,
                        "src": "1515:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 137,
                    "nodeType": "ExpressionStatement",
                    "src": "1513:3:0"
                  },
                  "nodeType": "ForStatement",
                  "src": "1472:202:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 160,
                    "name": "EER2_BATCH_RECEIVED_VALUE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 16,
                    "src": "1690:25:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 126,
                  "id": 161,
                  "nodeType": "Return",
                  "src": "1683:32:0"
                }
              ]
            },
            "documentation": null,
            "id": 163,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "onEER2BatchReceived",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 123,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 112,
                  "name": "_operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 163,
                  "src": "1286:17:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 111,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1286:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 114,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 163,
                  "src": "1313:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 113,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1313:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 117,
                  "name": "_typeIDs",
                  "nodeType": "VariableDeclaration",
                  "scope": 163,
                  "src": "1336:27:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 115,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1336:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 116,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1336:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 120,
                  "name": "_values",
                  "nodeType": "VariableDeclaration",
                  "scope": 163,
                  "src": "1373:26:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 118,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1373:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 119,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1373:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 122,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 163,
                  "src": "1409:20:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 121,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1409:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1276:159:0"
            },
            "returnParameters": {
              "id": 126,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 125,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 163,
                  "src": "1454:6:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 124,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1454:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1453:8:0"
            },
            "scope": 164,
            "src": "1248:474:0",
            "stateMutability": "nonpayable",
            "superFunction": 2816,
            "visibility": "external"
          }
        ],
        "scope": 165,
        "src": "164:1560:0"
      }
    ],
    "src": "0:1725:0"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.19",
  "updatedAt": "2020-04-10T07:42:01.198Z",
  "devdoc": {
    "methods": {
      "add(uint256)": {
        "params": {
          "_typeID": "the ID of credit being added"
        }
      },
      "remove(uint256,uint256)": {
        "params": {
          "_prevTypeID": "the prior credit ID in the linklist",
          "_typeID": "the ID of credit being removed"
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "add(uint256)": {
        "notice": "Add a new asset the whitelist asset database"
      },
      "remove(uint256,uint256)": {
        "notice": "remove an asset from the whitelist asset database"
      }
    }
  }
}