oyster/packages/bridge-sdk/contracts/WrappedAsset.json

19869 lines
887 KiB
JSON

{
"contractName": "WrappedAsset",
"abi": [
{
"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"
},
{
"inputs": [],
"name": "assetAddress",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "assetChain",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "bridge",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "initialized",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "_assetChain",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "_assetAddress",
"type": "bytes32"
},
{
"internalType": "uint8",
"name": "decimals",
"type": "uint8"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assetAddress\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assetChain\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_assetChain\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_assetAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/WrappedAsset.sol\":\"WrappedAsset\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/WrappedAsset.sol\":{\"keccak256\":\"0x1aca747b823c4d8492ae379cfd9495e8ff19726302d943da56b2bb71aebecc73\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://716c755b41c76deb60297664878f07e0972867918fde13c20c196263d3daa554\",\"dweb:/ipfs/QmbrxvDYfcgSjBBnDdXyZJcwd8pYyyrQhYqY5h6DaxWKcy\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x9486045e189facd2e868ece35249872598ef03f1087fb6fa4d1161842daa2287\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77c3a04ef8453788b14b1ebbc24dd3f0a18ceb2615cd156aac949a611e552af8\",\"dweb:/ipfs/QmcmqWGguRM3iLuF57tcyrN3F6EA63kzeNkDfQuteBnurr\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}",
"bytecode": "0x60806040526012600760006101000a81548160ff021916908360ff16021790555034801561002c57600080fd5b50611e998061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806340c10f19116100a2578063a457c2d711610071578063a457c2d7146104ff578063a7a2d3fb14610563578063a9059cbb146105ab578063dd62ed3e1461060f578063e78cea921461068757610116565b806340c10f191461038857806370a08231146103d657806395d89b411461042e5780639dc29fac146104b157610116565b806318160ddd116100e957806318160ddd146102435780631ba46cfd1461026157806323b872dd1461027f578063313ce56714610303578063395093511461032457610116565b8063026b05391461011b57806306fdde031461013c578063095ea7b3146101bf578063158ef93e14610223575b600080fd5b6101236106bb565b604051808260ff16815260200191505060405180910390f35b6101446106cc565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610184578082015181840152602081019050610169565b50505050905090810190601f1680156101b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020b600480360360408110156101d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610800565b60405180821515815260200191505060405180910390f35b61022b61081e565b60405180821515815260200191505060405180910390f35b61024b610831565b6040518082815260200191505060405180910390f35b61026961083b565b6040518082815260200191505060405180910390f35b6102eb6004803603606081101561029557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610841565b60405180821515815260200191505060405180910390f35b61030b61091a565b604051808260ff16815260200191505060405180910390f35b6103706004803603604081101561033a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610931565b60405180821515815260200191505060405180910390f35b6103d46004803603604081101561039e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109e4565b005b610418600480360360208110156103ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a98565b6040518082815260200191505060405180910390f35b610436610ae1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561047657808201518184015260208101905061045b565b50505050905090810190601f1680156104a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104fd600480360360408110156104c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b83565b005b61054b6004803603604081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c37565b60405180821515815260200191505060405180910390f35b6105a96004803603606081101561057957600080fd5b81019080803560ff16906020019092919080359060200190929190803560ff169060200190929190505050610d04565b005b6105f7600480360360408110156105c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e70565b60405180821515815260200191505060405180910390f35b6106716004803603604081101561062557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e8e565b6040518082815260200191505060405180910390f35b61068f610f15565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054906101000a900460ff1681565b60606106e760008054906101000a900460ff1660ff16610f3b565b6106ef61107f565b60405160200180807f576f726d686f6c652057726170706564202d200000000000000000000000000081525060130183805190602001908083835b6020831061074d578051825260208201915060208101905060208303925061072a565b6001836020036101000a038019825116818451168082178552505050505050905001807f2d0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b602083106107c657805182526020820191506020810190506020830392506107a3565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905090565b600061081461080d611243565b848461124b565b6001905092915050565b600260009054906101000a900460ff1681565b6000600554905090565b60015481565b600061084e848484611442565b61090f8461085a611243565b61090a85604051806060016040528060288152602001611d6360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108c0611243565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc9092919063ffffffff16565b61124b565b600190509392505050565b6000600760009054906101000a900460ff16905090565b60006109da61093e611243565b846109d5856004600061094f611243565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117b690919063ffffffff16565b61124b565b6001905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611e1a6025913960400191505060405180910390fd5b610a94828261183e565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b795780601f10610b4e57610100808354040283529160200191610b79565b820191906000526020600020905b815481529060010190602001808311610b5c57829003601f168201915b5050505050905090565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611dd16025913960400191505060405180910390fd5b610c3382826119fb565b5050565b6000610cfa610c44611243565b84610cf585604051806060016040528060258152602001611e3f6025913960046000610c6e611243565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc9092919063ffffffff16565b61124b565b6001905092915050565b600260009054906101000a900460ff1615610d87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616c726561647920696e697469616c697a65640000000000000000000000000081525060200191505060405180910390fd5b826000806101000a81548160ff021916908360ff1602179055508160018190555033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260006101000a81548160ff0219169083151502179055506040518060400160405280600381526020017f575754000000000000000000000000000000000000000000000000000000000081525060069080519060200190610e4f929190611c38565b5080600760006101000a81548160ff021916908360ff160217905550505050565b6000610e84610e7d611243565b8484611442565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606000821415610f83576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061107a565b600082905060005b60008214610fad578080600101915050600a8281610fa557fe5b049150610f8b565b60608167ffffffffffffffff81118015610fc657600080fd5b506040519080825280601f01601f191660200182016040528015610ff95781602001600182028036833780820191505090505b50905060006001830390505b6000861461107257600a868161101757fe5b0660300160f81b8282806001900393508151811061103157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a868161106a57fe5b049550611005565b819450505050505b919050565b6060806040518060400160405280601081526020017f30313233343536373839616263646566000000000000000000000000000000008152509050600060015490506060600260200260020160ff1667ffffffffffffffff811180156110e457600080fd5b506040519080825280601f01601f1916602001820160405280156111175781602001600182028036833780820191505090505b50905060005b602060ff168110156112395783600484836020811061113857fe5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c60f81c60ff168151811061117057fe5b602001015160f81c60f81b82600283028151811061118a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535083600f60f81b8483602081106111cb57fe5b1a60f81b1660f81c60ff16815181106111e057fe5b602001015160f81c60f81b8260028302600101815181106111fd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061111d565b5080935050505090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611df66024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611357576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611d1b6022913960400191505060405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611dac6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561154e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611cd66023913960400191505060405180910390fd5b6115ba81604051806060016040528060268152602001611d3d60269139600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc9092919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061164f81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117b690919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561176e578082015181840152602081019050611753565b50505050905090810190601f16801561179b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b600080828401905083811015611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6118f6816005546117b690919063ffffffff16565b60058190555061194e81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117b690919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611d8b6021913960400191505060405180910390fd5b611aed81604051806060016040528060228152602001611cf960229139600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc9092919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b4581600554611bb590919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600082821115611c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c7957805160ff1916838001178555611ca7565b82800160010185558215611ca7579182015b82811115611ca6578251825591602001919060010190611c8b565b5b509050611cb49190611cb8565b5090565b5b80821115611cd1576000816000905550600101611cb9565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573736275726e2063616e206f6e6c792062652063616c6c6564206279207468652062726964676545524332303a20617070726f76652066726f6d20746865207a65726f20616464726573736d696e742063616e206f6e6c792062652063616c6c6564206279207468652062726964676545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b3a2ff5f0503f2258e143f986f075a1cf9f8ce968a2954f3953e79c45d383ede64736f6c634300060c0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c806340c10f19116100a2578063a457c2d711610071578063a457c2d7146104ff578063a7a2d3fb14610563578063a9059cbb146105ab578063dd62ed3e1461060f578063e78cea921461068757610116565b806340c10f191461038857806370a08231146103d657806395d89b411461042e5780639dc29fac146104b157610116565b806318160ddd116100e957806318160ddd146102435780631ba46cfd1461026157806323b872dd1461027f578063313ce56714610303578063395093511461032457610116565b8063026b05391461011b57806306fdde031461013c578063095ea7b3146101bf578063158ef93e14610223575b600080fd5b6101236106bb565b604051808260ff16815260200191505060405180910390f35b6101446106cc565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610184578082015181840152602081019050610169565b50505050905090810190601f1680156101b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020b600480360360408110156101d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610800565b60405180821515815260200191505060405180910390f35b61022b61081e565b60405180821515815260200191505060405180910390f35b61024b610831565b6040518082815260200191505060405180910390f35b61026961083b565b6040518082815260200191505060405180910390f35b6102eb6004803603606081101561029557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610841565b60405180821515815260200191505060405180910390f35b61030b61091a565b604051808260ff16815260200191505060405180910390f35b6103706004803603604081101561033a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610931565b60405180821515815260200191505060405180910390f35b6103d46004803603604081101561039e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109e4565b005b610418600480360360208110156103ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a98565b6040518082815260200191505060405180910390f35b610436610ae1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561047657808201518184015260208101905061045b565b50505050905090810190601f1680156104a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104fd600480360360408110156104c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b83565b005b61054b6004803603604081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c37565b60405180821515815260200191505060405180910390f35b6105a96004803603606081101561057957600080fd5b81019080803560ff16906020019092919080359060200190929190803560ff169060200190929190505050610d04565b005b6105f7600480360360408110156105c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e70565b60405180821515815260200191505060405180910390f35b6106716004803603604081101561062557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e8e565b6040518082815260200191505060405180910390f35b61068f610f15565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054906101000a900460ff1681565b60606106e760008054906101000a900460ff1660ff16610f3b565b6106ef61107f565b60405160200180807f576f726d686f6c652057726170706564202d200000000000000000000000000081525060130183805190602001908083835b6020831061074d578051825260208201915060208101905060208303925061072a565b6001836020036101000a038019825116818451168082178552505050505050905001807f2d0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b602083106107c657805182526020820191506020810190506020830392506107a3565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905090565b600061081461080d611243565b848461124b565b6001905092915050565b600260009054906101000a900460ff1681565b6000600554905090565b60015481565b600061084e848484611442565b61090f8461085a611243565b61090a85604051806060016040528060288152602001611d6360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108c0611243565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc9092919063ffffffff16565b61124b565b600190509392505050565b6000600760009054906101000a900460ff16905090565b60006109da61093e611243565b846109d5856004600061094f611243565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117b690919063ffffffff16565b61124b565b6001905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611e1a6025913960400191505060405180910390fd5b610a94828261183e565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b795780601f10610b4e57610100808354040283529160200191610b79565b820191906000526020600020905b815481529060010190602001808311610b5c57829003601f168201915b5050505050905090565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611dd16025913960400191505060405180910390fd5b610c3382826119fb565b5050565b6000610cfa610c44611243565b84610cf585604051806060016040528060258152602001611e3f6025913960046000610c6e611243565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc9092919063ffffffff16565b61124b565b6001905092915050565b600260009054906101000a900460ff1615610d87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616c726561647920696e697469616c697a65640000000000000000000000000081525060200191505060405180910390fd5b826000806101000a81548160ff021916908360ff1602179055508160018190555033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260006101000a81548160ff0219169083151502179055506040518060400160405280600381526020017f575754000000000000000000000000000000000000000000000000000000000081525060069080519060200190610e4f929190611c38565b5080600760006101000a81548160ff021916908360ff160217905550505050565b6000610e84610e7d611243565b8484611442565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606000821415610f83576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061107a565b600082905060005b60008214610fad578080600101915050600a8281610fa557fe5b049150610f8b565b60608167ffffffffffffffff81118015610fc657600080fd5b506040519080825280601f01601f191660200182016040528015610ff95781602001600182028036833780820191505090505b50905060006001830390505b6000861461107257600a868161101757fe5b0660300160f81b8282806001900393508151811061103157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a868161106a57fe5b049550611005565b819450505050505b919050565b6060806040518060400160405280601081526020017f30313233343536373839616263646566000000000000000000000000000000008152509050600060015490506060600260200260020160ff1667ffffffffffffffff811180156110e457600080fd5b506040519080825280601f01601f1916602001820160405280156111175781602001600182028036833780820191505090505b50905060005b602060ff168110156112395783600484836020811061113857fe5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c60f81c60ff168151811061117057fe5b602001015160f81c60f81b82600283028151811061118a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535083600f60f81b8483602081106111cb57fe5b1a60f81b1660f81c60ff16815181106111e057fe5b602001015160f81c60f81b8260028302600101815181106111fd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505061111d565b5080935050505090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611df66024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611357576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611d1b6022913960400191505060405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611dac6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561154e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611cd66023913960400191505060405180910390fd5b6115ba81604051806060016040528060268152602001611d3d60269139600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc9092919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061164f81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117b690919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561176e578082015181840152602081019050611753565b50505050905090810190601f16801561179b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b600080828401905083811015611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6118f6816005546117b690919063ffffffff16565b60058190555061194e81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117b690919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611d8b6021913960400191505060405180910390fd5b611aed81604051806060016040528060228152602001611cf960229139600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116fc9092919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b4581600554611bb590919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600082821115611c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c7957805160ff1916838001178555611ca7565b82800160010185558215611ca7579182015b82811115611ca6578251825591602001919060010190611c8b565b5b509050611cb49190611cb8565b5090565b5b80821115611cd1576000816000905550600101611cb9565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573736275726e2063616e206f6e6c792062652063616c6c6564206279207468652062726964676545524332303a20617070726f76652066726f6d20746865207a65726f20616464726573736d696e742063616e206f6e6c792062652063616c6c6564206279207468652062726964676545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b3a2ff5f0503f2258e143f986f075a1cf9f8ce968a2954f3953e79c45d383ede64736f6c634300060c0033",
"immutableReferences": {},
"sourceMap": "304:10137:2:-:0;;;1622:2;1596:28;;;;;;;;;;;;;;;;;;;;304:10137;;;;;;;;;;;;;;;;",
"deployedSourceMap": "304:10137:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;351:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1690:176;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4826:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;413:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3849:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;380:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5444:309;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3708:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6148:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;835:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4005:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3000:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1017:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6842:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;470:359;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4325:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4547:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;442:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;351:23;;;;;;;;;;;;:::o;1690:176::-;1727:13;1806:24;1819:10;;;;;;;;;;1806:24;;:12;:24::i;:::-;1837:20;:18;:20::i;:::-;1766:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1752:107;;1690:176;:::o;4826:158::-;4901:4;4917:39;4926:12;:10;:12::i;:::-;4940:7;4949:6;4917:8;:39::i;:::-;4973:4;4966:11;;4826:158;;;;:::o;413:23::-;;;;;;;;;;;;;:::o;3849:98::-;3902:7;3928:12;;3921:19;;3849:98;:::o;380:27::-;;;;:::o;5444:309::-;5542:4;5558:36;5568:6;5576:9;5587:6;5558:9;:36::i;:::-;5604:121;5613:6;5621:12;:10;:12::i;:::-;5635:89;5673:6;5635:89;;;;;;;;;;;;;;;;;:11;:19;5647:6;5635:19;;;;;;;;;;;;;;;:33;5655:12;:10;:12::i;:::-;5635:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5604:8;:121::i;:::-;5742:4;5735:11;;5444:309;;;;;:::o;3708:81::-;3749:5;3773:9;;;;;;;;;;;3766:16;;3708:81;:::o;6148:207::-;6228:4;6244:83;6253:12;:10;:12::i;:::-;6267:7;6276:50;6315:10;6276:11;:25;6288:12;:10;:12::i;:::-;6276:25;;;;;;;;;;;;;;;:34;6302:7;6276:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6244:8;:83::i;:::-;6344:4;6337:11;;6148:207;;;;:::o;835:176::-;923:6;;;;;;;;;;;909:20;;:10;:20;;;901:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;982:22;988:7;997:6;982:5;:22::i;:::-;835:176;;:::o;4005:117::-;4071:7;4097:9;:18;4107:7;4097:18;;;;;;;;;;;;;;;;4090:25;;4005:117;;;:::o;3000:85::-;3039:13;3071:7;3064:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3000:85;:::o;1017:176::-;1105:6;;;;;;;;;;;1091:20;;:10;:20;;;1083:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1164:22;1170:7;1179:6;1164:5;:22::i;:::-;1017:176;;:::o;6842:258::-;6927:4;6943:129;6952:12;:10;:12::i;:::-;6966:7;6975:96;7014:15;6975:96;;;;;;;;;;;;;;;;;:11;:25;6987:12;:10;:12::i;:::-;6975:25;;;;;;;;;;;;;;;:34;7001:7;6975:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6943:8;:129::i;:::-;7089:4;7082:11;;6842:258;;;;:::o;470:359::-;574:11;;;;;;;;;;;573:12;565:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;660:11;647:10;;:24;;;;;;;;;;;;;;;;;;696:13;681:12;:28;;;;728:10;719:6;;:19;;;;;;;;;;;;;;;;;;762:4;748:11;;:18;;;;;;;;;;;;;;;;;;777:15;;;;;;;;;;;;;;;;;:7;:15;;;;;;;;;;;;:::i;:::-;;814:8;802:9;;:20;;;;;;;;;;;;;;;;;;470:359;;;:::o;4325:164::-;4403:4;4419:42;4429:12;:10;:12::i;:::-;4443:9;4454:6;4419:9;:42::i;:::-;4478:4;4471:11;;4325:164;;;;:::o;4547:141::-;4628:7;4654:11;:18;4666:5;4654:18;;;;;;;;;;;;;;;:27;4673:7;4654:27;;;;;;;;;;;;;;;;4647:34;;4547:141;;;;:::o;442:21::-;;;;;;;;;;;;;:::o;1922:469::-;1976:27;2025:1;2019:2;:7;2015:48;;;2042:10;;;;;;;;;;;;;;;;;;;;;2015:48;2072:6;2081:2;2072:11;;2093:8;2111:66;2123:1;2118;:6;2111:66;;2140:5;;;;;;;2164:2;2159:7;;;;;;;;;2111:66;;;2186:17;2216:3;2206:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2186:34;;2230:6;2245:1;2239:3;:7;2230:16;;2256:100;2269:1;2263:2;:7;2256:100;;2319:2;2314;:7;;;;;;2309:2;:12;2298:25;;2286:4;2291:3;;;;;;;2286:9;;;;;;;;;;;:37;;;;;;;;;;;2343:2;2337:8;;;;;;;;;2256:100;;;2379:4;2365:19;;;;;;1922:469;;;;:::o;2447:440::-;2499:13;2524:21;:42;;;;;;;;;;;;;;;;;;;2576:12;2591;;2576:27;;2614:16;2661:1;2647:11;:15;2643:1;:19;2633:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2614:49;;2678:6;2673:180;2694:11;2690:15;;:1;:15;2673:180;;;2739:8;2770:1;2759:4;2764:1;2759:7;;;;;;;;;;:12;;;;;2753:19;;2748:25;;2739:35;;;;;;;;;;;;;;;;2726:3;2734:1;2730;:5;2726:10;;;;;;;;;;;:48;;;;;;;;;;;2805:8;2835:4;2825:14;;:4;2830:1;2825:7;;;;;;;;;;:14;2819:21;;2814:27;;2805:37;;;;;;;;;;;;;;;;2788:3;2800:1;2796;:5;2792:1;:9;2788:14;;;;;;;;;;;:54;;;;;;;;;;;2707:3;;;;;;;2673:180;;;;2876:3;2862:18;;;;;2447:440;:::o;598:104:9:-;651:15;685:10;678:17;;598:104;:::o;9696:332:2:-;9806:1;9789:19;;:5;:19;;;;9781:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9886:1;9867:21;;:7;:21;;;;9859:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9968:6;9938:11;:18;9950:5;9938:18;;;;;;;;;;;;;;;:27;9957:7;9938:27;;;;;;;;;;;;;;;:36;;;;10005:7;9989:32;;9998:5;9989:32;;;10014:6;9989:32;;;;;;;;;;;;;;;;;;9696:332;;;:::o;7574:464::-;7689:1;7671:20;;:6;:20;;;;7663:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7772:1;7751:23;;:9;:23;;;;7743:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7845;7867:6;7845:71;;;;;;;;;;;;;;;;;:9;:17;7855:6;7845:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7825:9;:17;7835:6;7825:17;;;;;;;;;;;;;;;:91;;;;7949:32;7974:6;7949:9;:20;7959:9;7949:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7926:9;:20;7936:9;7926:20;;;;;;;;;;;;;;;:55;;;;8013:9;7996:35;;8005:6;7996:35;;;8024:6;7996:35;;;;;;;;;;;;;;;;;;7574:464;;;:::o;5432:163:4:-;5518:7;5550:1;5545;:6;;5553:12;5537:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5587:1;5583;:5;5576:12;;5432:163;;;;;:::o;2690:175::-;2748:7;2767:9;2783:1;2779;:5;2767:17;;2807:1;2802;:6;;2794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2850:8;;;2690:175;;;;:::o;8308:302:2:-;8402:1;8383:21;;:7;:21;;;;8375:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8466:24;8483:6;8466:12;;:16;;:24;;;;:::i;:::-;8451:12;:39;;;;8521:30;8544:6;8521:9;:18;8531:7;8521:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;8500:9;:18;8510:7;8500:18;;;;;;;;;;;;;;;:51;;;;8587:7;8566:37;;8583:1;8566:37;;;8596:6;8566:37;;;;;;;;;;;;;;;;;;8308:302;;:::o;8929:342::-;9023:1;9004:21;;:7;:21;;;;8996:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9095:68;9118:6;9095:68;;;;;;;;;;;;;;;;;:9;:18;9105:7;9095:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;9074:9;:18;9084:7;9074:18;;;;;;;;;;;;;;;:89;;;;9188:24;9205:6;9188:12;;:16;;:24;;;;:::i;:::-;9173:12;:39;;;;9253:1;9227:37;;9236:7;9227:37;;;9257:6;9227:37;;;;;;;;;;;;;;;;;;8929:342;;:::o;3136:155:4:-;3194:7;3226:1;3221;:6;;3213:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3283:1;3279;:5;3272:12;;3136:155;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o",
"source": "// contracts/WrappedAsset.sol\n// SPDX-License-Identifier: Apache 2\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/GSN/Context.sol\";\n\ncontract WrappedAsset is IERC20, Context {\n uint8 public assetChain;\n bytes32 public assetAddress;\n bool public initialized;\n address public bridge;\n\n function initialize(uint8 _assetChain, bytes32 _assetAddress, uint8 decimals) public {\n require(!initialized, \"already initialized\");\n // Set local fields\n assetChain = _assetChain;\n assetAddress = _assetAddress;\n bridge = msg.sender;\n initialized = true;\n\n _symbol = \"WWT\";\n _decimals = decimals;\n }\n\n function mint(address account, uint256 amount) external {\n require(msg.sender == bridge, \"mint can only be called by the bridge\");\n\n _mint(account, amount);\n }\n\n function burn(address account, uint256 amount) external {\n require(msg.sender == bridge, \"burn can only be called by the bridge\");\n\n _burn(account, amount);\n }\n\n // Taken from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol\n // Licensed under MIT\n\n using SafeMath for uint256;\n using Address for address;\n\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _symbol;\n uint8 private _decimals = 18;\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view returns (string memory) {\n return string(abi.encodePacked(\"Wormhole Wrapped - \", uintToString(assetChain), \"-\", assetAddressString()));\n }\n\n // https://ethereum.stackexchange.com/a/40977\n function uintToString(uint _i) internal pure returns (string memory _uintAsString) {\n if (_i == 0) {\n return \"0\";\n }\n uint j = _i;\n uint len;\n while (j != 0) {\n len++;\n j /= 10;\n }\n bytes memory bstr = new bytes(len);\n uint k = len - 1;\n while (_i != 0) {\n bstr[k--] = byte(uint8(48 + _i % 10));\n _i /= 10;\n }\n return string(bstr);\n }\n\n // https://ethereum.stackexchange.com/a/58341\n function assetAddressString() private view returns (string memory) {\n bytes memory alphabet = \"0123456789abcdef\";\n bytes32 data = assetAddress;\n\n bytes memory str = new bytes(2 + data.length * 2);\n for (uint i = 0; i < data.length; i++) {\n str[i * 2] = alphabet[uint(uint8(data[i] >> 4))];\n str[1 + i * 2] = alphabet[uint(uint8(data[i] & 0x0f))];\n }\n return string(str);\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view returns (uint8) {\n return _decimals;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public override returns (bool) {\n _transfer(_msgSender(), recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public override returns (bool) {\n _approve(_msgSender(), spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20};\n *\n * Requirements:\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for ``sender``'s tokens of at least\n * `amount`.\n */\n function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \"ERC20: transfer amount exceeds allowance\"));\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \"ERC20: decreased allowance below zero\"));\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(address sender, address recipient, uint256 amount) internal {\n require(sender != address(0), \"ERC20: transfer from the zero address\");\n require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n _balances[sender] = _balances[sender].sub(amount, \"ERC20: transfer amount exceeds balance\");\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _totalSupply = _totalSupply.add(amount);\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _balances[account] = _balances[account].sub(amount, \"ERC20: burn amount exceeds balance\");\n _totalSupply = _totalSupply.sub(amount);\n emit Transfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n *\n * This is internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Sets {decimals} to a value other than the default one of 18.\n *\n * WARNING: This function should only be called from the constructor. Most\n * applications that interact with token contracts will not expect\n * {decimals} to ever change, and may work incorrectly if it does.\n */\n function _setupDecimals(uint8 decimals_) internal {\n _decimals = decimals_;\n }\n}\n",
"sourcePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/WrappedAsset.sol",
"ast": {
"absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/WrappedAsset.sol",
"exportedSymbols": {
"WrappedAsset": [2147]
},
"id": 2148,
"license": "Apache 2",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1433,
"literals": ["solidity", "^", "0.6", ".0"],
"nodeType": "PragmaDirective",
"src": "67:23:2"
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"id": 1434,
"nodeType": "ImportDirective",
"scope": 2148,
"sourceUnit": 3087,
"src": "92:56:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
"file": "@openzeppelin/contracts/math/SafeMath.sol",
"id": 1435,
"nodeType": "ImportDirective",
"scope": 2148,
"sourceUnit": 2506,
"src": "149:51:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/utils/Address.sol",
"file": "@openzeppelin/contracts/utils/Address.sol",
"id": 1436,
"nodeType": "ImportDirective",
"scope": 2148,
"sourceUnit": 3596,
"src": "201:51:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/GSN/Context.sol",
"file": "@openzeppelin/contracts/GSN/Context.sol",
"id": 1437,
"nodeType": "ImportDirective",
"scope": 2148,
"sourceUnit": 2151,
"src": "253:49:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 1438,
"name": "IERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3086,
"src": "329:6:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$3086",
"typeString": "contract IERC20"
}
},
"id": 1439,
"nodeType": "InheritanceSpecifier",
"src": "329:6:2"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 1440,
"name": "Context",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3618,
"src": "337:7:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Context_$3618",
"typeString": "contract Context"
}
},
"id": 1441,
"nodeType": "InheritanceSpecifier",
"src": "337:7:2"
}
],
"contractDependencies": [3086, 3618],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 2147,
"linearizedBaseContracts": [2147, 3618, 3086],
"name": "WrappedAsset",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": false,
"functionSelector": "026b0539",
"id": 1443,
"mutability": "mutable",
"name": "assetChain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2147,
"src": "351:23:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1442,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "351:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "1ba46cfd",
"id": 1445,
"mutability": "mutable",
"name": "assetAddress",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2147,
"src": "380:27:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1444,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "380:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "158ef93e",
"id": 1447,
"mutability": "mutable",
"name": "initialized",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2147,
"src": "413:23:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1446,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "413:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "e78cea92",
"id": 1449,
"mutability": "mutable",
"name": "bridge",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2147,
"src": "442:21:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1448,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "442:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "public"
},
{
"body": {
"id": 1489,
"nodeType": "Block",
"src": "555:274:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1460,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "573:12:2",
"subExpression": {
"argumentTypes": null,
"id": 1459,
"name": "initialized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1447,
"src": "574:11:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "616c726561647920696e697469616c697a6564",
"id": 1461,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "587:21:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc",
"typeString": "literal_string \"already initialized\""
},
"value": "already initialized"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc",
"typeString": "literal_string \"already initialized\""
}
],
"id": 1458,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"src": "565:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1462,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "565:44:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1463,
"nodeType": "ExpressionStatement",
"src": "565:44:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1466,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1464,
"name": "assetChain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1443,
"src": "647:10:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1465,
"name": "_assetChain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1451,
"src": "660:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "647:24:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1467,
"nodeType": "ExpressionStatement",
"src": "647:24:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1470,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1468,
"name": "assetAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1445,
"src": "681:12:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1469,
"name": "_assetAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1453,
"src": "696:13:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"src": "681:28:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 1471,
"nodeType": "ExpressionStatement",
"src": "681:28:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1475,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1472,
"name": "bridge",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1449,
"src": "719:6:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1473,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "728:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1474,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "728:10:2",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "719:19:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1476,
"nodeType": "ExpressionStatement",
"src": "719:19:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1479,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1477,
"name": "initialized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1447,
"src": "748:11:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1478,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "762:4:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "748:18:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1480,
"nodeType": "ExpressionStatement",
"src": "748:18:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1483,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1481,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1552,
"src": "777:7:2",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "575754",
"id": 1482,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "787:5:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_0d2d5a94d86195c9aab1dc351352ba0539c6da454bc9b63f5012e79c7d2d46e2",
"typeString": "literal_string \"WWT\""
},
"value": "WWT"
},
"src": "777:15:2",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 1484,
"nodeType": "ExpressionStatement",
"src": "777:15:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1487,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1485,
"name": "_decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1555,
"src": "802:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1486,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1455,
"src": "814:8:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "802:20:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1488,
"nodeType": "ExpressionStatement",
"src": "802:20:2"
}
]
},
"documentation": null,
"functionSelector": "a7a2d3fb",
"id": 1490,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "initialize",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1456,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1451,
"mutability": "mutable",
"name": "_assetChain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1490,
"src": "490:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1450,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "490:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1453,
"mutability": "mutable",
"name": "_assetAddress",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1490,
"src": "509:21:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1452,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "509:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1455,
"mutability": "mutable",
"name": "decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1490,
"src": "532:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1454,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "532:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "489:58:2"
},
"returnParameters": {
"id": 1457,
"nodeType": "ParameterList",
"parameters": [],
"src": "555:0:2"
},
"scope": 2147,
"src": "470:359:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1510,
"nodeType": "Block",
"src": "891:120:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1501,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1498,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "909:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1499,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "909:10:2",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1500,
"name": "bridge",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1449,
"src": "923:6:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "909:20:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "6d696e742063616e206f6e6c792062652063616c6c65642062792074686520627269646765",
"id": 1502,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "931:39:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_e7702acf154d2f82cc8c1dd52813f94b0a08ea733aaf89d0cac26f6b55722c5a",
"typeString": "literal_string \"mint can only be called by the bridge\""
},
"value": "mint can only be called by the bridge"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_e7702acf154d2f82cc8c1dd52813f94b0a08ea733aaf89d0cac26f6b55722c5a",
"typeString": "literal_string \"mint can only be called by the bridge\""
}
],
"id": 1497,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"src": "901:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1503,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "901:70:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1504,
"nodeType": "ExpressionStatement",
"src": "901:70:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1506,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1492,
"src": "988:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1507,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1494,
"src": "997:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1505,
"name": "_mint",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2043,
"src": "982:5:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 1508,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "982:22:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1509,
"nodeType": "ExpressionStatement",
"src": "982:22:2"
}
]
},
"documentation": null,
"functionSelector": "40c10f19",
"id": 1511,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "mint",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1495,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1492,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1511,
"src": "849:15:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1491,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "849:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1494,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1511,
"src": "866:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1493,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "866:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "848:33:2"
},
"returnParameters": {
"id": 1496,
"nodeType": "ParameterList",
"parameters": [],
"src": "891:0:2"
},
"scope": 2147,
"src": "835:176:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 1531,
"nodeType": "Block",
"src": "1073:120:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1522,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1519,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "1091:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1520,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1091:10:2",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1521,
"name": "bridge",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1449,
"src": "1105:6:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1091:20:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "6275726e2063616e206f6e6c792062652063616c6c65642062792074686520627269646765",
"id": 1523,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1113:39:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c31242aa9df4d29364b074986b1202ec8729deca727157a31be5e2473387893b",
"typeString": "literal_string \"burn can only be called by the bridge\""
},
"value": "burn can only be called by the bridge"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c31242aa9df4d29364b074986b1202ec8729deca727157a31be5e2473387893b",
"typeString": "literal_string \"burn can only be called by the bridge\""
}
],
"id": 1518,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"src": "1083:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1524,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1083:70:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1525,
"nodeType": "ExpressionStatement",
"src": "1083:70:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1527,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1513,
"src": "1170:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1528,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1515,
"src": "1179:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1526,
"name": "_burn",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2090,
"src": "1164:5:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256)"
}
},
"id": 1529,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1164:22:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1530,
"nodeType": "ExpressionStatement",
"src": "1164:22:2"
}
]
},
"documentation": null,
"functionSelector": "9dc29fac",
"id": 1532,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "burn",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1516,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1513,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1532,
"src": "1031:15:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1512,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1031:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1515,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1532,
"src": "1048:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1514,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1048:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1030:33:2"
},
"returnParameters": {
"id": 1517,
"nodeType": "ParameterList",
"parameters": [],
"src": "1073:0:2"
},
"scope": 2147,
"src": "1017:176:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 1535,
"libraryName": {
"contractScope": null,
"id": 1533,
"name": "SafeMath",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 2505,
"src": "1349:8:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeMath_$2505",
"typeString": "library SafeMath"
}
},
"nodeType": "UsingForDirective",
"src": "1343:27:2",
"typeName": {
"id": 1534,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1362:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"id": 1538,
"libraryName": {
"contractScope": null,
"id": 1536,
"name": "Address",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3595,
"src": "1381:7:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Address_$3595",
"typeString": "library Address"
}
},
"nodeType": "UsingForDirective",
"src": "1375:26:2",
"typeName": {
"id": 1537,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1393:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
{
"constant": false,
"id": 1542,
"mutability": "mutable",
"name": "_balances",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2147,
"src": "1407:45:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"typeName": {
"id": 1541,
"keyType": {
"id": 1539,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1415:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1407:27:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"valueType": {
"id": 1540,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1426:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
"value": null,
"visibility": "private"
},
{
"constant": false,
"id": 1548,
"mutability": "mutable",
"name": "_allowances",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2147,
"src": "1459:67:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
},
"typeName": {
"id": 1547,
"keyType": {
"id": 1543,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1467:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1459:47:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
},
"valueType": {
"id": 1546,
"keyType": {
"id": 1544,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1486:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1478:27:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"valueType": {
"id": 1545,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1497:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
}
},
"value": null,
"visibility": "private"
},
{
"constant": false,
"id": 1550,
"mutability": "mutable",
"name": "_totalSupply",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2147,
"src": "1533:28:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1549,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1533:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "private"
},
{
"constant": false,
"id": 1552,
"mutability": "mutable",
"name": "_symbol",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2147,
"src": "1568:22:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string"
},
"typeName": {
"id": 1551,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1568:6:2",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "private"
},
{
"constant": false,
"id": 1555,
"mutability": "mutable",
"name": "_decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2147,
"src": "1596:28:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1553,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1596:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": {
"argumentTypes": null,
"hexValue": "3138",
"id": 1554,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1622:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_18_by_1",
"typeString": "int_const 18"
},
"value": "18"
},
"visibility": "private"
},
{
"body": {
"id": 1575,
"nodeType": "Block",
"src": "1742:124:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "576f726d686f6c652057726170706564202d20",
"id": 1565,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1783:21:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_5cf7e3c6b428de30b95e99bd5727c04cd18c12b66cf3176e2f95b4ceb77530a8",
"typeString": "literal_string \"Wormhole Wrapped - \""
},
"value": "Wormhole Wrapped - "
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1567,
"name": "assetChain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1443,
"src": "1819:10:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1566,
"name": "uintToString",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1654,
"src": "1806:12:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
"typeString": "function (uint256) pure returns (string memory)"
}
},
"id": 1568,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1806:24:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"hexValue": "2d",
"id": 1569,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1832:3:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561",
"typeString": "literal_string \"-\""
},
"value": "-"
},
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1570,
"name": "assetAddressString",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1740,
"src": "1837:18:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
"typeString": "function () view returns (string memory)"
}
},
"id": 1571,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1837:20:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_5cf7e3c6b428de30b95e99bd5727c04cd18c12b66cf3176e2f95b4ceb77530a8",
"typeString": "literal_string \"Wormhole Wrapped - \""
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561",
"typeString": "literal_string \"-\""
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"expression": {
"argumentTypes": null,
"id": 1563,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "1766:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 1564,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1766:16:2",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 1572,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1766:92:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 1562,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1759:6:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_string_storage_ptr_$",
"typeString": "type(string storage pointer)"
},
"typeName": {
"id": 1561,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1759:6:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1573,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1759:100:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"functionReturnParameters": 1560,
"id": 1574,
"nodeType": "Return",
"src": "1752:107:2"
}
]
},
"documentation": {
"id": 1556,
"nodeType": "StructuredDocumentation",
"src": "1631:54:2",
"text": " @dev Returns the name of the token."
},
"functionSelector": "06fdde03",
"id": 1576,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "name",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1557,
"nodeType": "ParameterList",
"parameters": [],
"src": "1703:2:2"
},
"returnParameters": {
"id": 1560,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1559,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1576,
"src": "1727:13:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 1558,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1727:6:2",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1726:15:2"
},
"scope": 2147,
"src": "1690:176:2",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1653,
"nodeType": "Block",
"src": "2005:386:2",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1585,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1583,
"name": "_i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1578,
"src": "2019:2:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1584,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2025:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2019:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1589,
"nodeType": "IfStatement",
"src": "2015:48:2",
"trueBody": {
"id": 1588,
"nodeType": "Block",
"src": "2028:35:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1586,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2049:3:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
"typeString": "literal_string \"0\""
},
"value": "0"
},
"functionReturnParameters": 1582,
"id": 1587,
"nodeType": "Return",
"src": "2042:10:2"
}
]
}
},
{
"assignments": [1591],
"declarations": [
{
"constant": false,
"id": 1591,
"mutability": "mutable",
"name": "j",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1653,
"src": "2072:6:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1590,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2072:4:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1593,
"initialValue": {
"argumentTypes": null,
"id": 1592,
"name": "_i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1578,
"src": "2081:2:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2072:11:2"
},
{
"assignments": [1595],
"declarations": [
{
"constant": false,
"id": 1595,
"mutability": "mutable",
"name": "len",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1653,
"src": "2093:8:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1594,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2093:4:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1596,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "2093:8:2"
},
{
"body": {
"id": 1607,
"nodeType": "Block",
"src": "2126:51:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1601,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "2140:5:2",
"subExpression": {
"argumentTypes": null,
"id": 1600,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1595,
"src": "2140:3:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1602,
"nodeType": "ExpressionStatement",
"src": "2140:5:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1605,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1603,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1591,
"src": "2159:1:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "/=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "3130",
"id": 1604,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2164:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_10_by_1",
"typeString": "int_const 10"
},
"value": "10"
},
"src": "2159:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1606,
"nodeType": "ExpressionStatement",
"src": "2159:7:2"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1599,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1597,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1591,
"src": "2118:1:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1598,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2123:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2118:6:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1608,
"nodeType": "WhileStatement",
"src": "2111:66:2"
},
{
"assignments": [1610],
"declarations": [
{
"constant": false,
"id": 1610,
"mutability": "mutable",
"name": "bstr",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1653,
"src": "2186:17:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 1609,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2186:5:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1615,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1613,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1595,
"src": "2216:3:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1612,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "2206:9:2",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (uint256) pure returns (bytes memory)"
},
"typeName": {
"id": 1611,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2210:5:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
}
},
"id": 1614,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2206:14:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2186:34:2"
},
{
"assignments": [1617],
"declarations": [
{
"constant": false,
"id": 1617,
"mutability": "mutable",
"name": "k",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1653,
"src": "2230:6:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1616,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2230:4:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1621,
"initialValue": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1620,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1618,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1595,
"src": "2239:3:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1619,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2245:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2239:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2230:16:2"
},
{
"body": {
"id": 1646,
"nodeType": "Block",
"src": "2272:84:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1640,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1625,
"name": "bstr",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1610,
"src": "2286:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 1628,
"indexExpression": {
"argumentTypes": null,
"id": 1627,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "--",
"prefix": false,
"src": "2291:3:2",
"subExpression": {
"argumentTypes": null,
"id": 1626,
"name": "k",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1617,
"src": "2291:1:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2286:9:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1637,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3438",
"id": 1633,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2309:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_48_by_1",
"typeString": "int_const 48"
},
"value": "48"
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1636,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1634,
"name": "_i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1578,
"src": "2314:2:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "%",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3130",
"id": 1635,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2319:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_10_by_1",
"typeString": "int_const 10"
},
"value": "10"
},
"src": "2314:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2309:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1632,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2303:5:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint8_$",
"typeString": "type(uint8)"
},
"typeName": {
"id": 1631,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2303:5:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1638,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2303:19:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1630,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2298:4:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes1_$",
"typeString": "type(bytes1)"
},
"typeName": {
"id": 1629,
"name": "byte",
"nodeType": "ElementaryTypeName",
"src": "2298:4:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1639,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2298:25:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"src": "2286:37:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"id": 1641,
"nodeType": "ExpressionStatement",
"src": "2286:37:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1644,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1642,
"name": "_i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1578,
"src": "2337:2:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "/=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "3130",
"id": 1643,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2343:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_10_by_1",
"typeString": "int_const 10"
},
"value": "10"
},
"src": "2337:8:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1645,
"nodeType": "ExpressionStatement",
"src": "2337:8:2"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1624,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1622,
"name": "_i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1578,
"src": "2263:2:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1623,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2269:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2263:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1647,
"nodeType": "WhileStatement",
"src": "2256:100:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1650,
"name": "bstr",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1610,
"src": "2379:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 1649,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2372:6:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_string_storage_ptr_$",
"typeString": "type(string storage pointer)"
},
"typeName": {
"id": 1648,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2372:6:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1651,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2372:12:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"functionReturnParameters": 1582,
"id": 1652,
"nodeType": "Return",
"src": "2365:19:2"
}
]
},
"documentation": null,
"id": 1654,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "uintToString",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1579,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1578,
"mutability": "mutable",
"name": "_i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1654,
"src": "1944:7:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1577,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "1944:4:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1943:9:2"
},
"returnParameters": {
"id": 1582,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1581,
"mutability": "mutable",
"name": "_uintAsString",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1654,
"src": "1976:27:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 1580,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1976:6:2",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1975:29:2"
},
"scope": 2147,
"src": "1922:469:2",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 1739,
"nodeType": "Block",
"src": "2514:373:2",
"statements": [
{
"assignments": [1660],
"declarations": [
{
"constant": false,
"id": 1660,
"mutability": "mutable",
"name": "alphabet",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1739,
"src": "2524:21:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 1659,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2524:5:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1662,
"initialValue": {
"argumentTypes": null,
"hexValue": "30313233343536373839616263646566",
"id": 1661,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2548:18:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f",
"typeString": "literal_string \"0123456789abcdef\""
},
"value": "0123456789abcdef"
},
"nodeType": "VariableDeclarationStatement",
"src": "2524:42:2"
},
{
"assignments": [1664],
"declarations": [
{
"constant": false,
"id": 1664,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1739,
"src": "2576:12:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1663,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2576:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1666,
"initialValue": {
"argumentTypes": null,
"id": 1665,
"name": "assetAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1445,
"src": "2591:12:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2576:27:2"
},
{
"assignments": [1668],
"declarations": [
{
"constant": false,
"id": 1668,
"mutability": "mutable",
"name": "str",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1739,
"src": "2614:16:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 1667,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2614:5:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1678,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1676,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "32",
"id": 1671,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2643:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1675,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1672,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1664,
"src": "2647:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 1673,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2647:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "32",
"id": 1674,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2661:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"src": "2647:15:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "2643:19:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1670,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "2633:9:2",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (uint256) pure returns (bytes memory)"
},
"typeName": {
"id": 1669,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2637:5:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
}
},
"id": 1677,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2633:30:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2614:49:2"
},
{
"body": {
"id": 1732,
"nodeType": "Block",
"src": "2712:141:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1708,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1690,
"name": "str",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1668,
"src": "2726:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 1694,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1693,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1691,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1680,
"src": "2730:1:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "32",
"id": 1692,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2734:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"src": "2730:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2726:10:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1695,
"name": "alphabet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1660,
"src": "2739:8:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 1707,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
},
"id": 1704,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1700,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1664,
"src": "2759:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 1702,
"indexExpression": {
"argumentTypes": null,
"id": 1701,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1680,
"src": "2764:1:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2759:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"nodeType": "BinaryOperation",
"operator": ">>",
"rightExpression": {
"argumentTypes": null,
"hexValue": "34",
"id": 1703,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2770:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_4_by_1",
"typeString": "int_const 4"
},
"value": "4"
},
"src": "2759:12:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
],
"id": 1699,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2753:5:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint8_$",
"typeString": "type(uint8)"
},
"typeName": {
"id": 1698,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2753:5:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1705,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2753:19:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1697,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2748:4:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1696,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2748:4:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1706,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2748:25:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2739:35:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"src": "2726:48:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"id": 1709,
"nodeType": "ExpressionStatement",
"src": "2726:48:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1730,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1710,
"name": "str",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1668,
"src": "2788:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 1716,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1715,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1711,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2792:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1714,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1712,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1680,
"src": "2796:1:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "32",
"id": 1713,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2800:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"src": "2796:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2792:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2788:14:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1717,
"name": "alphabet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1660,
"src": "2805:8:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 1729,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
},
"id": 1726,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1722,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1664,
"src": "2825:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 1724,
"indexExpression": {
"argumentTypes": null,
"id": 1723,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1680,
"src": "2830:1:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2825:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"nodeType": "BinaryOperation",
"operator": "&",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30783066",
"id": 1725,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2835:4:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_15_by_1",
"typeString": "int_const 15"
},
"value": "0x0f"
},
"src": "2825:14:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
],
"id": 1721,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2819:5:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint8_$",
"typeString": "type(uint8)"
},
"typeName": {
"id": 1720,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2819:5:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1727,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2819:21:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1719,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2814:4:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1718,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2814:4:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1728,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2814:27:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2805:37:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"src": "2788:54:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
"id": 1731,
"nodeType": "ExpressionStatement",
"src": "2788:54:2"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1686,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1683,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1680,
"src": "2690:1:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1684,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1664,
"src": "2694:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 1685,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2694:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "2690:15:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1733,
"initializationExpression": {
"assignments": [1680],
"declarations": [
{
"constant": false,
"id": 1680,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1733,
"src": "2678:6:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1679,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2678:4:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1682,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 1681,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2687:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "2678:10:2"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 1688,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "2707:3:2",
"subExpression": {
"argumentTypes": null,
"id": 1687,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1680,
"src": "2707:1:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1689,
"nodeType": "ExpressionStatement",
"src": "2707:3:2"
},
"nodeType": "ForStatement",
"src": "2673:180:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1736,
"name": "str",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1668,
"src": "2876:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 1735,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2869:6:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_string_storage_ptr_$",
"typeString": "type(string storage pointer)"
},
"typeName": {
"id": 1734,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2869:6:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1737,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2869:11:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"functionReturnParameters": 1658,
"id": 1738,
"nodeType": "Return",
"src": "2862:18:2"
}
]
},
"documentation": null,
"id": 1740,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "assetAddressString",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1655,
"nodeType": "ParameterList",
"parameters": [],
"src": "2474:2:2"
},
"returnParameters": {
"id": 1658,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1657,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1740,
"src": "2499:13:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 1656,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2499:6:2",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2498:15:2"
},
"scope": 2147,
"src": "2447:440:2",
"stateMutability": "view",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 1748,
"nodeType": "Block",
"src": "3054:31:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1746,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1552,
"src": "3071:7:2",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"functionReturnParameters": 1745,
"id": 1747,
"nodeType": "Return",
"src": "3064:14:2"
}
]
},
"documentation": {
"id": 1741,
"nodeType": "StructuredDocumentation",
"src": "2893:102:2",
"text": " @dev Returns the symbol of the token, usually a shorter version of the\n name."
},
"functionSelector": "95d89b41",
"id": 1749,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "symbol",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1742,
"nodeType": "ParameterList",
"parameters": [],
"src": "3015:2:2"
},
"returnParameters": {
"id": 1745,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1744,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1749,
"src": "3039:13:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 1743,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3039:6:2",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3038:15:2"
},
"scope": 2147,
"src": "3000:85:2",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1757,
"nodeType": "Block",
"src": "3756:33:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1755,
"name": "_decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1555,
"src": "3773:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"functionReturnParameters": 1754,
"id": 1756,
"nodeType": "Return",
"src": "3766:16:2"
}
]
},
"documentation": {
"id": 1750,
"nodeType": "StructuredDocumentation",
"src": "3091:612:2",
"text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."
},
"functionSelector": "313ce567",
"id": 1758,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "decimals",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1751,
"nodeType": "ParameterList",
"parameters": [],
"src": "3725:2:2"
},
"returnParameters": {
"id": 1754,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1753,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1758,
"src": "3749:5:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1752,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3749:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3748:7:2"
},
"scope": 2147,
"src": "3708:81:2",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [3017],
"body": {
"id": 1767,
"nodeType": "Block",
"src": "3911:36:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1765,
"name": "_totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1550,
"src": "3928:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 1764,
"id": 1766,
"nodeType": "Return",
"src": "3921:19:2"
}
]
},
"documentation": {
"id": 1759,
"nodeType": "StructuredDocumentation",
"src": "3795:49:2",
"text": " @dev See {IERC20-totalSupply}."
},
"functionSelector": "18160ddd",
"id": 1768,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "totalSupply",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1761,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3884:8:2"
},
"parameters": {
"id": 1760,
"nodeType": "ParameterList",
"parameters": [],
"src": "3869:2:2"
},
"returnParameters": {
"id": 1764,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1763,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1768,
"src": "3902:7:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1762,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3902:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3901:9:2"
},
"scope": 2147,
"src": "3849:98:2",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [3025],
"body": {
"id": 1781,
"nodeType": "Block",
"src": "4080:42:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1777,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1542,
"src": "4097:9:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 1779,
"indexExpression": {
"argumentTypes": null,
"id": 1778,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1771,
"src": "4107:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4097:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 1776,
"id": 1780,
"nodeType": "Return",
"src": "4090:25:2"
}
]
},
"documentation": {
"id": 1769,
"nodeType": "StructuredDocumentation",
"src": "3953:47:2",
"text": " @dev See {IERC20-balanceOf}."
},
"functionSelector": "70a08231",
"id": 1782,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "balanceOf",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1773,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4053:8:2"
},
"parameters": {
"id": 1772,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1771,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1782,
"src": "4024:15:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1770,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4024:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4023:17:2"
},
"returnParameters": {
"id": 1776,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1775,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1782,
"src": "4071:7:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1774,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4071:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4070:9:2"
},
"scope": 2147,
"src": "4005:117:2",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [3035],
"body": {
"id": 1802,
"nodeType": "Block",
"src": "4409:80:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1794,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3606,
"src": "4429:10:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
"typeString": "function () view returns (address payable)"
}
},
"id": 1795,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4429:12:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 1796,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1785,
"src": "4443:9:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1797,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1787,
"src": "4454:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1793,
"name": "_transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1997,
"src": "4419:9:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 1798,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4419:42:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1799,
"nodeType": "ExpressionStatement",
"src": "4419:42:2"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1800,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4478:4:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 1792,
"id": 1801,
"nodeType": "Return",
"src": "4471:11:2"
}
]
},
"documentation": {
"id": 1783,
"nodeType": "StructuredDocumentation",
"src": "4128:192:2",
"text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`."
},
"functionSelector": "a9059cbb",
"id": 1803,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "transfer",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1789,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4385:8:2"
},
"parameters": {
"id": 1788,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1785,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1803,
"src": "4343:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1784,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4343:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1787,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1803,
"src": "4362:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1786,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4362:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4342:35:2"
},
"returnParameters": {
"id": 1792,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1791,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1803,
"src": "4403:4:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1790,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4403:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4402:6:2"
},
"scope": 2147,
"src": "4325:164:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [3045],
"body": {
"id": 1820,
"nodeType": "Block",
"src": "4637:51:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1814,
"name": "_allowances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1548,
"src": "4654:11:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 1816,
"indexExpression": {
"argumentTypes": null,
"id": 1815,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1806,
"src": "4666:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4654:18:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 1818,
"indexExpression": {
"argumentTypes": null,
"id": 1817,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1808,
"src": "4673:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4654:27:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 1813,
"id": 1819,
"nodeType": "Return",
"src": "4647:34:2"
}
]
},
"documentation": {
"id": 1804,
"nodeType": "StructuredDocumentation",
"src": "4495:47:2",
"text": " @dev See {IERC20-allowance}."
},
"functionSelector": "dd62ed3e",
"id": 1821,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "allowance",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1810,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4610:8:2"
},
"parameters": {
"id": 1809,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1806,
"mutability": "mutable",
"name": "owner",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1821,
"src": "4566:13:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1805,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4566:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1808,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1821,
"src": "4581:15:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1807,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4581:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4565:32:2"
},
"returnParameters": {
"id": 1813,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1812,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1821,
"src": "4628:7:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1811,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4628:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4627:9:2"
},
"scope": 2147,
"src": "4547:141:2",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [3055],
"body": {
"id": 1841,
"nodeType": "Block",
"src": "4907:77:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1833,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3606,
"src": "4926:10:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
"typeString": "function () view returns (address payable)"
}
},
"id": 1834,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4926:12:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 1835,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1824,
"src": "4940:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1836,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1826,
"src": "4949:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1832,
"name": "_approve",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2135,
"src": "4917:8:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 1837,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4917:39:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1838,
"nodeType": "ExpressionStatement",
"src": "4917:39:2"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1839,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4973:4:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 1831,
"id": 1840,
"nodeType": "Return",
"src": "4966:11:2"
}
]
},
"documentation": {
"id": 1822,
"nodeType": "StructuredDocumentation",
"src": "4694:127:2",
"text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address."
},
"functionSelector": "095ea7b3",
"id": 1842,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "approve",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1828,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "4883:8:2"
},
"parameters": {
"id": 1827,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1824,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1842,
"src": "4843:15:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1823,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4843:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1826,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1842,
"src": "4860:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1825,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4860:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4842:33:2"
},
"returnParameters": {
"id": 1831,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1830,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1842,
"src": "4901:4:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1829,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4901:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4900:6:2"
},
"scope": 2147,
"src": "4826:158:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [3067],
"body": {
"id": 1879,
"nodeType": "Block",
"src": "5548:205:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1856,
"name": "sender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1845,
"src": "5568:6:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1857,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1847,
"src": "5576:9:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1858,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1849,
"src": "5587:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1855,
"name": "_transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1997,
"src": "5558:9:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 1859,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5558:36:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1860,
"nodeType": "ExpressionStatement",
"src": "5558:36:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1862,
"name": "sender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1845,
"src": "5613:6:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1863,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3606,
"src": "5621:10:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
"typeString": "function () view returns (address payable)"
}
},
"id": 1864,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5621:12:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1872,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1849,
"src": "5673:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365",
"id": 1873,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5681:42:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
"typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
},
"value": "ERC20: transfer amount exceeds allowance"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
"typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
}
],
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1865,
"name": "_allowances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1548,
"src": "5635:11:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 1867,
"indexExpression": {
"argumentTypes": null,
"id": 1866,
"name": "sender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1845,
"src": "5647:6:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5635:19:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 1870,
"indexExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1868,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3606,
"src": "5655:10:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
"typeString": "function () view returns (address payable)"
}
},
"id": 1869,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5655:12:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5635:33:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1871,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 2456,
"src": "5635:37:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
}
},
"id": 1874,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5635:89:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1861,
"name": "_approve",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2135,
"src": "5604:8:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 1875,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5604:121:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1876,
"nodeType": "ExpressionStatement",
"src": "5604:121:2"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1877,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5742:4:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 1854,
"id": 1878,
"nodeType": "Return",
"src": "5735:11:2"
}
]
},
"documentation": {
"id": 1843,
"nodeType": "StructuredDocumentation",
"src": "4990:449:2",
"text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20};\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`."
},
"functionSelector": "23b872dd",
"id": 1880,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "transferFrom",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 1851,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5524:8:2"
},
"parameters": {
"id": 1850,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1845,
"mutability": "mutable",
"name": "sender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1880,
"src": "5466:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1844,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5466:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1847,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1880,
"src": "5482:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1846,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5482:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1849,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1880,
"src": "5501:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1848,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5501:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5465:51:2"
},
"returnParameters": {
"id": 1854,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1853,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1880,
"src": "5542:4:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1852,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "5542:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5541:6:2"
},
"scope": 2147,
"src": "5444:309:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1907,
"nodeType": "Block",
"src": "6234:121:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1891,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3606,
"src": "6253:10:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
"typeString": "function () view returns (address payable)"
}
},
"id": 1892,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6253:12:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 1893,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1883,
"src": "6267:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1901,
"name": "addedValue",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1885,
"src": "6315:10:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1894,
"name": "_allowances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1548,
"src": "6276:11:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 1897,
"indexExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1895,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3606,
"src": "6288:10:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
"typeString": "function () view returns (address payable)"
}
},
"id": 1896,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6288:12:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6276:25:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 1899,
"indexExpression": {
"argumentTypes": null,
"id": 1898,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1883,
"src": "6302:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6276:34:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1900,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 2332,
"src": "6276:38:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 1902,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6276:50:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1890,
"name": "_approve",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2135,
"src": "6244:8:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 1903,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6244:83:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1904,
"nodeType": "ExpressionStatement",
"src": "6244:83:2"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1905,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6344:4:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 1889,
"id": 1906,
"nodeType": "Return",
"src": "6337:11:2"
}
]
},
"documentation": {
"id": 1881,
"nodeType": "StructuredDocumentation",
"src": "5759:384:2",
"text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."
},
"functionSelector": "39509351",
"id": 1908,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "increaseAllowance",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1886,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1883,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1908,
"src": "6175:15:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1882,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6175:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1885,
"mutability": "mutable",
"name": "addedValue",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1908,
"src": "6192:18:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1884,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6192:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6174:37:2"
},
"returnParameters": {
"id": 1889,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1888,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1908,
"src": "6228:4:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1887,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "6228:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6227:6:2"
},
"scope": 2147,
"src": "6148:207:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1936,
"nodeType": "Block",
"src": "6933:167:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1919,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3606,
"src": "6952:10:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
"typeString": "function () view returns (address payable)"
}
},
"id": 1920,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6952:12:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 1921,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1911,
"src": "6966:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1929,
"name": "subtractedValue",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1913,
"src": "7014:15:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
"id": 1930,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7031:39:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
"typeString": "literal_string \"ERC20: decreased allowance below zero\""
},
"value": "ERC20: decreased allowance below zero"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
"typeString": "literal_string \"ERC20: decreased allowance below zero\""
}
],
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1922,
"name": "_allowances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1548,
"src": "6975:11:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 1925,
"indexExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1923,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3606,
"src": "6987:10:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
"typeString": "function () view returns (address payable)"
}
},
"id": 1924,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6987:12:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6975:25:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 1927,
"indexExpression": {
"argumentTypes": null,
"id": 1926,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1911,
"src": "7001:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6975:34:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1928,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 2456,
"src": "6975:38:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
}
},
"id": 1931,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6975:96:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1918,
"name": "_approve",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2135,
"src": "6943:8:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 1932,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6943:129:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1933,
"nodeType": "ExpressionStatement",
"src": "6943:129:2"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1934,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7089:4:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 1917,
"id": 1935,
"nodeType": "Return",
"src": "7082:11:2"
}
]
},
"documentation": {
"id": 1909,
"nodeType": "StructuredDocumentation",
"src": "6361:476:2",
"text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."
},
"functionSelector": "a457c2d7",
"id": 1937,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "decreaseAllowance",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1914,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1911,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1937,
"src": "6869:15:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1910,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6869:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1913,
"mutability": "mutable",
"name": "subtractedValue",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1937,
"src": "6886:23:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1912,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6886:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6868:42:2"
},
"returnParameters": {
"id": 1917,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1916,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1937,
"src": "6927:4:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1915,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "6927:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6926:6:2"
},
"scope": 2147,
"src": "6842:258:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1996,
"nodeType": "Block",
"src": "7653:385:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1953,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1948,
"name": "sender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1940,
"src": "7671:6:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 1951,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7689:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 1950,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "7681:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1949,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7681:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1952,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7681:10:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "7671:20:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373",
"id": 1954,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7693:39:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
"typeString": "literal_string \"ERC20: transfer from the zero address\""
},
"value": "ERC20: transfer from the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
"typeString": "literal_string \"ERC20: transfer from the zero address\""
}
],
"id": 1947,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"src": "7663:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1955,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7663:70:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1956,
"nodeType": "ExpressionStatement",
"src": "7663:70:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1963,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1958,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1942,
"src": "7751:9:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 1961,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7772:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 1960,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "7764:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1959,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7764:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1962,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7764:10:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "7751:23:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373",
"id": 1964,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7776:37:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
"typeString": "literal_string \"ERC20: transfer to the zero address\""
},
"value": "ERC20: transfer to the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
"typeString": "literal_string \"ERC20: transfer to the zero address\""
}
],
"id": 1957,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"src": "7743:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1965,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7743:71:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1966,
"nodeType": "ExpressionStatement",
"src": "7743:71:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1977,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1967,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1542,
"src": "7825:9:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 1969,
"indexExpression": {
"argumentTypes": null,
"id": 1968,
"name": "sender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1940,
"src": "7835:6:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "7825:17:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1974,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1944,
"src": "7867:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365",
"id": 1975,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7875:40:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
"typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
},
"value": "ERC20: transfer amount exceeds balance"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
"typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
}
],
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1970,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1542,
"src": "7845:9:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 1972,
"indexExpression": {
"argumentTypes": null,
"id": 1971,
"name": "sender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1940,
"src": "7855:6:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7845:17:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1973,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 2456,
"src": "7845:21:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
}
},
"id": 1976,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7845:71:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7825:91:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1978,
"nodeType": "ExpressionStatement",
"src": "7825:91:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1988,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1979,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1542,
"src": "7926:9:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 1981,
"indexExpression": {
"argumentTypes": null,
"id": 1980,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1942,
"src": "7936:9:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "7926:20:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1986,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1944,
"src": "7974:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1982,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1542,
"src": "7949:9:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 1984,
"indexExpression": {
"argumentTypes": null,
"id": 1983,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1942,
"src": "7959:9:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7949:20:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1985,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 2332,
"src": "7949:24:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 1987,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7949:32:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7926:55:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1989,
"nodeType": "ExpressionStatement",
"src": "7926:55:2"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1991,
"name": "sender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1940,
"src": "8005:6:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1992,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1942,
"src": "8013:9:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1993,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1944,
"src": "8024:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1990,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3076,
"src": "7996:8:2",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 1994,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7996:35:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1995,
"nodeType": "EmitStatement",
"src": "7991:40:2"
}
]
},
"documentation": {
"id": 1938,
"nodeType": "StructuredDocumentation",
"src": "7106:463:2",
"text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`."
},
"id": 1997,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_transfer",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1945,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1940,
"mutability": "mutable",
"name": "sender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1997,
"src": "7593:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1939,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7593:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1942,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1997,
"src": "7609:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1941,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7609:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1944,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1997,
"src": "7628:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1943,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7628:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7592:51:2"
},
"returnParameters": {
"id": 1946,
"nodeType": "ParameterList",
"parameters": [],
"src": "7653:0:2"
},
"scope": 2147,
"src": "7574:464:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 2042,
"nodeType": "Block",
"src": "8365:245:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 2011,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 2006,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2000,
"src": "8383:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 2009,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8402:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 2008,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8394:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 2007,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8394:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 2010,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8394:10:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "8383:21:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
"id": 2012,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8406:33:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
"typeString": "literal_string \"ERC20: mint to the zero address\""
},
"value": "ERC20: mint to the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
"typeString": "literal_string \"ERC20: mint to the zero address\""
}
],
"id": 2005,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"src": "8375:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 2013,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8375:65:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2014,
"nodeType": "ExpressionStatement",
"src": "8375:65:2"
},
{
"expression": {
"argumentTypes": null,
"id": 2020,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 2015,
"name": "_totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1550,
"src": "8451:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 2018,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2002,
"src": "8483:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 2016,
"name": "_totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1550,
"src": "8466:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2017,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 2332,
"src": "8466:16:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 2019,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8466:24:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8451:39:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2021,
"nodeType": "ExpressionStatement",
"src": "8451:39:2"
},
{
"expression": {
"argumentTypes": null,
"id": 2031,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 2022,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1542,
"src": "8500:9:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 2024,
"indexExpression": {
"argumentTypes": null,
"id": 2023,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2000,
"src": "8510:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "8500:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 2029,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2002,
"src": "8544:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 2025,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1542,
"src": "8521:9:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 2027,
"indexExpression": {
"argumentTypes": null,
"id": 2026,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2000,
"src": "8531:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8521:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2028,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 2332,
"src": "8521:22:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 2030,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8521:30:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8500:51:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2032,
"nodeType": "ExpressionStatement",
"src": "8500:51:2"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 2036,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8583:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 2035,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8575:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 2034,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8575:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 2037,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8575:10:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 2038,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2000,
"src": "8587:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 2039,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2002,
"src": "8596:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2033,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3076,
"src": "8566:8:2",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 2040,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8566:37:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2041,
"nodeType": "EmitStatement",
"src": "8561:42:2"
}
]
},
"documentation": {
"id": 1998,
"nodeType": "StructuredDocumentation",
"src": "8044:259:2",
"text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements\n - `to` cannot be the zero address."
},
"id": 2043,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_mint",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 2003,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2000,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2043,
"src": "8323:15:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1999,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8323:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 2002,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2043,
"src": "8340:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2001,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8340:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8322:33:2"
},
"returnParameters": {
"id": 2004,
"nodeType": "ParameterList",
"parameters": [],
"src": "8365:0:2"
},
"scope": 2147,
"src": "8308:302:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 2089,
"nodeType": "Block",
"src": "8986:285:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 2057,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 2052,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2046,
"src": "9004:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 2055,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9023:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 2054,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9015:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 2053,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9015:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 2056,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9015:10:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "9004:21:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373",
"id": 2058,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9027:35:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
"typeString": "literal_string \"ERC20: burn from the zero address\""
},
"value": "ERC20: burn from the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
"typeString": "literal_string \"ERC20: burn from the zero address\""
}
],
"id": 2051,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"src": "8996:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 2059,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8996:67:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2060,
"nodeType": "ExpressionStatement",
"src": "8996:67:2"
},
{
"expression": {
"argumentTypes": null,
"id": 2071,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 2061,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1542,
"src": "9074:9:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 2063,
"indexExpression": {
"argumentTypes": null,
"id": 2062,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2046,
"src": "9084:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9074:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 2068,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2048,
"src": "9118:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365",
"id": 2069,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9126:36:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
"typeString": "literal_string \"ERC20: burn amount exceeds balance\""
},
"value": "ERC20: burn amount exceeds balance"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
"typeString": "literal_string \"ERC20: burn amount exceeds balance\""
}
],
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 2064,
"name": "_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1542,
"src": "9095:9:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 2066,
"indexExpression": {
"argumentTypes": null,
"id": 2065,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2046,
"src": "9105:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9095:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2067,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 2456,
"src": "9095:22:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
}
},
"id": 2070,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9095:68:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9074:89:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2072,
"nodeType": "ExpressionStatement",
"src": "9074:89:2"
},
{
"expression": {
"argumentTypes": null,
"id": 2078,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 2073,
"name": "_totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1550,
"src": "9173:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 2076,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2048,
"src": "9205:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 2074,
"name": "_totalSupply",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1550,
"src": "9188:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2075,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 2354,
"src": "9188:16:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
}
},
"id": 2077,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9188:24:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9173:39:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2079,
"nodeType": "ExpressionStatement",
"src": "9173:39:2"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 2081,
"name": "account",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2046,
"src": "9236:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 2084,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9253:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 2083,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9245:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 2082,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9245:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 2085,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9245:10:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 2086,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2048,
"src": "9257:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2080,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3076,
"src": "9227:8:2",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 2087,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9227:37:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2088,
"nodeType": "EmitStatement",
"src": "9222:42:2"
}
]
},
"documentation": {
"id": 2044,
"nodeType": "StructuredDocumentation",
"src": "8616:308:2",
"text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."
},
"id": 2090,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_burn",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 2049,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2046,
"mutability": "mutable",
"name": "account",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2090,
"src": "8944:15:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2045,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8944:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 2048,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2090,
"src": "8961:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2047,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8961:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8943:33:2"
},
"returnParameters": {
"id": 2050,
"nodeType": "ParameterList",
"parameters": [],
"src": "8986:0:2"
},
"scope": 2147,
"src": "8929:342:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 2134,
"nodeType": "Block",
"src": "9771:257:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 2106,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 2101,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2093,
"src": "9789:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 2104,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9806:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 2103,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9798:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 2102,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9798:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 2105,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9798:10:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "9789:19:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373",
"id": 2107,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9810:38:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
"typeString": "literal_string \"ERC20: approve from the zero address\""
},
"value": "ERC20: approve from the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
"typeString": "literal_string \"ERC20: approve from the zero address\""
}
],
"id": 2100,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"src": "9781:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 2108,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9781:68:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2109,
"nodeType": "ExpressionStatement",
"src": "9781:68:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 2116,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 2111,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2095,
"src": "9867:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 2114,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9886:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 2113,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9878:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 2112,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9878:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 2115,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9878:10:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "9867:21:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373",
"id": 2117,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9890:36:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
"typeString": "literal_string \"ERC20: approve to the zero address\""
},
"value": "ERC20: approve to the zero address"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
"typeString": "literal_string \"ERC20: approve to the zero address\""
}
],
"id": 2110,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"src": "9859:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 2118,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9859:68:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2119,
"nodeType": "ExpressionStatement",
"src": "9859:68:2"
},
{
"expression": {
"argumentTypes": null,
"id": 2126,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 2120,
"name": "_allowances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1548,
"src": "9938:11:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 2123,
"indexExpression": {
"argumentTypes": null,
"id": 2121,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2093,
"src": "9950:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9938:18:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 2124,
"indexExpression": {
"argumentTypes": null,
"id": 2122,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2095,
"src": "9957:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9938:27:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 2125,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2097,
"src": "9968:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9938:36:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 2127,
"nodeType": "ExpressionStatement",
"src": "9938:36:2"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 2129,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2093,
"src": "9998:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 2130,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2095,
"src": "10005:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 2131,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2097,
"src": "10014:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 2128,
"name": "Approval",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3085,
"src": "9989:8:2",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256)"
}
},
"id": 2132,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9989:32:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 2133,
"nodeType": "EmitStatement",
"src": "9984:37:2"
}
]
},
"documentation": {
"id": 2091,
"nodeType": "StructuredDocumentation",
"src": "9277:414:2",
"text": " @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n This is internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."
},
"id": 2135,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_approve",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 2098,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2093,
"mutability": "mutable",
"name": "owner",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2135,
"src": "9714:13:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2092,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9714:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 2095,
"mutability": "mutable",
"name": "spender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2135,
"src": "9729:15:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2094,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9729:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 2097,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2135,
"src": "9746:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2096,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9746:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9713:48:2"
},
"returnParameters": {
"id": 2099,
"nodeType": "ParameterList",
"parameters": [],
"src": "9771:0:2"
},
"scope": 2147,
"src": "9696:332:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 2145,
"nodeType": "Block",
"src": "10401:38:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 2143,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 2141,
"name": "_decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1555,
"src": "10411:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 2142,
"name": "decimals_",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2138,
"src": "10423:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "10411:21:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 2144,
"nodeType": "ExpressionStatement",
"src": "10411:21:2"
}
]
},
"documentation": {
"id": 2136,
"nodeType": "StructuredDocumentation",
"src": "10034:312:2",
"text": " @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does."
},
"id": 2146,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_setupDecimals",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 2139,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 2138,
"mutability": "mutable",
"name": "decimals_",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 2146,
"src": "10375:15:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 2137,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "10375:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10374:17:2"
},
"returnParameters": {
"id": 2140,
"nodeType": "ParameterList",
"parameters": [],
"src": "10401:0:2"
},
"scope": 2147,
"src": "10351:88:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
}
],
"scope": 2148,
"src": "304:10137:2"
}
],
"src": "67:10375:2"
},
"legacyAST": {
"attributes": {
"absolutePath": "/Users/bartosz.lipinski/Workspace/wormhole/ethereum/contracts/WrappedAsset.sol",
"exportedSymbols": {
"WrappedAsset": [2147]
},
"license": "Apache 2"
},
"children": [
{
"attributes": {
"literals": ["solidity", "^", "0.6", ".0"]
},
"id": 1433,
"name": "PragmaDirective",
"src": "67:23:2"
},
{
"attributes": {
"SourceUnit": 3087,
"absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"scope": 2148,
"symbolAliases": [null],
"unitAlias": ""
},
"id": 1434,
"name": "ImportDirective",
"src": "92:56:2"
},
{
"attributes": {
"SourceUnit": 2506,
"absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
"file": "@openzeppelin/contracts/math/SafeMath.sol",
"scope": 2148,
"symbolAliases": [null],
"unitAlias": ""
},
"id": 1435,
"name": "ImportDirective",
"src": "149:51:2"
},
{
"attributes": {
"SourceUnit": 3596,
"absolutePath": "@openzeppelin/contracts/utils/Address.sol",
"file": "@openzeppelin/contracts/utils/Address.sol",
"scope": 2148,
"symbolAliases": [null],
"unitAlias": ""
},
"id": 1436,
"name": "ImportDirective",
"src": "201:51:2"
},
{
"attributes": {
"SourceUnit": 2151,
"absolutePath": "@openzeppelin/contracts/GSN/Context.sol",
"file": "@openzeppelin/contracts/GSN/Context.sol",
"scope": 2148,
"symbolAliases": [null],
"unitAlias": ""
},
"id": 1437,
"name": "ImportDirective",
"src": "253:49:2"
},
{
"attributes": {
"abstract": false,
"contractDependencies": [3086, 3618],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"linearizedBaseContracts": [2147, 3618, 3086],
"name": "WrappedAsset",
"scope": 2148
},
"children": [
{
"attributes": {
"arguments": null
},
"children": [
{
"attributes": {
"contractScope": null,
"name": "IERC20",
"referencedDeclaration": 3086,
"type": "contract IERC20"
},
"id": 1438,
"name": "UserDefinedTypeName",
"src": "329:6:2"
}
],
"id": 1439,
"name": "InheritanceSpecifier",
"src": "329:6:2"
},
{
"attributes": {
"arguments": null
},
"children": [
{
"attributes": {
"contractScope": null,
"name": "Context",
"referencedDeclaration": 3618,
"type": "contract Context"
},
"id": 1440,
"name": "UserDefinedTypeName",
"src": "337:7:2"
}
],
"id": 1441,
"name": "InheritanceSpecifier",
"src": "337:7:2"
},
{
"attributes": {
"constant": false,
"functionSelector": "026b0539",
"mutability": "mutable",
"name": "assetChain",
"overrides": null,
"scope": 2147,
"stateVariable": true,
"storageLocation": "default",
"type": "uint8",
"value": null,
"visibility": "public"
},
"children": [
{
"attributes": {
"name": "uint8",
"type": "uint8"
},
"id": 1442,
"name": "ElementaryTypeName",
"src": "351:5:2"
}
],
"id": 1443,
"name": "VariableDeclaration",
"src": "351:23:2"
},
{
"attributes": {
"constant": false,
"functionSelector": "1ba46cfd",
"mutability": "mutable",
"name": "assetAddress",
"overrides": null,
"scope": 2147,
"stateVariable": true,
"storageLocation": "default",
"type": "bytes32",
"value": null,
"visibility": "public"
},
"children": [
{
"attributes": {
"name": "bytes32",
"type": "bytes32"
},
"id": 1444,
"name": "ElementaryTypeName",
"src": "380:7:2"
}
],
"id": 1445,
"name": "VariableDeclaration",
"src": "380:27:2"
},
{
"attributes": {
"constant": false,
"functionSelector": "158ef93e",
"mutability": "mutable",
"name": "initialized",
"overrides": null,
"scope": 2147,
"stateVariable": true,
"storageLocation": "default",
"type": "bool",
"value": null,
"visibility": "public"
},
"children": [
{
"attributes": {
"name": "bool",
"type": "bool"
},
"id": 1446,
"name": "ElementaryTypeName",
"src": "413:4:2"
}
],
"id": 1447,
"name": "VariableDeclaration",
"src": "413:23:2"
},
{
"attributes": {
"constant": false,
"functionSelector": "e78cea92",
"mutability": "mutable",
"name": "bridge",
"overrides": null,
"scope": 2147,
"stateVariable": true,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "public"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1448,
"name": "ElementaryTypeName",
"src": "442:7:2"
}
],
"id": 1449,
"name": "VariableDeclaration",
"src": "442:21:2"
},
{
"attributes": {
"documentation": null,
"functionSelector": "a7a2d3fb",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "initialize",
"overrides": null,
"scope": 2147,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "_assetChain",
"overrides": null,
"scope": 1490,
"stateVariable": false,
"storageLocation": "default",
"type": "uint8",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint8",
"type": "uint8"
},
"id": 1450,
"name": "ElementaryTypeName",
"src": "490:5:2"
}
],
"id": 1451,
"name": "VariableDeclaration",
"src": "490:17:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "_assetAddress",
"overrides": null,
"scope": 1490,
"stateVariable": false,
"storageLocation": "default",
"type": "bytes32",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bytes32",
"type": "bytes32"
},
"id": 1452,
"name": "ElementaryTypeName",
"src": "509:7:2"
}
],
"id": 1453,
"name": "VariableDeclaration",
"src": "509:21:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "decimals",
"overrides": null,
"scope": 1490,
"stateVariable": false,
"storageLocation": "default",
"type": "uint8",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint8",
"type": "uint8"
},
"id": 1454,
"name": "ElementaryTypeName",
"src": "532:5:2"
}
],
"id": 1455,
"name": "VariableDeclaration",
"src": "532:14:2"
}
],
"id": 1456,
"name": "ParameterList",
"src": "489:58:2"
},
{
"attributes": {
"parameters": [null]
},
"children": [],
"id": 1457,
"name": "ParameterList",
"src": "555:0:2"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc",
"typeString": "literal_string \"already initialized\""
}
],
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"type": "function (bool,string memory) pure",
"value": "require"
},
"id": 1458,
"name": "Identifier",
"src": "565:7:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "!",
"prefix": true,
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1447,
"type": "bool",
"value": "initialized"
},
"id": 1459,
"name": "Identifier",
"src": "574:11:2"
}
],
"id": 1460,
"name": "UnaryOperation",
"src": "573:12:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "616c726561647920696e697469616c697a6564",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"already initialized\"",
"value": "already initialized"
},
"id": 1461,
"name": "Literal",
"src": "587:21:2"
}
],
"id": 1462,
"name": "FunctionCall",
"src": "565:44:2"
}
],
"id": 1463,
"name": "ExpressionStatement",
"src": "565:44:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint8"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1443,
"type": "uint8",
"value": "assetChain"
},
"id": 1464,
"name": "Identifier",
"src": "647:10:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1451,
"type": "uint8",
"value": "_assetChain"
},
"id": 1465,
"name": "Identifier",
"src": "660:11:2"
}
],
"id": 1466,
"name": "Assignment",
"src": "647:24:2"
}
],
"id": 1467,
"name": "ExpressionStatement",
"src": "647:24:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "bytes32"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1445,
"type": "bytes32",
"value": "assetAddress"
},
"id": 1468,
"name": "Identifier",
"src": "681:12:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1453,
"type": "bytes32",
"value": "_assetAddress"
},
"id": 1469,
"name": "Identifier",
"src": "696:13:2"
}
],
"id": 1470,
"name": "Assignment",
"src": "681:28:2"
}
],
"id": 1471,
"name": "ExpressionStatement",
"src": "681:28:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "address"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1449,
"type": "address",
"value": "bridge"
},
"id": 1472,
"name": "Identifier",
"src": "719:6:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sender",
"referencedDeclaration": null,
"type": "address payable"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": -15,
"type": "msg",
"value": "msg"
},
"id": 1473,
"name": "Identifier",
"src": "728:3:2"
}
],
"id": 1474,
"name": "MemberAccess",
"src": "728:10:2"
}
],
"id": 1475,
"name": "Assignment",
"src": "719:19:2"
}
],
"id": 1476,
"name": "ExpressionStatement",
"src": "719:19:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1447,
"type": "bool",
"value": "initialized"
},
"id": 1477,
"name": "Identifier",
"src": "748:11:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "74727565",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "true"
},
"id": 1478,
"name": "Literal",
"src": "762:4:2"
}
],
"id": 1479,
"name": "Assignment",
"src": "748:18:2"
}
],
"id": 1480,
"name": "ExpressionStatement",
"src": "748:18:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "string storage ref"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1552,
"type": "string storage ref",
"value": "_symbol"
},
"id": 1481,
"name": "Identifier",
"src": "777:7:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "575754",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"WWT\"",
"value": "WWT"
},
"id": 1482,
"name": "Literal",
"src": "787:5:2"
}
],
"id": 1483,
"name": "Assignment",
"src": "777:15:2"
}
],
"id": 1484,
"name": "ExpressionStatement",
"src": "777:15:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint8"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1555,
"type": "uint8",
"value": "_decimals"
},
"id": 1485,
"name": "Identifier",
"src": "802:9:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1455,
"type": "uint8",
"value": "decimals"
},
"id": 1486,
"name": "Identifier",
"src": "814:8:2"
}
],
"id": 1487,
"name": "Assignment",
"src": "802:20:2"
}
],
"id": 1488,
"name": "ExpressionStatement",
"src": "802:20:2"
}
],
"id": 1489,
"name": "Block",
"src": "555:274:2"
}
],
"id": 1490,
"name": "FunctionDefinition",
"src": "470:359:2"
},
{
"attributes": {
"documentation": null,
"functionSelector": "40c10f19",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "mint",
"overrides": null,
"scope": 2147,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "account",
"overrides": null,
"scope": 1511,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1491,
"name": "ElementaryTypeName",
"src": "849:7:2"
}
],
"id": 1492,
"name": "VariableDeclaration",
"src": "849:15:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "amount",
"overrides": null,
"scope": 1511,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 1493,
"name": "ElementaryTypeName",
"src": "866:7:2"
}
],
"id": 1494,
"name": "VariableDeclaration",
"src": "866:14:2"
}
],
"id": 1495,
"name": "ParameterList",
"src": "848:33:2"
},
{
"attributes": {
"parameters": [null]
},
"children": [],
"id": 1496,
"name": "ParameterList",
"src": "891:0:2"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_e7702acf154d2f82cc8c1dd52813f94b0a08ea733aaf89d0cac26f6b55722c5a",
"typeString": "literal_string \"mint can only be called by the bridge\""
}
],
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"type": "function (bool,string memory) pure",
"value": "require"
},
"id": 1497,
"name": "Identifier",
"src": "901:7:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "==",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sender",
"referencedDeclaration": null,
"type": "address payable"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": -15,
"type": "msg",
"value": "msg"
},
"id": 1498,
"name": "Identifier",
"src": "909:3:2"
}
],
"id": 1499,
"name": "MemberAccess",
"src": "909:10:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1449,
"type": "address",
"value": "bridge"
},
"id": 1500,
"name": "Identifier",
"src": "923:6:2"
}
],
"id": 1501,
"name": "BinaryOperation",
"src": "909:20:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "6d696e742063616e206f6e6c792062652063616c6c65642062792074686520627269646765",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"mint can only be called by the bridge\"",
"value": "mint can only be called by the bridge"
},
"id": 1502,
"name": "Literal",
"src": "931:39:2"
}
],
"id": 1503,
"name": "FunctionCall",
"src": "901:70:2"
}
],
"id": 1504,
"name": "ExpressionStatement",
"src": "901:70:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [null],
"referencedDeclaration": 2043,
"type": "function (address,uint256)",
"value": "_mint"
},
"id": 1505,
"name": "Identifier",
"src": "982:5:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1492,
"type": "address",
"value": "account"
},
"id": 1506,
"name": "Identifier",
"src": "988:7:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1494,
"type": "uint256",
"value": "amount"
},
"id": 1507,
"name": "Identifier",
"src": "997:6:2"
}
],
"id": 1508,
"name": "FunctionCall",
"src": "982:22:2"
}
],
"id": 1509,
"name": "ExpressionStatement",
"src": "982:22:2"
}
],
"id": 1510,
"name": "Block",
"src": "891:120:2"
}
],
"id": 1511,
"name": "FunctionDefinition",
"src": "835:176:2"
},
{
"attributes": {
"documentation": null,
"functionSelector": "9dc29fac",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "burn",
"overrides": null,
"scope": 2147,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "account",
"overrides": null,
"scope": 1532,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1512,
"name": "ElementaryTypeName",
"src": "1031:7:2"
}
],
"id": 1513,
"name": "VariableDeclaration",
"src": "1031:15:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "amount",
"overrides": null,
"scope": 1532,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 1514,
"name": "ElementaryTypeName",
"src": "1048:7:2"
}
],
"id": 1515,
"name": "VariableDeclaration",
"src": "1048:14:2"
}
],
"id": 1516,
"name": "ParameterList",
"src": "1030:33:2"
},
{
"attributes": {
"parameters": [null]
},
"children": [],
"id": 1517,
"name": "ParameterList",
"src": "1073:0:2"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c31242aa9df4d29364b074986b1202ec8729deca727157a31be5e2473387893b",
"typeString": "literal_string \"burn can only be called by the bridge\""
}
],
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"type": "function (bool,string memory) pure",
"value": "require"
},
"id": 1518,
"name": "Identifier",
"src": "1083:7:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "==",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sender",
"referencedDeclaration": null,
"type": "address payable"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": -15,
"type": "msg",
"value": "msg"
},
"id": 1519,
"name": "Identifier",
"src": "1091:3:2"
}
],
"id": 1520,
"name": "MemberAccess",
"src": "1091:10:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1449,
"type": "address",
"value": "bridge"
},
"id": 1521,
"name": "Identifier",
"src": "1105:6:2"
}
],
"id": 1522,
"name": "BinaryOperation",
"src": "1091:20:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "6275726e2063616e206f6e6c792062652063616c6c65642062792074686520627269646765",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"burn can only be called by the bridge\"",
"value": "burn can only be called by the bridge"
},
"id": 1523,
"name": "Literal",
"src": "1113:39:2"
}
],
"id": 1524,
"name": "FunctionCall",
"src": "1083:70:2"
}
],
"id": 1525,
"name": "ExpressionStatement",
"src": "1083:70:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [null],
"referencedDeclaration": 2090,
"type": "function (address,uint256)",
"value": "_burn"
},
"id": 1526,
"name": "Identifier",
"src": "1164:5:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1513,
"type": "address",
"value": "account"
},
"id": 1527,
"name": "Identifier",
"src": "1170:7:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1515,
"type": "uint256",
"value": "amount"
},
"id": 1528,
"name": "Identifier",
"src": "1179:6:2"
}
],
"id": 1529,
"name": "FunctionCall",
"src": "1164:22:2"
}
],
"id": 1530,
"name": "ExpressionStatement",
"src": "1164:22:2"
}
],
"id": 1531,
"name": "Block",
"src": "1073:120:2"
}
],
"id": 1532,
"name": "FunctionDefinition",
"src": "1017:176:2"
},
{
"children": [
{
"attributes": {
"contractScope": null,
"name": "SafeMath",
"referencedDeclaration": 2505,
"type": "library SafeMath"
},
"id": 1533,
"name": "UserDefinedTypeName",
"src": "1349:8:2"
},
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 1534,
"name": "ElementaryTypeName",
"src": "1362:7:2"
}
],
"id": 1535,
"name": "UsingForDirective",
"src": "1343:27:2"
},
{
"children": [
{
"attributes": {
"contractScope": null,
"name": "Address",
"referencedDeclaration": 3595,
"type": "library Address"
},
"id": 1536,
"name": "UserDefinedTypeName",
"src": "1381:7:2"
},
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1537,
"name": "ElementaryTypeName",
"src": "1393:7:2"
}
],
"id": 1538,
"name": "UsingForDirective",
"src": "1375:26:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "_balances",
"overrides": null,
"scope": 2147,
"stateVariable": true,
"storageLocation": "default",
"type": "mapping(address => uint256)",
"value": null,
"visibility": "private"
},
"children": [
{
"attributes": {
"type": "mapping(address => uint256)"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 1539,
"name": "ElementaryTypeName",
"src": "1415:7:2"
},
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 1540,
"name": "ElementaryTypeName",
"src": "1426:7:2"
}
],
"id": 1541,
"name": "Mapping",
"src": "1407:27:2"
}
],
"id": 1542,
"name": "VariableDeclaration",
"src": "1407:45:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "_allowances",
"overrides": null,
"scope": 2147,
"stateVariable": true,
"storageLocation": "default",
"type": "mapping(address => mapping(address => uint256))",
"value": null,
"visibility": "private"
},
"children": [
{
"attributes": {
"type": "mapping(address => mapping(address => uint256))"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 1543,
"name": "ElementaryTypeName",
"src": "1467:7:2"
},
{
"attributes": {
"type": "mapping(address => uint256)"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 1544,
"name": "ElementaryTypeName",
"src": "1486:7:2"
},
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 1545,
"name": "ElementaryTypeName",
"src": "1497:7:2"
}
],
"id": 1546,
"name": "Mapping",
"src": "1478:27:2"
}
],
"id": 1547,
"name": "Mapping",
"src": "1459:47:2"
}
],
"id": 1548,
"name": "VariableDeclaration",
"src": "1459:67:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "_totalSupply",
"overrides": null,
"scope": 2147,
"stateVariable": true,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "private"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 1549,
"name": "ElementaryTypeName",
"src": "1533:7:2"
}
],
"id": 1550,
"name": "VariableDeclaration",
"src": "1533:28:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "_symbol",
"overrides": null,
"scope": 2147,
"stateVariable": true,
"storageLocation": "default",
"type": "string",
"value": null,
"visibility": "private"
},
"children": [
{
"attributes": {
"name": "string",
"type": "string"
},
"id": 1551,
"name": "ElementaryTypeName",
"src": "1568:6:2"
}
],
"id": 1552,
"name": "VariableDeclaration",
"src": "1568:22:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "_decimals",
"overrides": null,
"scope": 2147,
"stateVariable": true,
"storageLocation": "default",
"type": "uint8",
"visibility": "private"
},
"children": [
{
"attributes": {
"name": "uint8",
"type": "uint8"
},
"id": 1553,
"name": "ElementaryTypeName",
"src": "1596:5:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "3138",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 18",
"value": "18"
},
"id": 1554,
"name": "Literal",
"src": "1622:2:2"
}
],
"id": 1555,
"name": "VariableDeclaration",
"src": "1596:28:2"
},
{
"attributes": {
"functionSelector": "06fdde03",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "name",
"overrides": null,
"scope": 2147,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
"children": [
{
"attributes": {
"text": " @dev Returns the name of the token."
},
"id": 1556,
"name": "StructuredDocumentation",
"src": "1631:54:2"
},
{
"attributes": {
"parameters": [null]
},
"children": [],
"id": 1557,
"name": "ParameterList",
"src": "1703:2:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"overrides": null,
"scope": 1576,
"stateVariable": false,
"storageLocation": "memory",
"type": "string",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "string",
"type": "string"
},
"id": 1558,
"name": "ElementaryTypeName",
"src": "1727:6:2"
}
],
"id": 1559,
"name": "VariableDeclaration",
"src": "1727:13:2"
}
],
"id": 1560,
"name": "ParameterList",
"src": "1726:15:2"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 1560
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "string memory",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(string storage pointer)"
},
"children": [
{
"attributes": {
"name": "string",
"type": null
},
"id": 1561,
"name": "ElementaryTypeName",
"src": "1759:6:2"
}
],
"id": 1562,
"name": "ElementaryTypeNameExpression",
"src": "1759:6:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "bytes memory",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_5cf7e3c6b428de30b95e99bd5727c04cd18c12b66cf3176e2f95b4ceb77530a8",
"typeString": "literal_string \"Wormhole Wrapped - \""
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561",
"typeString": "literal_string \"-\""
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"member_name": "encodePacked",
"referencedDeclaration": null,
"type": "function () pure returns (bytes memory)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": -1,
"type": "abi",
"value": "abi"
},
"id": 1563,
"name": "Identifier",
"src": "1766:3:2"
}
],
"id": 1564,
"name": "MemberAccess",
"src": "1766:16:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "576f726d686f6c652057726170706564202d20",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"Wormhole Wrapped - \"",
"value": "Wormhole Wrapped - "
},
"id": 1565,
"name": "Literal",
"src": "1783:21:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "string memory",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"overloadedDeclarations": [null],
"referencedDeclaration": 1654,
"type": "function (uint256) pure returns (string memory)",
"value": "uintToString"
},
"id": 1566,
"name": "Identifier",
"src": "1806:12:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1443,
"type": "uint8",
"value": "assetChain"
},
"id": 1567,
"name": "Identifier",
"src": "1819:10:2"
}
],
"id": 1568,
"name": "FunctionCall",
"src": "1806:24:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "2d",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"-\"",
"value": "-"
},
"id": 1569,
"name": "Literal",
"src": "1832:3:2"
},
{
"attributes": {
"argumentTypes": null,
"arguments": [null],
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "string memory",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [null],
"overloadedDeclarations": [null],
"referencedDeclaration": 1740,
"type": "function () view returns (string memory)",
"value": "assetAddressString"
},
"id": 1570,
"name": "Identifier",
"src": "1837:18:2"
}
],
"id": 1571,
"name": "FunctionCall",
"src": "1837:20:2"
}
],
"id": 1572,
"name": "FunctionCall",
"src": "1766:92:2"
}
],
"id": 1573,
"name": "FunctionCall",
"src": "1759:100:2"
}
],
"id": 1574,
"name": "Return",
"src": "1752:107:2"
}
],
"id": 1575,
"name": "Block",
"src": "1742:124:2"
}
],
"id": 1576,
"name": "FunctionDefinition",
"src": "1690:176:2"
},
{
"attributes": {
"documentation": null,
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "uintToString",
"overrides": null,
"scope": 2147,
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "_i",
"overrides": null,
"scope": 1654,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint",
"type": "uint256"
},
"id": 1577,
"name": "ElementaryTypeName",
"src": "1944:4:2"
}
],
"id": 1578,
"name": "VariableDeclaration",
"src": "1944:7:2"
}
],
"id": 1579,
"name": "ParameterList",
"src": "1943:9:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "_uintAsString",
"overrides": null,
"scope": 1654,
"stateVariable": false,
"storageLocation": "memory",
"type": "string",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "string",
"type": "string"
},
"id": 1580,
"name": "ElementaryTypeName",
"src": "1976:6:2"
}
],
"id": 1581,
"name": "VariableDeclaration",
"src": "1976:27:2"
}
],
"id": 1582,
"name": "ParameterList",
"src": "1975:29:2"
},
{
"children": [
{
"attributes": {
"falseBody": null
},
"children": [
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "==",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1578,
"type": "uint256",
"value": "_i"
},
"id": 1583,
"name": "Identifier",
"src": "2019:2:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 0",
"value": "0"
},
"id": 1584,
"name": "Literal",
"src": "2025:1:2"
}
],
"id": 1585,
"name": "BinaryOperation",
"src": "2019:7:2"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 1582
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"0\"",
"value": "0"
},
"id": 1586,
"name": "Literal",
"src": "2049:3:2"
}
],
"id": 1587,
"name": "Return",
"src": "2042:10:2"
}
],
"id": 1588,
"name": "Block",
"src": "2028:35:2"
}
],
"id": 1589,
"name": "IfStatement",
"src": "2015:48:2"
},
{
"attributes": {
"assignments": [1591]
},
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "j",
"overrides": null,
"scope": 1653,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint",
"type": "uint256"
},
"id": 1590,
"name": "ElementaryTypeName",
"src": "2072:4:2"
}
],
"id": 1591,
"name": "VariableDeclaration",
"src": "2072:6:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1578,
"type": "uint256",
"value": "_i"
},
"id": 1592,
"name": "Identifier",
"src": "2081:2:2"
}
],
"id": 1593,
"name": "VariableDeclarationStatement",
"src": "2072:11:2"
},
{
"attributes": {
"assignments": [1595],
"initialValue": null
},
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "len",
"overrides": null,
"scope": 1653,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint",
"type": "uint256"
},
"id": 1594,
"name": "ElementaryTypeName",
"src": "2093:4:2"
}
],
"id": 1595,
"name": "VariableDeclaration",
"src": "2093:8:2"
}
],
"id": 1596,
"name": "VariableDeclarationStatement",
"src": "2093:8:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "!=",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1591,
"type": "uint256",
"value": "j"
},
"id": 1597,
"name": "Identifier",
"src": "2118:1:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 0",
"value": "0"
},
"id": 1598,
"name": "Literal",
"src": "2123:1:2"
}
],
"id": 1599,
"name": "BinaryOperation",
"src": "2118:6:2"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "++",
"prefix": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1595,
"type": "uint256",
"value": "len"
},
"id": 1600,
"name": "Identifier",
"src": "2140:3:2"
}
],
"id": 1601,
"name": "UnaryOperation",
"src": "2140:5:2"
}
],
"id": 1602,
"name": "ExpressionStatement",
"src": "2140:5:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "/=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1591,
"type": "uint256",
"value": "j"
},
"id": 1603,
"name": "Identifier",
"src": "2159:1:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "3130",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 10",
"value": "10"
},
"id": 1604,
"name": "Literal",
"src": "2164:2:2"
}
],
"id": 1605,
"name": "Assignment",
"src": "2159:7:2"
}
],
"id": 1606,
"name": "ExpressionStatement",
"src": "2159:7:2"
}
],
"id": 1607,
"name": "Block",
"src": "2126:51:2"
}
],
"id": 1608,
"name": "WhileStatement",
"src": "2111:66:2"
},
{
"attributes": {
"assignments": [1610]
},
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "bstr",
"overrides": null,
"scope": 1653,
"stateVariable": false,
"storageLocation": "memory",
"type": "bytes",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bytes",
"type": "bytes"
},
"id": 1609,
"name": "ElementaryTypeName",
"src": "2186:5:2"
}
],
"id": 1610,
"name": "VariableDeclaration",
"src": "2186:17:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "bytes memory",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "function (uint256) pure returns (bytes memory)"
},
"children": [
{
"attributes": {
"name": "bytes",
"type": "bytes"
},
"id": 1611,
"name": "ElementaryTypeName",
"src": "2210:5:2"
}
],
"id": 1612,
"name": "NewExpression",
"src": "2206:9:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1595,
"type": "uint256",
"value": "len"
},
"id": 1613,
"name": "Identifier",
"src": "2216:3:2"
}
],
"id": 1614,
"name": "FunctionCall",
"src": "2206:14:2"
}
],
"id": 1615,
"name": "VariableDeclarationStatement",
"src": "2186:34:2"
},
{
"attributes": {
"assignments": [1617]
},
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "k",
"overrides": null,
"scope": 1653,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint",
"type": "uint256"
},
"id": 1616,
"name": "ElementaryTypeName",
"src": "2230:4:2"
}
],
"id": 1617,
"name": "VariableDeclaration",
"src": "2230:6:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "-",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1595,
"type": "uint256",
"value": "len"
},
"id": 1618,
"name": "Identifier",
"src": "2239:3:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "31",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 1",
"value": "1"
},
"id": 1619,
"name": "Literal",
"src": "2245:1:2"
}
],
"id": 1620,
"name": "BinaryOperation",
"src": "2239:7:2"
}
],
"id": 1621,
"name": "VariableDeclarationStatement",
"src": "2230:16:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "!=",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1578,
"type": "uint256",
"value": "_i"
},
"id": 1622,
"name": "Identifier",
"src": "2263:2:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 0",
"value": "0"
},
"id": 1623,
"name": "Literal",
"src": "2269:1:2"
}
],
"id": 1624,
"name": "BinaryOperation",
"src": "2263:7:2"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "bytes1"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "bytes1"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1610,
"type": "bytes memory",
"value": "bstr"
},
"id": 1625,
"name": "Identifier",
"src": "2286:4:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "--",
"prefix": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1617,
"type": "uint256",
"value": "k"
},
"id": 1626,
"name": "Identifier",
"src": "2291:1:2"
}
],
"id": 1627,
"name": "UnaryOperation",
"src": "2291:3:2"
}
],
"id": 1628,
"name": "IndexAccess",
"src": "2286:9:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "bytes1",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(bytes1)"
},
"children": [
{
"attributes": {
"name": "byte",
"type": null
},
"id": 1629,
"name": "ElementaryTypeName",
"src": "2298:4:2"
}
],
"id": 1630,
"name": "ElementaryTypeNameExpression",
"src": "2298:4:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "uint8",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(uint8)"
},
"children": [
{
"attributes": {
"name": "uint8",
"type": null
},
"id": 1631,
"name": "ElementaryTypeName",
"src": "2303:5:2"
}
],
"id": 1632,
"name": "ElementaryTypeNameExpression",
"src": "2303:5:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "+",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "3438",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 48",
"value": "48"
},
"id": 1633,
"name": "Literal",
"src": "2309:2:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "%",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1578,
"type": "uint256",
"value": "_i"
},
"id": 1634,
"name": "Identifier",
"src": "2314:2:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "3130",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 10",
"value": "10"
},
"id": 1635,
"name": "Literal",
"src": "2319:2:2"
}
],
"id": 1636,
"name": "BinaryOperation",
"src": "2314:7:2"
}
],
"id": 1637,
"name": "BinaryOperation",
"src": "2309:12:2"
}
],
"id": 1638,
"name": "FunctionCall",
"src": "2303:19:2"
}
],
"id": 1639,
"name": "FunctionCall",
"src": "2298:25:2"
}
],
"id": 1640,
"name": "Assignment",
"src": "2286:37:2"
}
],
"id": 1641,
"name": "ExpressionStatement",
"src": "2286:37:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "/=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1578,
"type": "uint256",
"value": "_i"
},
"id": 1642,
"name": "Identifier",
"src": "2337:2:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "3130",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 10",
"value": "10"
},
"id": 1643,
"name": "Literal",
"src": "2343:2:2"
}
],
"id": 1644,
"name": "Assignment",
"src": "2337:8:2"
}
],
"id": 1645,
"name": "ExpressionStatement",
"src": "2337:8:2"
}
],
"id": 1646,
"name": "Block",
"src": "2272:84:2"
}
],
"id": 1647,
"name": "WhileStatement",
"src": "2256:100:2"
},
{
"attributes": {
"functionReturnParameters": 1582
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "string memory",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(string storage pointer)"
},
"children": [
{
"attributes": {
"name": "string",
"type": null
},
"id": 1648,
"name": "ElementaryTypeName",
"src": "2372:6:2"
}
],
"id": 1649,
"name": "ElementaryTypeNameExpression",
"src": "2372:6:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1610,
"type": "bytes memory",
"value": "bstr"
},
"id": 1650,
"name": "Identifier",
"src": "2379:4:2"
}
],
"id": 1651,
"name": "FunctionCall",
"src": "2372:12:2"
}
],
"id": 1652,
"name": "Return",
"src": "2365:19:2"
}
],
"id": 1653,
"name": "Block",
"src": "2005:386:2"
}
],
"id": 1654,
"name": "FunctionDefinition",
"src": "1922:469:2"
},
{
"attributes": {
"documentation": null,
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "assetAddressString",
"overrides": null,
"scope": 2147,
"stateMutability": "view",
"virtual": false,
"visibility": "private"
},
"children": [
{
"attributes": {
"parameters": [null]
},
"children": [],
"id": 1655,
"name": "ParameterList",
"src": "2474:2:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"overrides": null,
"scope": 1740,
"stateVariable": false,
"storageLocation": "memory",
"type": "string",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "string",
"type": "string"
},
"id": 1656,
"name": "ElementaryTypeName",
"src": "2499:6:2"
}
],
"id": 1657,
"name": "VariableDeclaration",
"src": "2499:13:2"
}
],
"id": 1658,
"name": "ParameterList",
"src": "2498:15:2"
},
{
"children": [
{
"attributes": {
"assignments": [1660]
},
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "alphabet",
"overrides": null,
"scope": 1739,
"stateVariable": false,
"storageLocation": "memory",
"type": "bytes",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bytes",
"type": "bytes"
},
"id": 1659,
"name": "ElementaryTypeName",
"src": "2524:5:2"
}
],
"id": 1660,
"name": "VariableDeclaration",
"src": "2524:21:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30313233343536373839616263646566",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"0123456789abcdef\"",
"value": "0123456789abcdef"
},
"id": 1661,
"name": "Literal",
"src": "2548:18:2"
}
],
"id": 1662,
"name": "VariableDeclarationStatement",
"src": "2524:42:2"
},
{
"attributes": {
"assignments": [1664]
},
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "data",
"overrides": null,
"scope": 1739,
"stateVariable": false,
"storageLocation": "default",
"type": "bytes32",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bytes32",
"type": "bytes32"
},
"id": 1663,
"name": "ElementaryTypeName",
"src": "2576:7:2"
}
],
"id": 1664,
"name": "VariableDeclaration",
"src": "2576:12:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1445,
"type": "bytes32",
"value": "assetAddress"
},
"id": 1665,
"name": "Identifier",
"src": "2591:12:2"
}
],
"id": 1666,
"name": "VariableDeclarationStatement",
"src": "2576:27:2"
},
{
"attributes": {
"assignments": [1668]
},
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "str",
"overrides": null,
"scope": 1739,
"stateVariable": false,
"storageLocation": "memory",
"type": "bytes",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bytes",
"type": "bytes"
},
"id": 1667,
"name": "ElementaryTypeName",
"src": "2614:5:2"
}
],
"id": 1668,
"name": "VariableDeclaration",
"src": "2614:16:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "bytes memory",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "function (uint256) pure returns (bytes memory)"
},
"children": [
{
"attributes": {
"name": "bytes",
"type": "bytes"
},
"id": 1669,
"name": "ElementaryTypeName",
"src": "2637:5:2"
}
],
"id": 1670,
"name": "NewExpression",
"src": "2633:9:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "+",
"type": "uint8"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "32",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 2",
"value": "2"
},
"id": 1671,
"name": "Literal",
"src": "2643:1:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "*",
"type": "uint8"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "length",
"referencedDeclaration": null,
"type": "uint8"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1664,
"type": "bytes32",
"value": "data"
},
"id": 1672,
"name": "Identifier",
"src": "2647:4:2"
}
],
"id": 1673,
"name": "MemberAccess",
"src": "2647:11:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "32",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 2",
"value": "2"
},
"id": 1674,
"name": "Literal",
"src": "2661:1:2"
}
],
"id": 1675,
"name": "BinaryOperation",
"src": "2647:15:2"
}
],
"id": 1676,
"name": "BinaryOperation",
"src": "2643:19:2"
}
],
"id": 1677,
"name": "FunctionCall",
"src": "2633:30:2"
}
],
"id": 1678,
"name": "VariableDeclarationStatement",
"src": "2614:49:2"
},
{
"children": [
{
"attributes": {
"assignments": [1680]
},
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "i",
"overrides": null,
"scope": 1733,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint",
"type": "uint256"
},
"id": 1679,
"name": "ElementaryTypeName",
"src": "2678:4:2"
}
],
"id": 1680,
"name": "VariableDeclaration",
"src": "2678:6:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 0",
"value": "0"
},
"id": 1681,
"name": "Literal",
"src": "2687:1:2"
}
],
"id": 1682,
"name": "VariableDeclarationStatement",
"src": "2678:10:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "<",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1680,
"type": "uint256",
"value": "i"
},
"id": 1683,
"name": "Identifier",
"src": "2690:1:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "length",
"referencedDeclaration": null,
"type": "uint8"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1664,
"type": "bytes32",
"value": "data"
},
"id": 1684,
"name": "Identifier",
"src": "2694:4:2"
}
],
"id": 1685,
"name": "MemberAccess",
"src": "2694:11:2"
}
],
"id": 1686,
"name": "BinaryOperation",
"src": "2690:15:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "++",
"prefix": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1680,
"type": "uint256",
"value": "i"
},
"id": 1687,
"name": "Identifier",
"src": "2707:1:2"
}
],
"id": 1688,
"name": "UnaryOperation",
"src": "2707:3:2"
}
],
"id": 1689,
"name": "ExpressionStatement",
"src": "2707:3:2"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "bytes1"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "bytes1"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1668,
"type": "bytes memory",
"value": "str"
},
"id": 1690,
"name": "Identifier",
"src": "2726:3:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "*",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1680,
"type": "uint256",
"value": "i"
},
"id": 1691,
"name": "Identifier",
"src": "2730:1:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "32",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 2",
"value": "2"
},
"id": 1692,
"name": "Literal",
"src": "2734:1:2"
}
],
"id": 1693,
"name": "BinaryOperation",
"src": "2730:5:2"
}
],
"id": 1694,
"name": "IndexAccess",
"src": "2726:10:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "bytes1"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1660,
"type": "bytes memory",
"value": "alphabet"
},
"id": 1695,
"name": "Identifier",
"src": "2739:8:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "uint256",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(uint256)"
},
"children": [
{
"attributes": {
"name": "uint",
"type": null
},
"id": 1696,
"name": "ElementaryTypeName",
"src": "2748:4:2"
}
],
"id": 1697,
"name": "ElementaryTypeNameExpression",
"src": "2748:4:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "uint8",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(uint8)"
},
"children": [
{
"attributes": {
"name": "uint8",
"type": null
},
"id": 1698,
"name": "ElementaryTypeName",
"src": "2753:5:2"
}
],
"id": 1699,
"name": "ElementaryTypeNameExpression",
"src": "2753:5:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": ">>",
"type": "bytes1"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"type": "bytes1"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1664,
"type": "bytes32",
"value": "data"
},
"id": 1700,
"name": "Identifier",
"src": "2759:4:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1680,
"type": "uint256",
"value": "i"
},
"id": 1701,
"name": "Identifier",
"src": "2764:1:2"
}
],
"id": 1702,
"name": "IndexAccess",
"src": "2759:7:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "34",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 4",
"value": "4"
},
"id": 1703,
"name": "Literal",
"src": "2770:1:2"
}
],
"id": 1704,
"name": "BinaryOperation",
"src": "2759:12:2"
}
],
"id": 1705,
"name": "FunctionCall",
"src": "2753:19:2"
}
],
"id": 1706,
"name": "FunctionCall",
"src": "2748:25:2"
}
],
"id": 1707,
"name": "IndexAccess",
"src": "2739:35:2"
}
],
"id": 1708,
"name": "Assignment",
"src": "2726:48:2"
}
],
"id": 1709,
"name": "ExpressionStatement",
"src": "2726:48:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "bytes1"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "bytes1"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1668,
"type": "bytes memory",
"value": "str"
},
"id": 1710,
"name": "Identifier",
"src": "2788:3:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "+",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "31",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 1",
"value": "1"
},
"id": 1711,
"name": "Literal",
"src": "2792:1:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "*",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1680,
"type": "uint256",
"value": "i"
},
"id": 1712,
"name": "Identifier",
"src": "2796:1:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "32",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 2",
"value": "2"
},
"id": 1713,
"name": "Literal",
"src": "2800:1:2"
}
],
"id": 1714,
"name": "BinaryOperation",
"src": "2796:5:2"
}
],
"id": 1715,
"name": "BinaryOperation",
"src": "2792:9:2"
}
],
"id": 1716,
"name": "IndexAccess",
"src": "2788:14:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "bytes1"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1660,
"type": "bytes memory",
"value": "alphabet"
},
"id": 1717,
"name": "Identifier",
"src": "2805:8:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "uint256",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(uint256)"
},
"children": [
{
"attributes": {
"name": "uint",
"type": null
},
"id": 1718,
"name": "ElementaryTypeName",
"src": "2814:4:2"
}
],
"id": 1719,
"name": "ElementaryTypeNameExpression",
"src": "2814:4:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "uint8",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(uint8)"
},
"children": [
{
"attributes": {
"name": "uint8",
"type": null
},
"id": 1720,
"name": "ElementaryTypeName",
"src": "2819:5:2"
}
],
"id": 1721,
"name": "ElementaryTypeNameExpression",
"src": "2819:5:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "&",
"type": "bytes1"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"type": "bytes1"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1664,
"type": "bytes32",
"value": "data"
},
"id": 1722,
"name": "Identifier",
"src": "2825:4:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 1680,
"type": "uint256",
"value": "i"
},
"id": 1723,
"name": "Identifier",
"src": "2830:1:2"
}
],
"id": 1724,
"name": "IndexAccess",
"src": "2825:7:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30783066",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 15",
"value": "0x0f"
},
"id": 1725,
"name": "Literal",
"src": "2835:4:2"
}
],
"id": 1726,
"name": "BinaryOperation",
"src": "2825:14:2"
}
],
"id": 1727,
"name": "FunctionCall",
"src": "2819:21:2"
}
],
"id": 1728,
"name": "FunctionCall",
"src": "2814:27:2"
}
],
"id": 1729,
"name": "IndexAccess",
"src": "2805:37:2"
}
],
"id": 1730,
"name": "Assignment",
"src": "2788:54:2"
}
],
"id": 1731,
"name": "ExpressionStatement",
"src": "2788:54:2"
}
],
"id": 1732,
"name": "Block",
"src": "2712:141:2"
}
],
"id": 1733,
"name": "ForStatement",
"src": "2673:180:2"
},
{
"attributes": {
"functionReturnParameters": 1658
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "string memory",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(string storage pointer)"
},
"children": [
{
"attributes": {
"name": "string",
"type": null
},
"id": 1734,
"name": "ElementaryTypeName",
"src": "2869:6:2"
}
],
"id": 1735,
"name": "ElementaryTypeNameExpression",
"src": "2869:6:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1668,
"type": "bytes memory",
"value": "str"
},
"id": 1736,
"name": "Identifier",
"src": "2876:3:2"
}
],
"id": 1737,
"name": "FunctionCall",
"src": "2869:11:2"
}
],
"id": 1738,
"name": "Return",
"src": "2862:18:2"
}
],
"id": 1739,
"name": "Block",
"src": "2514:373:2"
}
],
"id": 1740,
"name": "FunctionDefinition",
"src": "2447:440:2"
},
{
"attributes": {
"functionSelector": "95d89b41",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "symbol",
"overrides": null,
"scope": 2147,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
"children": [
{
"attributes": {
"text": " @dev Returns the symbol of the token, usually a shorter version of the\n name."
},
"id": 1741,
"name": "StructuredDocumentation",
"src": "2893:102:2"
},
{
"attributes": {
"parameters": [null]
},
"children": [],
"id": 1742,
"name": "ParameterList",
"src": "3015:2:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"overrides": null,
"scope": 1749,
"stateVariable": false,
"storageLocation": "memory",
"type": "string",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "string",
"type": "string"
},
"id": 1743,
"name": "ElementaryTypeName",
"src": "3039:6:2"
}
],
"id": 1744,
"name": "VariableDeclaration",
"src": "3039:13:2"
}
],
"id": 1745,
"name": "ParameterList",
"src": "3038:15:2"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 1745
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1552,
"type": "string storage ref",
"value": "_symbol"
},
"id": 1746,
"name": "Identifier",
"src": "3071:7:2"
}
],
"id": 1747,
"name": "Return",
"src": "3064:14:2"
}
],
"id": 1748,
"name": "Block",
"src": "3054:31:2"
}
],
"id": 1749,
"name": "FunctionDefinition",
"src": "3000:85:2"
},
{
"attributes": {
"functionSelector": "313ce567",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "decimals",
"overrides": null,
"scope": 2147,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
"children": [
{
"attributes": {
"text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."
},
"id": 1750,
"name": "StructuredDocumentation",
"src": "3091:612:2"
},
{
"attributes": {
"parameters": [null]
},
"children": [],
"id": 1751,
"name": "ParameterList",
"src": "3725:2:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"overrides": null,
"scope": 1758,
"stateVariable": false,
"storageLocation": "default",
"type": "uint8",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint8",
"type": "uint8"
},
"id": 1752,
"name": "ElementaryTypeName",
"src": "3749:5:2"
}
],
"id": 1753,
"name": "VariableDeclaration",
"src": "3749:5:2"
}
],
"id": 1754,
"name": "ParameterList",
"src": "3748:7:2"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 1754
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1555,
"type": "uint8",
"value": "_decimals"
},
"id": 1755,
"name": "Identifier",
"src": "3773:9:2"
}
],
"id": 1756,
"name": "Return",
"src": "3766:16:2"
}
],
"id": 1757,
"name": "Block",
"src": "3756:33:2"
}
],
"id": 1758,
"name": "FunctionDefinition",
"src": "3708:81:2"
},
{
"attributes": {
"baseFunctions": [3017],
"functionSelector": "18160ddd",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "totalSupply",
"scope": 2147,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
"children": [
{
"attributes": {
"text": " @dev See {IERC20-totalSupply}."
},
"id": 1759,
"name": "StructuredDocumentation",
"src": "3795:49:2"
},
{
"attributes": {
"overrides": [null]
},
"id": 1761,
"name": "OverrideSpecifier",
"src": "3884:8:2"
},
{
"attributes": {
"parameters": [null]
},
"children": [],
"id": 1760,
"name": "ParameterList",
"src": "3869:2:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"overrides": null,
"scope": 1768,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 1762,
"name": "ElementaryTypeName",
"src": "3902:7:2"
}
],
"id": 1763,
"name": "VariableDeclaration",
"src": "3902:7:2"
}
],
"id": 1764,
"name": "ParameterList",
"src": "3901:9:2"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 1764
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1550,
"type": "uint256",
"value": "_totalSupply"
},
"id": 1765,
"name": "Identifier",
"src": "3928:12:2"
}
],
"id": 1766,
"name": "Return",
"src": "3921:19:2"
}
],
"id": 1767,
"name": "Block",
"src": "3911:36:2"
}
],
"id": 1768,
"name": "FunctionDefinition",
"src": "3849:98:2"
},
{
"attributes": {
"baseFunctions": [3025],
"functionSelector": "70a08231",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "balanceOf",
"scope": 2147,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
"children": [
{
"attributes": {
"text": " @dev See {IERC20-balanceOf}."
},
"id": 1769,
"name": "StructuredDocumentation",
"src": "3953:47:2"
},
{
"attributes": {
"overrides": [null]
},
"id": 1773,
"name": "OverrideSpecifier",
"src": "4053:8:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "account",
"overrides": null,
"scope": 1782,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1770,
"name": "ElementaryTypeName",
"src": "4024:7:2"
}
],
"id": 1771,
"name": "VariableDeclaration",
"src": "4024:15:2"
}
],
"id": 1772,
"name": "ParameterList",
"src": "4023:17:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"overrides": null,
"scope": 1782,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 1774,
"name": "ElementaryTypeName",
"src": "4071:7:2"
}
],
"id": 1775,
"name": "VariableDeclaration",
"src": "4071:7:2"
}
],
"id": 1776,
"name": "ParameterList",
"src": "4070:9:2"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 1776
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1542,
"type": "mapping(address => uint256)",
"value": "_balances"
},
"id": 1777,
"name": "Identifier",
"src": "4097:9:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1771,
"type": "address",
"value": "account"
},
"id": 1778,
"name": "Identifier",
"src": "4107:7:2"
}
],
"id": 1779,
"name": "IndexAccess",
"src": "4097:18:2"
}
],
"id": 1780,
"name": "Return",
"src": "4090:25:2"
}
],
"id": 1781,
"name": "Block",
"src": "4080:42:2"
}
],
"id": 1782,
"name": "FunctionDefinition",
"src": "4005:117:2"
},
{
"attributes": {
"baseFunctions": [3035],
"functionSelector": "a9059cbb",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "transfer",
"scope": 2147,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
"children": [
{
"attributes": {
"text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`."
},
"id": 1783,
"name": "StructuredDocumentation",
"src": "4128:192:2"
},
{
"attributes": {
"overrides": [null]
},
"id": 1789,
"name": "OverrideSpecifier",
"src": "4385:8:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "recipient",
"overrides": null,
"scope": 1803,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1784,
"name": "ElementaryTypeName",
"src": "4343:7:2"
}
],
"id": 1785,
"name": "VariableDeclaration",
"src": "4343:17:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "amount",
"overrides": null,
"scope": 1803,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 1786,
"name": "ElementaryTypeName",
"src": "4362:7:2"
}
],
"id": 1787,
"name": "VariableDeclaration",
"src": "4362:14:2"
}
],
"id": 1788,
"name": "ParameterList",
"src": "4342:35:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"overrides": null,
"scope": 1803,
"stateVariable": false,
"storageLocation": "default",
"type": "bool",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bool",
"type": "bool"
},
"id": 1790,
"name": "ElementaryTypeName",
"src": "4403:4:2"
}
],
"id": 1791,
"name": "VariableDeclaration",
"src": "4403:4:2"
}
],
"id": 1792,
"name": "ParameterList",
"src": "4402:6:2"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [null],
"referencedDeclaration": 1997,
"type": "function (address,address,uint256)",
"value": "_transfer"
},
"id": 1793,
"name": "Identifier",
"src": "4419:9:2"
},
{
"attributes": {
"argumentTypes": null,
"arguments": [null],
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "address payable",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [null],
"overloadedDeclarations": [null],
"referencedDeclaration": 3606,
"type": "function () view returns (address payable)",
"value": "_msgSender"
},
"id": 1794,
"name": "Identifier",
"src": "4429:10:2"
}
],
"id": 1795,
"name": "FunctionCall",
"src": "4429:12:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1785,
"type": "address",
"value": "recipient"
},
"id": 1796,
"name": "Identifier",
"src": "4443:9:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1787,
"type": "uint256",
"value": "amount"
},
"id": 1797,
"name": "Identifier",
"src": "4454:6:2"
}
],
"id": 1798,
"name": "FunctionCall",
"src": "4419:42:2"
}
],
"id": 1799,
"name": "ExpressionStatement",
"src": "4419:42:2"
},
{
"attributes": {
"functionReturnParameters": 1792
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "74727565",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "true"
},
"id": 1800,
"name": "Literal",
"src": "4478:4:2"
}
],
"id": 1801,
"name": "Return",
"src": "4471:11:2"
}
],
"id": 1802,
"name": "Block",
"src": "4409:80:2"
}
],
"id": 1803,
"name": "FunctionDefinition",
"src": "4325:164:2"
},
{
"attributes": {
"baseFunctions": [3045],
"functionSelector": "dd62ed3e",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "allowance",
"scope": 2147,
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
"children": [
{
"attributes": {
"text": " @dev See {IERC20-allowance}."
},
"id": 1804,
"name": "StructuredDocumentation",
"src": "4495:47:2"
},
{
"attributes": {
"overrides": [null]
},
"id": 1810,
"name": "OverrideSpecifier",
"src": "4610:8:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "owner",
"overrides": null,
"scope": 1821,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1805,
"name": "ElementaryTypeName",
"src": "4566:7:2"
}
],
"id": 1806,
"name": "VariableDeclaration",
"src": "4566:13:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "spender",
"overrides": null,
"scope": 1821,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1807,
"name": "ElementaryTypeName",
"src": "4581:7:2"
}
],
"id": 1808,
"name": "VariableDeclaration",
"src": "4581:15:2"
}
],
"id": 1809,
"name": "ParameterList",
"src": "4565:32:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"overrides": null,
"scope": 1821,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 1811,
"name": "ElementaryTypeName",
"src": "4628:7:2"
}
],
"id": 1812,
"name": "VariableDeclaration",
"src": "4628:7:2"
}
],
"id": 1813,
"name": "ParameterList",
"src": "4627:9:2"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 1813
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "mapping(address => uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1548,
"type": "mapping(address => mapping(address => uint256))",
"value": "_allowances"
},
"id": 1814,
"name": "Identifier",
"src": "4654:11:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1806,
"type": "address",
"value": "owner"
},
"id": 1815,
"name": "Identifier",
"src": "4666:5:2"
}
],
"id": 1816,
"name": "IndexAccess",
"src": "4654:18:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1808,
"type": "address",
"value": "spender"
},
"id": 1817,
"name": "Identifier",
"src": "4673:7:2"
}
],
"id": 1818,
"name": "IndexAccess",
"src": "4654:27:2"
}
],
"id": 1819,
"name": "Return",
"src": "4647:34:2"
}
],
"id": 1820,
"name": "Block",
"src": "4637:51:2"
}
],
"id": 1821,
"name": "FunctionDefinition",
"src": "4547:141:2"
},
{
"attributes": {
"baseFunctions": [3055],
"functionSelector": "095ea7b3",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "approve",
"scope": 2147,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
"children": [
{
"attributes": {
"text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address."
},
"id": 1822,
"name": "StructuredDocumentation",
"src": "4694:127:2"
},
{
"attributes": {
"overrides": [null]
},
"id": 1828,
"name": "OverrideSpecifier",
"src": "4883:8:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "spender",
"overrides": null,
"scope": 1842,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1823,
"name": "ElementaryTypeName",
"src": "4843:7:2"
}
],
"id": 1824,
"name": "VariableDeclaration",
"src": "4843:15:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "amount",
"overrides": null,
"scope": 1842,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 1825,
"name": "ElementaryTypeName",
"src": "4860:7:2"
}
],
"id": 1826,
"name": "VariableDeclaration",
"src": "4860:14:2"
}
],
"id": 1827,
"name": "ParameterList",
"src": "4842:33:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"overrides": null,
"scope": 1842,
"stateVariable": false,
"storageLocation": "default",
"type": "bool",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bool",
"type": "bool"
},
"id": 1829,
"name": "ElementaryTypeName",
"src": "4901:4:2"
}
],
"id": 1830,
"name": "VariableDeclaration",
"src": "4901:4:2"
}
],
"id": 1831,
"name": "ParameterList",
"src": "4900:6:2"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [null],
"referencedDeclaration": 2135,
"type": "function (address,address,uint256)",
"value": "_approve"
},
"id": 1832,
"name": "Identifier",
"src": "4917:8:2"
},
{
"attributes": {
"argumentTypes": null,
"arguments": [null],
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "address payable",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [null],
"overloadedDeclarations": [null],
"referencedDeclaration": 3606,
"type": "function () view returns (address payable)",
"value": "_msgSender"
},
"id": 1833,
"name": "Identifier",
"src": "4926:10:2"
}
],
"id": 1834,
"name": "FunctionCall",
"src": "4926:12:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1824,
"type": "address",
"value": "spender"
},
"id": 1835,
"name": "Identifier",
"src": "4940:7:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1826,
"type": "uint256",
"value": "amount"
},
"id": 1836,
"name": "Identifier",
"src": "4949:6:2"
}
],
"id": 1837,
"name": "FunctionCall",
"src": "4917:39:2"
}
],
"id": 1838,
"name": "ExpressionStatement",
"src": "4917:39:2"
},
{
"attributes": {
"functionReturnParameters": 1831
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "74727565",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "true"
},
"id": 1839,
"name": "Literal",
"src": "4973:4:2"
}
],
"id": 1840,
"name": "Return",
"src": "4966:11:2"
}
],
"id": 1841,
"name": "Block",
"src": "4907:77:2"
}
],
"id": 1842,
"name": "FunctionDefinition",
"src": "4826:158:2"
},
{
"attributes": {
"baseFunctions": [3067],
"functionSelector": "23b872dd",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "transferFrom",
"scope": 2147,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
"children": [
{
"attributes": {
"text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20};\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`."
},
"id": 1843,
"name": "StructuredDocumentation",
"src": "4990:449:2"
},
{
"attributes": {
"overrides": [null]
},
"id": 1851,
"name": "OverrideSpecifier",
"src": "5524:8:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "sender",
"overrides": null,
"scope": 1880,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1844,
"name": "ElementaryTypeName",
"src": "5466:7:2"
}
],
"id": 1845,
"name": "VariableDeclaration",
"src": "5466:14:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "recipient",
"overrides": null,
"scope": 1880,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1846,
"name": "ElementaryTypeName",
"src": "5482:7:2"
}
],
"id": 1847,
"name": "VariableDeclaration",
"src": "5482:17:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "amount",
"overrides": null,
"scope": 1880,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 1848,
"name": "ElementaryTypeName",
"src": "5501:7:2"
}
],
"id": 1849,
"name": "VariableDeclaration",
"src": "5501:14:2"
}
],
"id": 1850,
"name": "ParameterList",
"src": "5465:51:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"overrides": null,
"scope": 1880,
"stateVariable": false,
"storageLocation": "default",
"type": "bool",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bool",
"type": "bool"
},
"id": 1852,
"name": "ElementaryTypeName",
"src": "5542:4:2"
}
],
"id": 1853,
"name": "VariableDeclaration",
"src": "5542:4:2"
}
],
"id": 1854,
"name": "ParameterList",
"src": "5541:6:2"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [null],
"referencedDeclaration": 1997,
"type": "function (address,address,uint256)",
"value": "_transfer"
},
"id": 1855,
"name": "Identifier",
"src": "5558:9:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1845,
"type": "address",
"value": "sender"
},
"id": 1856,
"name": "Identifier",
"src": "5568:6:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1847,
"type": "address",
"value": "recipient"
},
"id": 1857,
"name": "Identifier",
"src": "5576:9:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1849,
"type": "uint256",
"value": "amount"
},
"id": 1858,
"name": "Identifier",
"src": "5587:6:2"
}
],
"id": 1859,
"name": "FunctionCall",
"src": "5558:36:2"
}
],
"id": 1860,
"name": "ExpressionStatement",
"src": "5558:36:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [null],
"referencedDeclaration": 2135,
"type": "function (address,address,uint256)",
"value": "_approve"
},
"id": 1861,
"name": "Identifier",
"src": "5604:8:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1845,
"type": "address",
"value": "sender"
},
"id": 1862,
"name": "Identifier",
"src": "5613:6:2"
},
{
"attributes": {
"argumentTypes": null,
"arguments": [null],
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "address payable",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [null],
"overloadedDeclarations": [null],
"referencedDeclaration": 3606,
"type": "function () view returns (address payable)",
"value": "_msgSender"
},
"id": 1863,
"name": "Identifier",
"src": "5621:10:2"
}
],
"id": 1864,
"name": "FunctionCall",
"src": "5621:12:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "uint256",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
"typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sub",
"referencedDeclaration": 2456,
"type": "function (uint256,uint256,string memory) pure returns (uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "mapping(address => uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1548,
"type": "mapping(address => mapping(address => uint256))",
"value": "_allowances"
},
"id": 1865,
"name": "Identifier",
"src": "5635:11:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1845,
"type": "address",
"value": "sender"
},
"id": 1866,
"name": "Identifier",
"src": "5647:6:2"
}
],
"id": 1867,
"name": "IndexAccess",
"src": "5635:19:2"
},
{
"attributes": {
"argumentTypes": null,
"arguments": [null],
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "address payable",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [null],
"overloadedDeclarations": [null],
"referencedDeclaration": 3606,
"type": "function () view returns (address payable)",
"value": "_msgSender"
},
"id": 1868,
"name": "Identifier",
"src": "5655:10:2"
}
],
"id": 1869,
"name": "FunctionCall",
"src": "5655:12:2"
}
],
"id": 1870,
"name": "IndexAccess",
"src": "5635:33:2"
}
],
"id": 1871,
"name": "MemberAccess",
"src": "5635:37:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1849,
"type": "uint256",
"value": "amount"
},
"id": 1872,
"name": "Identifier",
"src": "5673:6:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"ERC20: transfer amount exceeds allowance\"",
"value": "ERC20: transfer amount exceeds allowance"
},
"id": 1873,
"name": "Literal",
"src": "5681:42:2"
}
],
"id": 1874,
"name": "FunctionCall",
"src": "5635:89:2"
}
],
"id": 1875,
"name": "FunctionCall",
"src": "5604:121:2"
}
],
"id": 1876,
"name": "ExpressionStatement",
"src": "5604:121:2"
},
{
"attributes": {
"functionReturnParameters": 1854
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "74727565",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "true"
},
"id": 1877,
"name": "Literal",
"src": "5742:4:2"
}
],
"id": 1878,
"name": "Return",
"src": "5735:11:2"
}
],
"id": 1879,
"name": "Block",
"src": "5548:205:2"
}
],
"id": 1880,
"name": "FunctionDefinition",
"src": "5444:309:2"
},
{
"attributes": {
"functionSelector": "39509351",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "increaseAllowance",
"overrides": null,
"scope": 2147,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
"children": [
{
"attributes": {
"text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."
},
"id": 1881,
"name": "StructuredDocumentation",
"src": "5759:384:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "spender",
"overrides": null,
"scope": 1908,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1882,
"name": "ElementaryTypeName",
"src": "6175:7:2"
}
],
"id": 1883,
"name": "VariableDeclaration",
"src": "6175:15:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "addedValue",
"overrides": null,
"scope": 1908,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 1884,
"name": "ElementaryTypeName",
"src": "6192:7:2"
}
],
"id": 1885,
"name": "VariableDeclaration",
"src": "6192:18:2"
}
],
"id": 1886,
"name": "ParameterList",
"src": "6174:37:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"overrides": null,
"scope": 1908,
"stateVariable": false,
"storageLocation": "default",
"type": "bool",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bool",
"type": "bool"
},
"id": 1887,
"name": "ElementaryTypeName",
"src": "6228:4:2"
}
],
"id": 1888,
"name": "VariableDeclaration",
"src": "6228:4:2"
}
],
"id": 1889,
"name": "ParameterList",
"src": "6227:6:2"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [null],
"referencedDeclaration": 2135,
"type": "function (address,address,uint256)",
"value": "_approve"
},
"id": 1890,
"name": "Identifier",
"src": "6244:8:2"
},
{
"attributes": {
"argumentTypes": null,
"arguments": [null],
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "address payable",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [null],
"overloadedDeclarations": [null],
"referencedDeclaration": 3606,
"type": "function () view returns (address payable)",
"value": "_msgSender"
},
"id": 1891,
"name": "Identifier",
"src": "6253:10:2"
}
],
"id": 1892,
"name": "FunctionCall",
"src": "6253:12:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1883,
"type": "address",
"value": "spender"
},
"id": 1893,
"name": "Identifier",
"src": "6267:7:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "uint256",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "add",
"referencedDeclaration": 2332,
"type": "function (uint256,uint256) pure returns (uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "mapping(address => uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1548,
"type": "mapping(address => mapping(address => uint256))",
"value": "_allowances"
},
"id": 1894,
"name": "Identifier",
"src": "6276:11:2"
},
{
"attributes": {
"argumentTypes": null,
"arguments": [null],
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "address payable",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [null],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 3606,
"type": "function () view returns (address payable)",
"value": "_msgSender"
},
"id": 1895,
"name": "Identifier",
"src": "6288:10:2"
}
],
"id": 1896,
"name": "FunctionCall",
"src": "6288:12:2"
}
],
"id": 1897,
"name": "IndexAccess",
"src": "6276:25:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1883,
"type": "address",
"value": "spender"
},
"id": 1898,
"name": "Identifier",
"src": "6302:7:2"
}
],
"id": 1899,
"name": "IndexAccess",
"src": "6276:34:2"
}
],
"id": 1900,
"name": "MemberAccess",
"src": "6276:38:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1885,
"type": "uint256",
"value": "addedValue"
},
"id": 1901,
"name": "Identifier",
"src": "6315:10:2"
}
],
"id": 1902,
"name": "FunctionCall",
"src": "6276:50:2"
}
],
"id": 1903,
"name": "FunctionCall",
"src": "6244:83:2"
}
],
"id": 1904,
"name": "ExpressionStatement",
"src": "6244:83:2"
},
{
"attributes": {
"functionReturnParameters": 1889
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "74727565",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "true"
},
"id": 1905,
"name": "Literal",
"src": "6344:4:2"
}
],
"id": 1906,
"name": "Return",
"src": "6337:11:2"
}
],
"id": 1907,
"name": "Block",
"src": "6234:121:2"
}
],
"id": 1908,
"name": "FunctionDefinition",
"src": "6148:207:2"
},
{
"attributes": {
"functionSelector": "a457c2d7",
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "decreaseAllowance",
"overrides": null,
"scope": 2147,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
"children": [
{
"attributes": {
"text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."
},
"id": 1909,
"name": "StructuredDocumentation",
"src": "6361:476:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "spender",
"overrides": null,
"scope": 1937,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1910,
"name": "ElementaryTypeName",
"src": "6869:7:2"
}
],
"id": 1911,
"name": "VariableDeclaration",
"src": "6869:15:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "subtractedValue",
"overrides": null,
"scope": 1937,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 1912,
"name": "ElementaryTypeName",
"src": "6886:7:2"
}
],
"id": 1913,
"name": "VariableDeclaration",
"src": "6886:23:2"
}
],
"id": 1914,
"name": "ParameterList",
"src": "6868:42:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "",
"overrides": null,
"scope": 1937,
"stateVariable": false,
"storageLocation": "default",
"type": "bool",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bool",
"type": "bool"
},
"id": 1915,
"name": "ElementaryTypeName",
"src": "6927:4:2"
}
],
"id": 1916,
"name": "VariableDeclaration",
"src": "6927:4:2"
}
],
"id": 1917,
"name": "ParameterList",
"src": "6926:6:2"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [null],
"referencedDeclaration": 2135,
"type": "function (address,address,uint256)",
"value": "_approve"
},
"id": 1918,
"name": "Identifier",
"src": "6943:8:2"
},
{
"attributes": {
"argumentTypes": null,
"arguments": [null],
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "address payable",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [null],
"overloadedDeclarations": [null],
"referencedDeclaration": 3606,
"type": "function () view returns (address payable)",
"value": "_msgSender"
},
"id": 1919,
"name": "Identifier",
"src": "6952:10:2"
}
],
"id": 1920,
"name": "FunctionCall",
"src": "6952:12:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1911,
"type": "address",
"value": "spender"
},
"id": 1921,
"name": "Identifier",
"src": "6966:7:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "uint256",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
"typeString": "literal_string \"ERC20: decreased allowance below zero\""
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sub",
"referencedDeclaration": 2456,
"type": "function (uint256,uint256,string memory) pure returns (uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "mapping(address => uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1548,
"type": "mapping(address => mapping(address => uint256))",
"value": "_allowances"
},
"id": 1922,
"name": "Identifier",
"src": "6975:11:2"
},
{
"attributes": {
"argumentTypes": null,
"arguments": [null],
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "address payable",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [null],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 3606,
"type": "function () view returns (address payable)",
"value": "_msgSender"
},
"id": 1923,
"name": "Identifier",
"src": "6987:10:2"
}
],
"id": 1924,
"name": "FunctionCall",
"src": "6987:12:2"
}
],
"id": 1925,
"name": "IndexAccess",
"src": "6975:25:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1911,
"type": "address",
"value": "spender"
},
"id": 1926,
"name": "Identifier",
"src": "7001:7:2"
}
],
"id": 1927,
"name": "IndexAccess",
"src": "6975:34:2"
}
],
"id": 1928,
"name": "MemberAccess",
"src": "6975:38:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1913,
"type": "uint256",
"value": "subtractedValue"
},
"id": 1929,
"name": "Identifier",
"src": "7014:15:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"ERC20: decreased allowance below zero\"",
"value": "ERC20: decreased allowance below zero"
},
"id": 1930,
"name": "Literal",
"src": "7031:39:2"
}
],
"id": 1931,
"name": "FunctionCall",
"src": "6975:96:2"
}
],
"id": 1932,
"name": "FunctionCall",
"src": "6943:129:2"
}
],
"id": 1933,
"name": "ExpressionStatement",
"src": "6943:129:2"
},
{
"attributes": {
"functionReturnParameters": 1917
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "74727565",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "true"
},
"id": 1934,
"name": "Literal",
"src": "7089:4:2"
}
],
"id": 1935,
"name": "Return",
"src": "7082:11:2"
}
],
"id": 1936,
"name": "Block",
"src": "6933:167:2"
}
],
"id": 1937,
"name": "FunctionDefinition",
"src": "6842:258:2"
},
{
"attributes": {
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "_transfer",
"overrides": null,
"scope": 2147,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
"children": [
{
"attributes": {
"text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`."
},
"id": 1938,
"name": "StructuredDocumentation",
"src": "7106:463:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "sender",
"overrides": null,
"scope": 1997,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1939,
"name": "ElementaryTypeName",
"src": "7593:7:2"
}
],
"id": 1940,
"name": "VariableDeclaration",
"src": "7593:14:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "recipient",
"overrides": null,
"scope": 1997,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1941,
"name": "ElementaryTypeName",
"src": "7609:7:2"
}
],
"id": 1942,
"name": "VariableDeclaration",
"src": "7609:17:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "amount",
"overrides": null,
"scope": 1997,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 1943,
"name": "ElementaryTypeName",
"src": "7628:7:2"
}
],
"id": 1944,
"name": "VariableDeclaration",
"src": "7628:14:2"
}
],
"id": 1945,
"name": "ParameterList",
"src": "7592:51:2"
},
{
"attributes": {
"parameters": [null]
},
"children": [],
"id": 1946,
"name": "ParameterList",
"src": "7653:0:2"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
"typeString": "literal_string \"ERC20: transfer from the zero address\""
}
],
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"type": "function (bool,string memory) pure",
"value": "require"
},
"id": 1947,
"name": "Identifier",
"src": "7663:7:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "!=",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1940,
"type": "address",
"value": "sender"
},
"id": 1948,
"name": "Identifier",
"src": "7671:6:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": true,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "address payable",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address",
"type": null
},
"id": 1949,
"name": "ElementaryTypeName",
"src": "7681:7:2"
}
],
"id": 1950,
"name": "ElementaryTypeNameExpression",
"src": "7681:7:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 0",
"value": "0"
},
"id": 1951,
"name": "Literal",
"src": "7689:1:2"
}
],
"id": 1952,
"name": "FunctionCall",
"src": "7681:10:2"
}
],
"id": 1953,
"name": "BinaryOperation",
"src": "7671:20:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"ERC20: transfer from the zero address\"",
"value": "ERC20: transfer from the zero address"
},
"id": 1954,
"name": "Literal",
"src": "7693:39:2"
}
],
"id": 1955,
"name": "FunctionCall",
"src": "7663:70:2"
}
],
"id": 1956,
"name": "ExpressionStatement",
"src": "7663:70:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
"typeString": "literal_string \"ERC20: transfer to the zero address\""
}
],
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"type": "function (bool,string memory) pure",
"value": "require"
},
"id": 1957,
"name": "Identifier",
"src": "7743:7:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "!=",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1942,
"type": "address",
"value": "recipient"
},
"id": 1958,
"name": "Identifier",
"src": "7751:9:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": true,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "address payable",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address",
"type": null
},
"id": 1959,
"name": "ElementaryTypeName",
"src": "7764:7:2"
}
],
"id": 1960,
"name": "ElementaryTypeNameExpression",
"src": "7764:7:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 0",
"value": "0"
},
"id": 1961,
"name": "Literal",
"src": "7772:1:2"
}
],
"id": 1962,
"name": "FunctionCall",
"src": "7764:10:2"
}
],
"id": 1963,
"name": "BinaryOperation",
"src": "7751:23:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"ERC20: transfer to the zero address\"",
"value": "ERC20: transfer to the zero address"
},
"id": 1964,
"name": "Literal",
"src": "7776:37:2"
}
],
"id": 1965,
"name": "FunctionCall",
"src": "7743:71:2"
}
],
"id": 1966,
"name": "ExpressionStatement",
"src": "7743:71:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1542,
"type": "mapping(address => uint256)",
"value": "_balances"
},
"id": 1967,
"name": "Identifier",
"src": "7825:9:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1940,
"type": "address",
"value": "sender"
},
"id": 1968,
"name": "Identifier",
"src": "7835:6:2"
}
],
"id": 1969,
"name": "IndexAccess",
"src": "7825:17:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "uint256",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
"typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sub",
"referencedDeclaration": 2456,
"type": "function (uint256,uint256,string memory) pure returns (uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1542,
"type": "mapping(address => uint256)",
"value": "_balances"
},
"id": 1970,
"name": "Identifier",
"src": "7845:9:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1940,
"type": "address",
"value": "sender"
},
"id": 1971,
"name": "Identifier",
"src": "7855:6:2"
}
],
"id": 1972,
"name": "IndexAccess",
"src": "7845:17:2"
}
],
"id": 1973,
"name": "MemberAccess",
"src": "7845:21:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1944,
"type": "uint256",
"value": "amount"
},
"id": 1974,
"name": "Identifier",
"src": "7867:6:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"ERC20: transfer amount exceeds balance\"",
"value": "ERC20: transfer amount exceeds balance"
},
"id": 1975,
"name": "Literal",
"src": "7875:40:2"
}
],
"id": 1976,
"name": "FunctionCall",
"src": "7845:71:2"
}
],
"id": 1977,
"name": "Assignment",
"src": "7825:91:2"
}
],
"id": 1978,
"name": "ExpressionStatement",
"src": "7825:91:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1542,
"type": "mapping(address => uint256)",
"value": "_balances"
},
"id": 1979,
"name": "Identifier",
"src": "7926:9:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1942,
"type": "address",
"value": "recipient"
},
"id": 1980,
"name": "Identifier",
"src": "7936:9:2"
}
],
"id": 1981,
"name": "IndexAccess",
"src": "7926:20:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "uint256",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "add",
"referencedDeclaration": 2332,
"type": "function (uint256,uint256) pure returns (uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1542,
"type": "mapping(address => uint256)",
"value": "_balances"
},
"id": 1982,
"name": "Identifier",
"src": "7949:9:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1942,
"type": "address",
"value": "recipient"
},
"id": 1983,
"name": "Identifier",
"src": "7959:9:2"
}
],
"id": 1984,
"name": "IndexAccess",
"src": "7949:20:2"
}
],
"id": 1985,
"name": "MemberAccess",
"src": "7949:24:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1944,
"type": "uint256",
"value": "amount"
},
"id": 1986,
"name": "Identifier",
"src": "7974:6:2"
}
],
"id": 1987,
"name": "FunctionCall",
"src": "7949:32:2"
}
],
"id": 1988,
"name": "Assignment",
"src": "7926:55:2"
}
],
"id": 1989,
"name": "ExpressionStatement",
"src": "7926:55:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [null],
"referencedDeclaration": 3076,
"type": "function (address,address,uint256)",
"value": "Transfer"
},
"id": 1990,
"name": "Identifier",
"src": "7996:8:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1940,
"type": "address",
"value": "sender"
},
"id": 1991,
"name": "Identifier",
"src": "8005:6:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1942,
"type": "address",
"value": "recipient"
},
"id": 1992,
"name": "Identifier",
"src": "8013:9:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1944,
"type": "uint256",
"value": "amount"
},
"id": 1993,
"name": "Identifier",
"src": "8024:6:2"
}
],
"id": 1994,
"name": "FunctionCall",
"src": "7996:35:2"
}
],
"id": 1995,
"name": "EmitStatement",
"src": "7991:40:2"
}
],
"id": 1996,
"name": "Block",
"src": "7653:385:2"
}
],
"id": 1997,
"name": "FunctionDefinition",
"src": "7574:464:2"
},
{
"attributes": {
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "_mint",
"overrides": null,
"scope": 2147,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
"children": [
{
"attributes": {
"text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements\n - `to` cannot be the zero address."
},
"id": 1998,
"name": "StructuredDocumentation",
"src": "8044:259:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "account",
"overrides": null,
"scope": 2043,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 1999,
"name": "ElementaryTypeName",
"src": "8323:7:2"
}
],
"id": 2000,
"name": "VariableDeclaration",
"src": "8323:15:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "amount",
"overrides": null,
"scope": 2043,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 2001,
"name": "ElementaryTypeName",
"src": "8340:7:2"
}
],
"id": 2002,
"name": "VariableDeclaration",
"src": "8340:14:2"
}
],
"id": 2003,
"name": "ParameterList",
"src": "8322:33:2"
},
{
"attributes": {
"parameters": [null]
},
"children": [],
"id": 2004,
"name": "ParameterList",
"src": "8365:0:2"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
"typeString": "literal_string \"ERC20: mint to the zero address\""
}
],
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"type": "function (bool,string memory) pure",
"value": "require"
},
"id": 2005,
"name": "Identifier",
"src": "8375:7:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "!=",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2000,
"type": "address",
"value": "account"
},
"id": 2006,
"name": "Identifier",
"src": "8383:7:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": true,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "address payable",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address",
"type": null
},
"id": 2007,
"name": "ElementaryTypeName",
"src": "8394:7:2"
}
],
"id": 2008,
"name": "ElementaryTypeNameExpression",
"src": "8394:7:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 0",
"value": "0"
},
"id": 2009,
"name": "Literal",
"src": "8402:1:2"
}
],
"id": 2010,
"name": "FunctionCall",
"src": "8394:10:2"
}
],
"id": 2011,
"name": "BinaryOperation",
"src": "8383:21:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"ERC20: mint to the zero address\"",
"value": "ERC20: mint to the zero address"
},
"id": 2012,
"name": "Literal",
"src": "8406:33:2"
}
],
"id": 2013,
"name": "FunctionCall",
"src": "8375:65:2"
}
],
"id": 2014,
"name": "ExpressionStatement",
"src": "8375:65:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1550,
"type": "uint256",
"value": "_totalSupply"
},
"id": 2015,
"name": "Identifier",
"src": "8451:12:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "uint256",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "add",
"referencedDeclaration": 2332,
"type": "function (uint256,uint256) pure returns (uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1550,
"type": "uint256",
"value": "_totalSupply"
},
"id": 2016,
"name": "Identifier",
"src": "8466:12:2"
}
],
"id": 2017,
"name": "MemberAccess",
"src": "8466:16:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2002,
"type": "uint256",
"value": "amount"
},
"id": 2018,
"name": "Identifier",
"src": "8483:6:2"
}
],
"id": 2019,
"name": "FunctionCall",
"src": "8466:24:2"
}
],
"id": 2020,
"name": "Assignment",
"src": "8451:39:2"
}
],
"id": 2021,
"name": "ExpressionStatement",
"src": "8451:39:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1542,
"type": "mapping(address => uint256)",
"value": "_balances"
},
"id": 2022,
"name": "Identifier",
"src": "8500:9:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2000,
"type": "address",
"value": "account"
},
"id": 2023,
"name": "Identifier",
"src": "8510:7:2"
}
],
"id": 2024,
"name": "IndexAccess",
"src": "8500:18:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "uint256",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "add",
"referencedDeclaration": 2332,
"type": "function (uint256,uint256) pure returns (uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1542,
"type": "mapping(address => uint256)",
"value": "_balances"
},
"id": 2025,
"name": "Identifier",
"src": "8521:9:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2000,
"type": "address",
"value": "account"
},
"id": 2026,
"name": "Identifier",
"src": "8531:7:2"
}
],
"id": 2027,
"name": "IndexAccess",
"src": "8521:18:2"
}
],
"id": 2028,
"name": "MemberAccess",
"src": "8521:22:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2002,
"type": "uint256",
"value": "amount"
},
"id": 2029,
"name": "Identifier",
"src": "8544:6:2"
}
],
"id": 2030,
"name": "FunctionCall",
"src": "8521:30:2"
}
],
"id": 2031,
"name": "Assignment",
"src": "8500:51:2"
}
],
"id": 2032,
"name": "ExpressionStatement",
"src": "8500:51:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [null],
"referencedDeclaration": 3076,
"type": "function (address,address,uint256)",
"value": "Transfer"
},
"id": 2033,
"name": "Identifier",
"src": "8566:8:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": true,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "address payable",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address",
"type": null
},
"id": 2034,
"name": "ElementaryTypeName",
"src": "8575:7:2"
}
],
"id": 2035,
"name": "ElementaryTypeNameExpression",
"src": "8575:7:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 0",
"value": "0"
},
"id": 2036,
"name": "Literal",
"src": "8583:1:2"
}
],
"id": 2037,
"name": "FunctionCall",
"src": "8575:10:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2000,
"type": "address",
"value": "account"
},
"id": 2038,
"name": "Identifier",
"src": "8587:7:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2002,
"type": "uint256",
"value": "amount"
},
"id": 2039,
"name": "Identifier",
"src": "8596:6:2"
}
],
"id": 2040,
"name": "FunctionCall",
"src": "8566:37:2"
}
],
"id": 2041,
"name": "EmitStatement",
"src": "8561:42:2"
}
],
"id": 2042,
"name": "Block",
"src": "8365:245:2"
}
],
"id": 2043,
"name": "FunctionDefinition",
"src": "8308:302:2"
},
{
"attributes": {
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "_burn",
"overrides": null,
"scope": 2147,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
"children": [
{
"attributes": {
"text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."
},
"id": 2044,
"name": "StructuredDocumentation",
"src": "8616:308:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "account",
"overrides": null,
"scope": 2090,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 2045,
"name": "ElementaryTypeName",
"src": "8944:7:2"
}
],
"id": 2046,
"name": "VariableDeclaration",
"src": "8944:15:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "amount",
"overrides": null,
"scope": 2090,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 2047,
"name": "ElementaryTypeName",
"src": "8961:7:2"
}
],
"id": 2048,
"name": "VariableDeclaration",
"src": "8961:14:2"
}
],
"id": 2049,
"name": "ParameterList",
"src": "8943:33:2"
},
{
"attributes": {
"parameters": [null]
},
"children": [],
"id": 2050,
"name": "ParameterList",
"src": "8986:0:2"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
"typeString": "literal_string \"ERC20: burn from the zero address\""
}
],
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"type": "function (bool,string memory) pure",
"value": "require"
},
"id": 2051,
"name": "Identifier",
"src": "8996:7:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "!=",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2046,
"type": "address",
"value": "account"
},
"id": 2052,
"name": "Identifier",
"src": "9004:7:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": true,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "address payable",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address",
"type": null
},
"id": 2053,
"name": "ElementaryTypeName",
"src": "9015:7:2"
}
],
"id": 2054,
"name": "ElementaryTypeNameExpression",
"src": "9015:7:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 0",
"value": "0"
},
"id": 2055,
"name": "Literal",
"src": "9023:1:2"
}
],
"id": 2056,
"name": "FunctionCall",
"src": "9015:10:2"
}
],
"id": 2057,
"name": "BinaryOperation",
"src": "9004:21:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"ERC20: burn from the zero address\"",
"value": "ERC20: burn from the zero address"
},
"id": 2058,
"name": "Literal",
"src": "9027:35:2"
}
],
"id": 2059,
"name": "FunctionCall",
"src": "8996:67:2"
}
],
"id": 2060,
"name": "ExpressionStatement",
"src": "8996:67:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1542,
"type": "mapping(address => uint256)",
"value": "_balances"
},
"id": 2061,
"name": "Identifier",
"src": "9074:9:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2046,
"type": "address",
"value": "account"
},
"id": 2062,
"name": "Identifier",
"src": "9084:7:2"
}
],
"id": 2063,
"name": "IndexAccess",
"src": "9074:18:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "uint256",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
"typeString": "literal_string \"ERC20: burn amount exceeds balance\""
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sub",
"referencedDeclaration": 2456,
"type": "function (uint256,uint256,string memory) pure returns (uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1542,
"type": "mapping(address => uint256)",
"value": "_balances"
},
"id": 2064,
"name": "Identifier",
"src": "9095:9:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2046,
"type": "address",
"value": "account"
},
"id": 2065,
"name": "Identifier",
"src": "9105:7:2"
}
],
"id": 2066,
"name": "IndexAccess",
"src": "9095:18:2"
}
],
"id": 2067,
"name": "MemberAccess",
"src": "9095:22:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2048,
"type": "uint256",
"value": "amount"
},
"id": 2068,
"name": "Identifier",
"src": "9118:6:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"ERC20: burn amount exceeds balance\"",
"value": "ERC20: burn amount exceeds balance"
},
"id": 2069,
"name": "Literal",
"src": "9126:36:2"
}
],
"id": 2070,
"name": "FunctionCall",
"src": "9095:68:2"
}
],
"id": 2071,
"name": "Assignment",
"src": "9074:89:2"
}
],
"id": 2072,
"name": "ExpressionStatement",
"src": "9074:89:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1550,
"type": "uint256",
"value": "_totalSupply"
},
"id": 2073,
"name": "Identifier",
"src": "9173:12:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "uint256",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sub",
"referencedDeclaration": 2354,
"type": "function (uint256,uint256) pure returns (uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1550,
"type": "uint256",
"value": "_totalSupply"
},
"id": 2074,
"name": "Identifier",
"src": "9188:12:2"
}
],
"id": 2075,
"name": "MemberAccess",
"src": "9188:16:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2048,
"type": "uint256",
"value": "amount"
},
"id": 2076,
"name": "Identifier",
"src": "9205:6:2"
}
],
"id": 2077,
"name": "FunctionCall",
"src": "9188:24:2"
}
],
"id": 2078,
"name": "Assignment",
"src": "9173:39:2"
}
],
"id": 2079,
"name": "ExpressionStatement",
"src": "9173:39:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [null],
"referencedDeclaration": 3076,
"type": "function (address,address,uint256)",
"value": "Transfer"
},
"id": 2080,
"name": "Identifier",
"src": "9227:8:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2046,
"type": "address",
"value": "account"
},
"id": 2081,
"name": "Identifier",
"src": "9236:7:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": true,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "address payable",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address",
"type": null
},
"id": 2082,
"name": "ElementaryTypeName",
"src": "9245:7:2"
}
],
"id": 2083,
"name": "ElementaryTypeNameExpression",
"src": "9245:7:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 0",
"value": "0"
},
"id": 2084,
"name": "Literal",
"src": "9253:1:2"
}
],
"id": 2085,
"name": "FunctionCall",
"src": "9245:10:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2048,
"type": "uint256",
"value": "amount"
},
"id": 2086,
"name": "Identifier",
"src": "9257:6:2"
}
],
"id": 2087,
"name": "FunctionCall",
"src": "9227:37:2"
}
],
"id": 2088,
"name": "EmitStatement",
"src": "9222:42:2"
}
],
"id": 2089,
"name": "Block",
"src": "8986:285:2"
}
],
"id": 2090,
"name": "FunctionDefinition",
"src": "8929:342:2"
},
{
"attributes": {
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "_approve",
"overrides": null,
"scope": 2147,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
"children": [
{
"attributes": {
"text": " @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n This is internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."
},
"id": 2091,
"name": "StructuredDocumentation",
"src": "9277:414:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "owner",
"overrides": null,
"scope": 2135,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 2092,
"name": "ElementaryTypeName",
"src": "9714:7:2"
}
],
"id": 2093,
"name": "VariableDeclaration",
"src": "9714:13:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "spender",
"overrides": null,
"scope": 2135,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"stateMutability": "nonpayable",
"type": "address"
},
"id": 2094,
"name": "ElementaryTypeName",
"src": "9729:7:2"
}
],
"id": 2095,
"name": "VariableDeclaration",
"src": "9729:15:2"
},
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "amount",
"overrides": null,
"scope": 2135,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 2096,
"name": "ElementaryTypeName",
"src": "9746:7:2"
}
],
"id": 2097,
"name": "VariableDeclaration",
"src": "9746:14:2"
}
],
"id": 2098,
"name": "ParameterList",
"src": "9713:48:2"
},
{
"attributes": {
"parameters": [null]
},
"children": [],
"id": 2099,
"name": "ParameterList",
"src": "9771:0:2"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
"typeString": "literal_string \"ERC20: approve from the zero address\""
}
],
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"type": "function (bool,string memory) pure",
"value": "require"
},
"id": 2100,
"name": "Identifier",
"src": "9781:7:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "!=",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2093,
"type": "address",
"value": "owner"
},
"id": 2101,
"name": "Identifier",
"src": "9789:5:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": true,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "address payable",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address",
"type": null
},
"id": 2102,
"name": "ElementaryTypeName",
"src": "9798:7:2"
}
],
"id": 2103,
"name": "ElementaryTypeNameExpression",
"src": "9798:7:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 0",
"value": "0"
},
"id": 2104,
"name": "Literal",
"src": "9806:1:2"
}
],
"id": 2105,
"name": "FunctionCall",
"src": "9798:10:2"
}
],
"id": 2106,
"name": "BinaryOperation",
"src": "9789:19:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"ERC20: approve from the zero address\"",
"value": "ERC20: approve from the zero address"
},
"id": 2107,
"name": "Literal",
"src": "9810:38:2"
}
],
"id": 2108,
"name": "FunctionCall",
"src": "9781:68:2"
}
],
"id": 2109,
"name": "ExpressionStatement",
"src": "9781:68:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
"typeString": "literal_string \"ERC20: approve to the zero address\""
}
],
"overloadedDeclarations": [-18, -18],
"referencedDeclaration": -18,
"type": "function (bool,string memory) pure",
"value": "require"
},
"id": 2110,
"name": "Identifier",
"src": "9859:7:2"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "!=",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2095,
"type": "address",
"value": "spender"
},
"id": 2111,
"name": "Identifier",
"src": "9867:7:2"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": true,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "address payable",
"type_conversion": true
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"type": "type(address)"
},
"children": [
{
"attributes": {
"name": "address",
"type": null
},
"id": 2112,
"name": "ElementaryTypeName",
"src": "9878:7:2"
}
],
"id": 2113,
"name": "ElementaryTypeNameExpression",
"src": "9878:7:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 0",
"value": "0"
},
"id": 2114,
"name": "Literal",
"src": "9886:1:2"
}
],
"id": 2115,
"name": "FunctionCall",
"src": "9878:10:2"
}
],
"id": 2116,
"name": "BinaryOperation",
"src": "9867:21:2"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"ERC20: approve to the zero address\"",
"value": "ERC20: approve to the zero address"
},
"id": 2117,
"name": "Literal",
"src": "9890:36:2"
}
],
"id": 2118,
"name": "FunctionCall",
"src": "9859:68:2"
}
],
"id": 2119,
"name": "ExpressionStatement",
"src": "9859:68:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "mapping(address => uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1548,
"type": "mapping(address => mapping(address => uint256))",
"value": "_allowances"
},
"id": 2120,
"name": "Identifier",
"src": "9938:11:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2093,
"type": "address",
"value": "owner"
},
"id": 2121,
"name": "Identifier",
"src": "9950:5:2"
}
],
"id": 2123,
"name": "IndexAccess",
"src": "9938:18:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2095,
"type": "address",
"value": "spender"
},
"id": 2122,
"name": "Identifier",
"src": "9957:7:2"
}
],
"id": 2124,
"name": "IndexAccess",
"src": "9938:27:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2097,
"type": "uint256",
"value": "amount"
},
"id": 2125,
"name": "Identifier",
"src": "9968:6:2"
}
],
"id": 2126,
"name": "Assignment",
"src": "9938:36:2"
}
],
"id": 2127,
"name": "ExpressionStatement",
"src": "9938:36:2"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [null],
"tryCall": false,
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [null],
"referencedDeclaration": 3085,
"type": "function (address,address,uint256)",
"value": "Approval"
},
"id": 2128,
"name": "Identifier",
"src": "9989:8:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2093,
"type": "address",
"value": "owner"
},
"id": 2129,
"name": "Identifier",
"src": "9998:5:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2095,
"type": "address",
"value": "spender"
},
"id": 2130,
"name": "Identifier",
"src": "10005:7:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2097,
"type": "uint256",
"value": "amount"
},
"id": 2131,
"name": "Identifier",
"src": "10014:6:2"
}
],
"id": 2132,
"name": "FunctionCall",
"src": "9989:32:2"
}
],
"id": 2133,
"name": "EmitStatement",
"src": "9984:37:2"
}
],
"id": 2134,
"name": "Block",
"src": "9771:257:2"
}
],
"id": 2135,
"name": "FunctionDefinition",
"src": "9696:332:2"
},
{
"attributes": {
"implemented": true,
"isConstructor": false,
"kind": "function",
"modifiers": [null],
"name": "_setupDecimals",
"overrides": null,
"scope": 2147,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
"children": [
{
"attributes": {
"text": " @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does."
},
"id": 2136,
"name": "StructuredDocumentation",
"src": "10034:312:2"
},
{
"children": [
{
"attributes": {
"constant": false,
"mutability": "mutable",
"name": "decimals_",
"overrides": null,
"scope": 2146,
"stateVariable": false,
"storageLocation": "default",
"type": "uint8",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint8",
"type": "uint8"
},
"id": 2137,
"name": "ElementaryTypeName",
"src": "10375:5:2"
}
],
"id": 2138,
"name": "VariableDeclaration",
"src": "10375:15:2"
}
],
"id": 2139,
"name": "ParameterList",
"src": "10374:17:2"
},
{
"attributes": {
"parameters": [null]
},
"children": [],
"id": 2140,
"name": "ParameterList",
"src": "10401:0:2"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint8"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 1555,
"type": "uint8",
"value": "_decimals"
},
"id": 2141,
"name": "Identifier",
"src": "10411:9:2"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [null],
"referencedDeclaration": 2138,
"type": "uint8",
"value": "decimals_"
},
"id": 2142,
"name": "Identifier",
"src": "10423:9:2"
}
],
"id": 2143,
"name": "Assignment",
"src": "10411:21:2"
}
],
"id": 2144,
"name": "ExpressionStatement",
"src": "10411:21:2"
}
],
"id": 2145,
"name": "Block",
"src": "10401:38:2"
}
],
"id": 2146,
"name": "FunctionDefinition",
"src": "10351:88:2"
}
],
"id": 2147,
"name": "ContractDefinition",
"src": "304:10137:2"
}
],
"id": 2148,
"name": "SourceUnit",
"src": "67:10375:2"
},
"compiler": {
"name": "solc",
"version": "0.6.12+commit.27d51765.Emscripten.clang"
},
"networks": {},
"schemaVersion": "3.3.4",
"updatedAt": "2021-04-12T21:53:29.906Z",
"devdoc": {
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "See {IERC20-allowance}."
},
"approve(address,uint256)": {
"details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address."
},
"balanceOf(address)": {
"details": "See {IERC20-balanceOf}."
},
"decimals()": {
"details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
},
"decreaseAllowance(address,uint256)": {
"details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
},
"increaseAllowance(address,uint256)": {
"details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
},
"name()": {
"details": "Returns the name of the token."
},
"symbol()": {
"details": "Returns the symbol of the token, usually a shorter version of the name."
},
"totalSupply()": {
"details": "See {IERC20-totalSupply}."
},
"transfer(address,uint256)": {
"details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`."
},
"transferFrom(address,address,uint256)": {
"details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`."
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}