aibc
Version:
AIBC contract to mint NFTs
538 lines (537 loc) • 1.18 MB
JSON
{
"contractName": "CustomERC20",
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
},
{
"internalType": "uint256",
"name": "_supply",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"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": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "burnFrom",
"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": [],
"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"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_supply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"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\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"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\":[],\"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}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"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 this function is overridden; 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\":{\"/F/Assignment/aibcccc/AIBC/contracts/CustomERC20.sol\":\"CustomERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/F/Assignment/aibcccc/AIBC/contracts/CustomERC20.sol\":{\"keccak256\":\"0x590becc03240efd5ad6cafab532e50b0575c241b8608362f4acd3f9a4b7e2ebb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5d6fcb701f45883c773903ca07c3bee795e3b054fa47b82990d803e1755ee33\",\"dweb:/ipfs/QmQcN95LCMhwdiHFUw56r2yEv3KJoVoLk2X5TSE9gG6kcg\"]}},\"version\":1}",
"bytecode": "0x60806040523480156200001157600080fd5b5060405162001e5038038062001e50833981810160405281019062000037919062000333565b828282338383816003908051906020019062000055929190620001fa565b5080600490805190602001906200006e929190620001fa565b5050506200008381836200009060201b60201c565b505050505050506200063f565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000103576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000fa906200040e565b60405180910390fd5b6200011760008383620001f560201b60201c565b80600260008282546200012b9190620004c5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620001829190620004c5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620001e9919062000430565b60405180910390a35050565b505050565b828054620002089062000562565b90600052602060002090601f0160209004810192826200022c576000855562000278565b82601f106200024757805160ff191683800117855562000278565b8280016001018555821562000278579182015b82811115620002775782518255916020019190600101906200025a565b5b5090506200028791906200028b565b5090565b5b80821115620002a65760008160009055506001016200028c565b5090565b6000620002c1620002bb8462000481565b6200044d565b905082815260208101848484011115620002da57600080fd5b620002e78482856200052c565b509392505050565b600082601f8301126200030157600080fd5b815162000313848260208601620002aa565b91505092915050565b6000815190506200032d8162000625565b92915050565b6000806000606084860312156200034957600080fd5b600084015167ffffffffffffffff8111156200036457600080fd5b6200037286828701620002ef565b935050602084015167ffffffffffffffff8111156200039057600080fd5b6200039e86828701620002ef565b9250506040620003b1868287016200031c565b9150509250925092565b6000620003ca601f83620004b4565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b620004088162000522565b82525050565b600060208201905081810360008301526200042981620003bb565b9050919050565b6000602082019050620004476000830184620003fd565b92915050565b6000604051905081810181811067ffffffffffffffff82111715620004775762000476620005f6565b5b8060405250919050565b600067ffffffffffffffff8211156200049f576200049e620005f6565b5b601f19601f8301169050602081019050919050565b600082825260208201905092915050565b6000620004d28262000522565b9150620004df8362000522565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000517576200051662000598565b5b828201905092915050565b6000819050919050565b60005b838110156200054c5780820151818401526020810190506200052f565b838111156200055c576000848401525b50505050565b600060028204905060018216806200057b57607f821691505b60208210811415620005925762000591620005c7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620006308162000522565b81146200063c57600080fd5b50565b611801806200064f6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b4114610226578063a457c2d714610244578063a9059cbb14610274578063dd62ed3e146102a4576100cf565b806342966c68146101be57806370a08231146101da57806379cc67901461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102d4565b6040516100e99190611436565b60405180910390f35b61010c60048036038101906101079190610f54565b610366565b604051610119919061141b565b60405180910390f35b61012a610384565b6040516101379190611598565b60405180910390f35b61015a60048036038101906101559190610f05565b61038e565b604051610167919061141b565b60405180910390f35b61017861048f565b60405161018591906115b3565b60405180910390f35b6101a860048036038101906101a39190610f54565b610494565b6040516101b5919061141b565b60405180910390f35b6101d860048036038101906101d39190610f90565b610540565b005b6101f460048036038101906101ef9190610ea0565b610554565b6040516102019190611598565b60405180910390f35b610224600480360381019061021f9190610f54565b61059c565b005b61022e610620565b60405161023b9190611436565b60405180910390f35b61025e60048036038101906102599190610f54565b6106b2565b60405161026b919061141b565b60405180910390f35b61028e60048036038101906102899190610f54565b6107a6565b60405161029b919061141b565b60405180910390f35b6102be60048036038101906102b99190610ec9565b6107c4565b6040516102cb9190611598565b60405180910390f35b6060600380546102e3906116fc565b80601f016020809104026020016040519081016040528092919081815260200182805461030f906116fc565b801561035c5780601f106103315761010080835404028352916020019161035c565b820191906000526020600020905b81548152906001019060200180831161033f57829003601f168201915b5050505050905090565b600061037a61037361084b565b8484610853565b6001905092915050565b6000600254905090565b600061039b848484610a1e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103e661084b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d906114d8565b60405180910390fd5b6104838561047261084b565b858461047e9190611640565b610853565b60019150509392505050565b600090565b60006105366104a161084b565b8484600160006104af61084b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461053191906115ea565b610853565b6001905092915050565b61055161054b61084b565b82610c9d565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006105af836105aa61084b565b6107c4565b9050818110156105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb906114f8565b60405180910390fd5b6106118361060061084b565b848461060c9190611640565b610853565b61061b8383610c9d565b505050565b60606004805461062f906116fc565b80601f016020809104026020016040519081016040528092919081815260200182805461065b906116fc565b80156106a85780601f1061067d576101008083540402835291602001916106a8565b820191906000526020600020905b81548152906001019060200180831161068b57829003601f168201915b5050505050905090565b600080600160006106c161084b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561077e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077590611578565b60405180910390fd5b61079b61078961084b565b8585846107969190611640565b610853565b600191505092915050565b60006107ba6107b361084b565b8484610a1e565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ba90611558565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092a90611498565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a119190611598565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8590611538565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af590611458565b60405180910390fd5b610b09838383610e71565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b86906114b8565b60405180910390fd5b8181610b9b9190611640565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c2b91906115ea565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c8f9190611598565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0490611518565b60405180910390fd5b610d1982600083610e71565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9690611478565b60405180910390fd5b8181610dab9190611640565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254610dff9190611640565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e649190611598565b60405180910390a3505050565b505050565b600081359050610e858161179d565b92915050565b600081359050610e9a816117b4565b92915050565b600060208284031215610eb257600080fd5b6000610ec084828501610e76565b91505092915050565b60008060408385031215610edc57600080fd5b6000610eea85828601610e76565b9250506020610efb85828601610e76565b9150509250929050565b600080600060608486031215610f1a57600080fd5b6000610f2886828701610e76565b9350506020610f3986828701610e76565b9250506040610f4a86828701610e8b565b9150509250925092565b60008060408385031215610f6757600080fd5b6000610f7585828601610e76565b9250506020610f8685828601610e8b565b9150509250929050565b600060208284031215610fa257600080fd5b6000610fb084828501610e8b565b91505092915050565b610fc281611686565b82525050565b6000610fd3826115ce565b610fdd81856115d9565b9350610fed8185602086016116c9565b610ff68161178c565b840191505092915050565b600061100e6023836115d9565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006110746022836115d9565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006110da6022836115d9565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006111406026836115d9565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006111a66028836115d9565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b600061120c6024836115d9565b91507f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008301527f616e6365000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006112726021836115d9565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006112d86025836115d9565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061133e6024836115d9565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113a46025836115d9565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b611406816116b2565b82525050565b611415816116bc565b82525050565b60006020820190506114306000830184610fb9565b92915050565b600060208201905081810360008301526114508184610fc8565b905092915050565b6000602082019050818103600083015261147181611001565b9050919050565b6000602082019050818103600083015261149181611067565b9050919050565b600060208201905081810360008301526114b1816110cd565b9050919050565b600060208201905081810360008301526114d181611133565b9050919050565b600060208201905081810360008301526114f181611199565b9050919050565b60006020820190508181036000830152611511816111ff565b9050919050565b6000602082019050818103600083015261153181611265565b9050919050565b60006020820190508181036000830152611551816112cb565b9050919050565b6000602082019050818103600083015261157181611331565b9050919050565b6000602082019050818103600083015261159181611397565b9050919050565b60006020820190506115ad60008301846113fd565b92915050565b60006020820190506115c8600083018461140c565b92915050565b600081519050919050565b600082825260208201905092915050565b60006115f5826116b2565b9150611600836116b2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156116355761163461172e565b5b828201905092915050565b600061164b826116b2565b9150611656836116b2565b9250828210156116695761166861172e565b5b828203905092915050565b600061167f82611692565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156116e75780820151818401526020810190506116cc565b838111156116f6576000848401525b50505050565b6000600282049050600182168061171457607f821691505b602082108114156117285761172761175d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6117a681611674565b81146117b157600080fd5b50565b6117bd816116b2565b81146117c857600080fd5b5056fea26469706673582212205659cf19bd75c777a4d883ff2460347d9beae62d0d9357589bdb84ba268814e264736f6c63430008000033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b4114610226578063a457c2d714610244578063a9059cbb14610274578063dd62ed3e146102a4576100cf565b806342966c68146101be57806370a08231146101da57806379cc67901461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102d4565b6040516100e99190611436565b60405180910390f35b61010c60048036038101906101079190610f54565b610366565b604051610119919061141b565b60405180910390f35b61012a610384565b6040516101379190611598565b60405180910390f35b61015a60048036038101906101559190610f05565b61038e565b604051610167919061141b565b60405180910390f35b61017861048f565b60405161018591906115b3565b60405180910390f35b6101a860048036038101906101a39190610f54565b610494565b6040516101b5919061141b565b60405180910390f35b6101d860048036038101906101d39190610f90565b610540565b005b6101f460048036038101906101ef9190610ea0565b610554565b6040516102019190611598565b60405180910390f35b610224600480360381019061021f9190610f54565b61059c565b005b61022e610620565b60405161023b9190611436565b60405180910390f35b61025e60048036038101906102599190610f54565b6106b2565b60405161026b919061141b565b60405180910390f35b61028e60048036038101906102899190610f54565b6107a6565b60405161029b919061141b565b60405180910390f35b6102be60048036038101906102b99190610ec9565b6107c4565b6040516102cb9190611598565b60405180910390f35b6060600380546102e3906116fc565b80601f016020809104026020016040519081016040528092919081815260200182805461030f906116fc565b801561035c5780601f106103315761010080835404028352916020019161035c565b820191906000526020600020905b81548152906001019060200180831161033f57829003601f168201915b5050505050905090565b600061037a61037361084b565b8484610853565b6001905092915050565b6000600254905090565b600061039b848484610a1e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103e661084b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d906114d8565b60405180910390fd5b6104838561047261084b565b858461047e9190611640565b610853565b60019150509392505050565b600090565b60006105366104a161084b565b8484600160006104af61084b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461053191906115ea565b610853565b6001905092915050565b61055161054b61084b565b82610c9d565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006105af836105aa61084b565b6107c4565b9050818110156105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb906114f8565b60405180910390fd5b6106118361060061084b565b848461060c9190611640565b610853565b61061b8383610c9d565b505050565b60606004805461062f906116fc565b80601f016020809104026020016040519081016040528092919081815260200182805461065b906116fc565b80156106a85780601f1061067d576101008083540402835291602001916106a8565b820191906000526020600020905b81548152906001019060200180831161068b57829003601f168201915b5050505050905090565b600080600160006106c161084b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561077e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077590611578565b60405180910390fd5b61079b61078961084b565b8585846107969190611640565b610853565b600191505092915050565b60006107ba6107b361084b565b8484610a1e565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ba90611558565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092a90611498565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a119190611598565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8590611538565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af590611458565b60405180910390fd5b610b09838383610e71565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b86906114b8565b60405180910390fd5b8181610b9b9190611640565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c2b91906115ea565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c8f9190611598565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0490611518565b60405180910390fd5b610d1982600083610e71565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9690611478565b60405180910390fd5b8181610dab9190611640565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254610dff9190611640565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e649190611598565b60405180910390a3505050565b505050565b600081359050610e858161179d565b92915050565b600081359050610e9a816117b4565b92915050565b600060208284031215610eb257600080fd5b6000610ec084828501610e76565b91505092915050565b60008060408385031215610edc57600080fd5b6000610eea85828601610e76565b9250506020610efb85828601610e76565b9150509250929050565b600080600060608486031215610f1a57600080fd5b6000610f2886828701610e76565b9350506020610f3986828701610e76565b9250506040610f4a86828701610e8b565b9150509250925092565b60008060408385031215610f6757600080fd5b6000610f7585828601610e76565b9250506020610f8685828601610e8b565b9150509250929050565b600060208284031215610fa257600080fd5b6000610fb084828501610e8b565b91505092915050565b610fc281611686565b82525050565b6000610fd3826115ce565b610fdd81856115d9565b9350610fed8185602086016116c9565b610ff68161178c565b840191505092915050565b600061100e6023836115d9565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006110746022836115d9565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006110da6022836115d9565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006111406026836115d9565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006111a66028836115d9565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b600061120c6024836115d9565b91507f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008301527f616e6365000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006112726021836115d9565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006112d86025836115d9565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061133e6024836115d9565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113a46025836115d9565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b611406816116b2565b82525050565b611415816116bc565b82525050565b60006020820190506114306000830184610fb9565b92915050565b600060208201905081810360008301526114508184610fc8565b905092915050565b6000602082019050818103600083015261147181611001565b9050919050565b6000602082019050818103600083015261149181611067565b9050919050565b600060208201905081810360008301526114b1816110cd565b9050919050565b600060208201905081810360008301526114d181611133565b9050919050565b600060208201905081810360008301526114f181611199565b9050919050565b60006020820190508181036000830152611511816111ff565b9050919050565b6000602082019050818103600083015261153181611265565b9050919050565b60006020820190508181036000830152611551816112cb565b9050919050565b6000602082019050818103600083015261157181611331565b9050919050565b6000602082019050818103600083015261159181611397565b9050919050565b60006020820190506115ad60008301846113fd565b92915050565b60006020820190506115c8600083018461140c565b92915050565b600081519050919050565b600082825260208201905092915050565b60006115f5826116b2565b9150611600836116b2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156116355761163461172e565b5b828201905092915050565b600061164b826116b2565b9150611656836116b2565b9250828210156116695761166861172e565b5b828203905092915050565b600061167f82611692565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156116e75780820151818401526020810190506116cc565b838111156116f6576000848401525b50505050565b6000600282049050600182168061171457607f821691505b602082108114156117285761172761175d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6117a681611674565b81146117b157600080fd5b50565b6117bd816116b2565b81146117c857600080fd5b5056fea26469706673582212205659cf19bd75c777a4d883ff2460347d9beae62d0d9357589bdb84ba268814e264736f6c63430008000033",
"immutableReferences": {},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:5267:17",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "102:258:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "112:74:17",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "178:6:17"
}
],
"functionName": {
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "136:41:17"
},
"nodeType": "YulFunctionCall",
"src": "136:49:17"
}
],
"functionName": {
"name": "allocateMemory",
"nodeType": "YulIdentifier",
"src": "121:14:17"
},
"nodeType": "YulFunctionCall",
"src": "121:65:17"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "112:5:17"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "202:5:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "209:6:17"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "195:6:17"
},
"nodeType": "YulFunctionCall",
"src": "195:21:17"
},
"nodeType": "YulExpressionStatement",
"src": "195:21:17"
},
{
"nodeType": "YulVariableDeclaration",
"src": "225:27:17",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "240:5:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "247:4:17",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "236:3:17"
},
"nodeType": "YulFunctionCall",
"src": "236:16:17"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "229:3:17",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "290:16:17",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "299:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "302:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "292:6:17"
},
"nodeType": "YulFunctionCall",
"src": "292:12:17"
},
"nodeType": "YulExpressionStatement",
"src": "292:12:17"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "271:3:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "276:6:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "267:3:17"
},
"nodeType": "YulFunctionCall",
"src": "267:16:17"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "285:3:17"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "264:2:17"
},
"nodeType": "YulFunctionCall",
"src": "264:25:17"
},
"nodeType": "YulIf",
"src": "261:2:17"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "337:3:17"
},
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "342:3:17"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "347:6:17"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",