{
  "contractName": "ERC20Mock",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "_decimals",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract ApproveAndCallFallBack",
          "name": "_spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "approveAndCall",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "generateTokens",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bool",
          "name": "_allowTransfer",
          "type": "bool"
        }
      ],
      "name": "setAllowTransfer",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162000fe438038062000fe4833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b506040526020908101518551909350620001b99250600091860190620001f7565b508151620001cf906001906020850190620001f7565b506002805460ff90921660ff19928316179055600480549091166001179055506200029c9050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200023a57805160ff19168380011785556200026a565b828001600101855582156200026a579182015b828111156200026a5782518255916020019190600101906200024d565b50620002789291506200027c565b5090565b6200029991905b8082111562000278576000815560010162000283565b90565b610d3880620002ac6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a0823114610205578063827f32c01461022b57806395d89b4114610257578063a9059cbb1461025f578063cae9ca511461028b578063dd62ed3e14610346576100b4565b806306fdde03146100b9578063095ea7b3146101365780630b81e2161461017657806318160ddd1461019757806323b872dd146101b1578063313ce567146101e7575b600080fd5b6100c1610374565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610402565b604080519115158252519081900360200190f35b6101956004803603602081101561018c57600080fd5b503515156104ea565b005b61019f6104fd565b60408051918252519081900360200190f35b610162600480360360608110156101c757600080fd5b506001600160a01b03813581169160208101359091169060400135610503565b6101ef610788565b6040805160ff9092168252519081900360200190f35b61019f6004803603602081101561021b57600080fd5b50356001600160a01b0316610791565b6101956004803603604081101561024157600080fd5b506001600160a01b0381351690602001356107ac565b6100c1610831565b6101626004803603604081101561027557600080fd5b506001600160a01b03813516906020013561088b565b610162600480360360608110156102a157600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156102d157600080fd5b8201836020820111156102e357600080fd5b8035906020019184600183028401116401000000008311171561030557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a32945050505050565b61019f6004803603604081101561035c57600080fd5b506001600160a01b0381358116916020013516610b71565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103fa5780601f106103cf576101008083540402835291602001916103fa565b820191906000526020600020905b8154815290600101906020018083116103dd57829003601f168201915b505050505081565b600081158061043257503360009081526006602090815260408083206001600160a01b0387168452909152902054155b610483576040805162461bcd60e51b815260206004820152601c60248201527f4552524f525f414c4c4f57414e43455f4d5553545f42455f5a45524f00000000604482015290519081900360640190fd5b3360008181526006602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b6004805460ff1916911515919091179055565b60035481565b60045460009060ff1661055b576040805162461bcd60e51b815260206004820152601b60248201527a11549493d497d514905394d1915494d7d393d517d0531313d5d151602a1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600560205260409020548211156105c3576040805162461bcd60e51b81526020600482015260186024820152774552524f525f4e4f545f454e4f5547485f42414c414e434560401b604482015290519081900360640190fd5b6001600160a01b038416600090815260066020908152604080832033845290915290205482111561063b576040805162461bcd60e51b815260206004820181905260248201527f4552524f525f4e4f545f454e4f5547485f414c4c4f5745445f42414c414e4345604482015290519081900360640190fd5b6001600160a01b03831661068d576040805162461bcd60e51b81526020600482015260146024820152734552524f525f524543495049454e545f5a45524f60601b604482015290519081900360640190fd5b6001600160a01b0384166000908152600560205260409020546106b6908363ffffffff610b9c16565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546106eb908363ffffffff610c5d16565b6001600160a01b03808516600090815260056020908152604080832094909455918716815260068252828120338252909152205461072f908363ffffffff610b9c16565b6001600160a01b0380861660008181526006602090815260408083203384528252918290209490945580518681529051928716939192600080516020610ce4833981519152929181900390910190a35060019392505050565b60025460ff1681565b6001600160a01b031660009081526005602052604090205490565b6003546107bf908263ffffffff610c5d16565b6003556001600160a01b0382166000908152600560205260409020546107eb908263ffffffff610c5d16565b6001600160a01b0383166000818152600560209081526040808320949094558351858152935192939192600080516020610ce48339815191529281900390910190a35050565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103fa5780601f106103cf576101008083540402835291602001916103fa565b60045460009060ff166108e3576040805162461bcd60e51b815260206004820152601b60248201527a11549493d497d514905394d1915494d7d393d517d0531313d5d151602a1b604482015290519081900360640190fd5b33600090815260056020526040902054821115610942576040805162461bcd60e51b81526020600482015260186024820152774552524f525f4e4f545f454e4f5547485f42414c414e434560401b604482015290519081900360640190fd5b6001600160a01b038316610994576040805162461bcd60e51b81526020600482015260146024820152734552524f525f524543495049454e545f5a45524f60601b604482015290519081900360640190fd5b336000908152600560205260409020546109b4908363ffffffff610b9c16565b33600090815260056020526040808220929092556001600160a01b038516815220546109e6908363ffffffff610c5d16565b6001600160a01b038416600081815260056020908152604091829020939093558051858152905191923392600080516020610ce48339815191529281900390910190a350600192915050565b6000610a3e8484610402565b610a86576040805162461bcd60e51b815260206004820152601460248201527311549493d497d054141493d59157d1905253115160621b604482015290519081900360640190fd5b604051638f4ffcb160e01b815233600482018181526024830186905230604484018190526080606485019081528651608486015286516001600160a01b038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b83811015610b00578181015183820152602001610ae8565b50505050905090810190601f168015610b2d5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610b4f57600080fd5b505af1158015610b63573d6000803e3d6000fd5b506001979650505050505050565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b600082821115604051806040016040528060128152602001714d4154485f5355425f554e444552464c4f5760701b81525090610c565760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c1b578181015183820152602001610c03565b50505050905090810190601f168015610c485780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050900390565b6040805180820190915260118152704d4154485f4144445f4f564552464c4f5760781b60208201526000908383019084821015610cdb5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610c1b578181015183820152602001610c03565b50939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a72315820e7805a09be90ac6b03d638e762d9560aa7686f70aa5130fb915e346d3be67b6b64736f6c63430005110032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a0823114610205578063827f32c01461022b57806395d89b4114610257578063a9059cbb1461025f578063cae9ca511461028b578063dd62ed3e14610346576100b4565b806306fdde03146100b9578063095ea7b3146101365780630b81e2161461017657806318160ddd1461019757806323b872dd146101b1578063313ce567146101e7575b600080fd5b6100c1610374565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610402565b604080519115158252519081900360200190f35b6101956004803603602081101561018c57600080fd5b503515156104ea565b005b61019f6104fd565b60408051918252519081900360200190f35b610162600480360360608110156101c757600080fd5b506001600160a01b03813581169160208101359091169060400135610503565b6101ef610788565b6040805160ff9092168252519081900360200190f35b61019f6004803603602081101561021b57600080fd5b50356001600160a01b0316610791565b6101956004803603604081101561024157600080fd5b506001600160a01b0381351690602001356107ac565b6100c1610831565b6101626004803603604081101561027557600080fd5b506001600160a01b03813516906020013561088b565b610162600480360360608110156102a157600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156102d157600080fd5b8201836020820111156102e357600080fd5b8035906020019184600183028401116401000000008311171561030557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a32945050505050565b61019f6004803603604081101561035c57600080fd5b506001600160a01b0381358116916020013516610b71565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103fa5780601f106103cf576101008083540402835291602001916103fa565b820191906000526020600020905b8154815290600101906020018083116103dd57829003601f168201915b505050505081565b600081158061043257503360009081526006602090815260408083206001600160a01b0387168452909152902054155b610483576040805162461bcd60e51b815260206004820152601c60248201527f4552524f525f414c4c4f57414e43455f4d5553545f42455f5a45524f00000000604482015290519081900360640190fd5b3360008181526006602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b6004805460ff1916911515919091179055565b60035481565b60045460009060ff1661055b576040805162461bcd60e51b815260206004820152601b60248201527a11549493d497d514905394d1915494d7d393d517d0531313d5d151602a1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600560205260409020548211156105c3576040805162461bcd60e51b81526020600482015260186024820152774552524f525f4e4f545f454e4f5547485f42414c414e434560401b604482015290519081900360640190fd5b6001600160a01b038416600090815260066020908152604080832033845290915290205482111561063b576040805162461bcd60e51b815260206004820181905260248201527f4552524f525f4e4f545f454e4f5547485f414c4c4f5745445f42414c414e4345604482015290519081900360640190fd5b6001600160a01b03831661068d576040805162461bcd60e51b81526020600482015260146024820152734552524f525f524543495049454e545f5a45524f60601b604482015290519081900360640190fd5b6001600160a01b0384166000908152600560205260409020546106b6908363ffffffff610b9c16565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546106eb908363ffffffff610c5d16565b6001600160a01b03808516600090815260056020908152604080832094909455918716815260068252828120338252909152205461072f908363ffffffff610b9c16565b6001600160a01b0380861660008181526006602090815260408083203384528252918290209490945580518681529051928716939192600080516020610ce4833981519152929181900390910190a35060019392505050565b60025460ff1681565b6001600160a01b031660009081526005602052604090205490565b6003546107bf908263ffffffff610c5d16565b6003556001600160a01b0382166000908152600560205260409020546107eb908263ffffffff610c5d16565b6001600160a01b0383166000818152600560209081526040808320949094558351858152935192939192600080516020610ce48339815191529281900390910190a35050565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103fa5780601f106103cf576101008083540402835291602001916103fa565b60045460009060ff166108e3576040805162461bcd60e51b815260206004820152601b60248201527a11549493d497d514905394d1915494d7d393d517d0531313d5d151602a1b604482015290519081900360640190fd5b33600090815260056020526040902054821115610942576040805162461bcd60e51b81526020600482015260186024820152774552524f525f4e4f545f454e4f5547485f42414c414e434560401b604482015290519081900360640190fd5b6001600160a01b038316610994576040805162461bcd60e51b81526020600482015260146024820152734552524f525f524543495049454e545f5a45524f60601b604482015290519081900360640190fd5b336000908152600560205260409020546109b4908363ffffffff610b9c16565b33600090815260056020526040808220929092556001600160a01b038516815220546109e6908363ffffffff610c5d16565b6001600160a01b038416600081815260056020908152604091829020939093558051858152905191923392600080516020610ce48339815191529281900390910190a350600192915050565b6000610a3e8484610402565b610a86576040805162461bcd60e51b815260206004820152601460248201527311549493d497d054141493d59157d1905253115160621b604482015290519081900360640190fd5b604051638f4ffcb160e01b815233600482018181526024830186905230604484018190526080606485019081528651608486015286516001600160a01b038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b83811015610b00578181015183820152602001610ae8565b50505050905090810190601f168015610b2d5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610b4f57600080fd5b505af1158015610b63573d6000803e3d6000fd5b506001979650505050505050565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b600082821115604051806040016040528060128152602001714d4154485f5355425f554e444552464c4f5760701b81525090610c565760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c1b578181015183820152602001610c03565b50505050905090810190601f168015610c485780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050900390565b6040805180820190915260118152704d4154485f4144445f4f564552464c4f5760781b60208201526000908383019084821015610cdb5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610c1b578181015183820152602001610c03565b50939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a72315820e7805a09be90ac6b03d638e762d9560aa7686f70aa5130fb915e346d3be67b6b64736f6c63430005110032",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
