false
false
0

Contract Address Details

0x9f3bA6D81543Af032b8990D5Ab3eC1faAc609732

Token
SHOTO Token (SHOTO)
Creator
0xfd4b78–01465e at 0xab2763–d54598
Balance
0 ETPOS ( )
Tokens
Fetching tokens...
Transactions
884 Transactions
Transfers
0 Transfers
Gas Used
31,752,269
Last Balance Update
4581501
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
SHOTOToken




Optimization enabled
false
Compiler version
v0.8.0+commit.c7dfd78e




EVM Version
default




Verified at
2024-06-29T07:50:54.845548Z

Constructor Arguments

0x000000000000000000000000000000000000000006c9144c1c690d4cb4000000

Arg [0] (uint256) : 2100000000000000000000000000

              

Contract source code

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

pragma solidity ^0.8.0;
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

pragma solidity ^0.8.0;
interface IETP20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

pragma solidity ^0.8.0;
interface IETP20Metadata is IETP20 {

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

pragma solidity ^0.8.0;
contract ETP20 is Context, IETP20, IETP20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ETP20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ETP20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ETP20: transfer from the zero address");
        require(recipient != address(0), "ETP20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ETP20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ETP20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ETP20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ETP20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ETP20: approve from the zero address");
        require(spender != address(0), "ETP20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

pragma solidity ^0.8.0;
contract SHOTOToken is Ownable, ETP20 {

    constructor(uint256 _totalSupply) ETP20("SHOTO Token", "SHOTO") {
        _mint(msg.sender, _totalSupply);
    }
    function burn(uint256 value) external {
        _burn(msg.sender, value);
    }
}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"uint256","name":"_totalSupply","internalType":"uint256"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"burn","inputs":[{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]}]
              

Contract Creation Code

Verify & Publish
0x60806040523480156200001157600080fd5b50604051620020d8380380620020d8833981810160405281019062000037919062000427565b6040518060400160405280600b81526020017f53484f544f20546f6b656e0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f53484f544f000000000000000000000000000000000000000000000000000000815250620000c3620000b76200011060201b60201c565b6200011860201b60201c565b8160049080519060200190620000db92919062000360565b508060059080519060200190620000f492919062000360565b505050620001093382620001dc60201b60201c565b506200060b565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200024f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200024690620004a6565b60405180910390fd5b62000263600083836200035660201b60201c565b8060036000828254620002779190620004f6565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002cf9190620004f6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003369190620004c8565b60405180910390a362000352600083836200035b60201b60201c565b5050565b505050565b505050565b8280546200036e906200055d565b90600052602060002090601f016020900481019282620003925760008555620003de565b82601f10620003ad57805160ff1916838001178555620003de565b82800160010185558215620003de579182015b82811115620003dd578251825591602001919060010190620003c0565b5b509050620003ed9190620003f1565b5090565b5b808211156200040c576000816000905550600101620003f2565b5090565b6000815190506200042181620005f1565b92915050565b6000602082840312156200043a57600080fd5b60006200044a8482850162000410565b91505092915050565b600062000462601f83620004e5565b91507f45545032303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b620004a08162000553565b82525050565b60006020820190508181036000830152620004c18162000453565b9050919050565b6000602082019050620004df600083018462000495565b92915050565b600082825260208201905092915050565b6000620005038262000553565b9150620005108362000553565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000548576200054762000593565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200057657607f821691505b602082108114156200058d576200058c620005c2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620005fc8162000553565b81146200060857600080fd5b50565b611abd806200061b6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d714610276578063a9059cbb146102a6578063dd62ed3e146102d6578063f2fde38b14610306576100f5565b806370a0823114610200578063715018a6146102305780638da5cb5b1461023a57806395d89b4114610258576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806339509351146101b457806342966c68146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610322565b60405161010f91906116d2565b60405180910390f35b610132600480360381019061012d9190611186565b6103b4565b60405161013f91906116b7565b60405180910390f35b6101506103d2565b60405161015d9190611854565b60405180910390f35b610180600480360381019061017b9190611137565b6103dc565b60405161018d91906116b7565b60405180910390f35b61019e6104d4565b6040516101ab919061186f565b60405180910390f35b6101ce60048036038101906101c99190611186565b6104dd565b6040516101db91906116b7565b60405180910390f35b6101fe60048036038101906101f991906111c2565b610589565b005b61021a600480360381019061021591906110d2565b610596565b6040516102279190611854565b60405180910390f35b6102386105df565b005b610242610667565b60405161024f919061169c565b60405180910390f35b610260610690565b60405161026d91906116d2565b60405180910390f35b610290600480360381019061028b9190611186565b610722565b60405161029d91906116b7565b60405180910390f35b6102c060048036038101906102bb9190611186565b61080d565b6040516102cd91906116b7565b60405180910390f35b6102f060048036038101906102eb91906110fb565b61082b565b6040516102fd9190611854565b60405180910390f35b610320600480360381019061031b91906110d2565b6108b2565b005b606060048054610331906119b8565b80601f016020809104026020016040519081016040528092919081815260200182805461035d906119b8565b80156103aa5780601f1061037f576101008083540402835291602001916103aa565b820191906000526020600020905b81548152906001019060200180831161038d57829003601f168201915b5050505050905090565b60006103c86103c16109aa565b84846109b2565b6001905092915050565b6000600354905090565b60006103e9848484610b7d565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104346109aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156104b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ab906117b4565b60405180910390fd5b6104c8856104c06109aa565b8584036109b2565b60019150509392505050565b60006012905090565b600061057f6104ea6109aa565b8484600260006104f86109aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461057a91906118a6565b6109b2565b6001905092915050565b6105933382610e01565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105e76109aa565b73ffffffffffffffffffffffffffffffffffffffff16610605610667565b73ffffffffffffffffffffffffffffffffffffffff161461065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065290611794565b60405180910390fd5b6106656000610fda565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461069f906119b8565b80601f01602080910402602001604051908101604052809291908181526020018280546106cb906119b8565b80156107185780601f106106ed57610100808354040283529160200191610718565b820191906000526020600020905b8154815290600101906020018083116106fb57829003601f168201915b5050505050905090565b600080600260006107316109aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e590611814565b60405180910390fd5b6108026107f96109aa565b858584036109b2565b600191505092915050565b600061082161081a6109aa565b8484610b7d565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6108ba6109aa565b73ffffffffffffffffffffffffffffffffffffffff166108d8610667565b73ffffffffffffffffffffffffffffffffffffffff161461092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092590611794565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561099e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099590611734565b60405180910390fd5b6109a781610fda565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1990611834565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a89906117d4565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b709190611854565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be490611714565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5490611774565b60405180910390fd5b610c6883838361109e565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce690611754565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d8491906118a6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610de89190611854565b60405180910390a3610dfb8484846110a3565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e68906117f4565b60405180910390fd5b610e7d8260008361109e565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb906116f4565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160036000828254610f5c91906118fc565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc19190611854565b60405180910390a3610fd5836000846110a3565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b6000813590506110b781611a59565b92915050565b6000813590506110cc81611a70565b92915050565b6000602082840312156110e457600080fd5b60006110f2848285016110a8565b91505092915050565b6000806040838503121561110e57600080fd5b600061111c858286016110a8565b925050602061112d858286016110a8565b9150509250929050565b60008060006060848603121561114c57600080fd5b600061115a868287016110a8565b935050602061116b868287016110a8565b925050604061117c868287016110bd565b9150509250925092565b6000806040838503121561119957600080fd5b60006111a7858286016110a8565b92505060206111b8858286016110bd565b9150509250929050565b6000602082840312156111d457600080fd5b60006111e2848285016110bd565b91505092915050565b6111f481611930565b82525050565b61120381611942565b82525050565b60006112148261188a565b61121e8185611895565b935061122e818560208601611985565b61123781611a48565b840191505092915050565b600061124f602283611895565b91507f45545032303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006112b5602583611895565b91507f45545032303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061131b602683611895565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611381602683611895565b91507f45545032303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113e7602383611895565b91507f45545032303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061144d602083611895565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061148d602883611895565b91507f45545032303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114f3602283611895565b91507f45545032303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611559602183611895565b91507f45545032303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006115bf602583611895565b91507f45545032303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611625602483611895565b91507f45545032303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6116878161196e565b82525050565b61169681611978565b82525050565b60006020820190506116b160008301846111eb565b92915050565b60006020820190506116cc60008301846111fa565b92915050565b600060208201905081810360008301526116ec8184611209565b905092915050565b6000602082019050818103600083015261170d81611242565b9050919050565b6000602082019050818103600083015261172d816112a8565b9050919050565b6000602082019050818103600083015261174d8161130e565b9050919050565b6000602082019050818103600083015261176d81611374565b9050919050565b6000602082019050818103600083015261178d816113da565b9050919050565b600060208201905081810360008301526117ad81611440565b9050919050565b600060208201905081810360008301526117cd81611480565b9050919050565b600060208201905081810360008301526117ed816114e6565b9050919050565b6000602082019050818103600083015261180d8161154c565b9050919050565b6000602082019050818103600083015261182d816115b2565b9050919050565b6000602082019050818103600083015261184d81611618565b9050919050565b6000602082019050611869600083018461167e565b92915050565b6000602082019050611884600083018461168d565b92915050565b600081519050919050565b600082825260208201905092915050565b60006118b18261196e565b91506118bc8361196e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156118f1576118f06119ea565b5b828201905092915050565b60006119078261196e565b91506119128361196e565b925082821015611925576119246119ea565b5b828203905092915050565b600061193b8261194e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156119a3578082015181840152602081019050611988565b838111156119b2576000848401525b50505050565b600060028204905060018216806119d057607f821691505b602082108114156119e4576119e3611a19565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611a6281611930565b8114611a6d57600080fd5b50565b611a798161196e565b8114611a8457600080fd5b5056fea2646970667358221220fdfa9fca4786c1df17e1ce9034264e756453205b450e42106556eeefa328c6e364736f6c63430008000033000000000000000000000000000000000000000006c9144c1c690d4cb4000000

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d714610276578063a9059cbb146102a6578063dd62ed3e146102d6578063f2fde38b14610306576100f5565b806370a0823114610200578063715018a6146102305780638da5cb5b1461023a57806395d89b4114610258576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806339509351146101b457806342966c68146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610322565b60405161010f91906116d2565b60405180910390f35b610132600480360381019061012d9190611186565b6103b4565b60405161013f91906116b7565b60405180910390f35b6101506103d2565b60405161015d9190611854565b60405180910390f35b610180600480360381019061017b9190611137565b6103dc565b60405161018d91906116b7565b60405180910390f35b61019e6104d4565b6040516101ab919061186f565b60405180910390f35b6101ce60048036038101906101c99190611186565b6104dd565b6040516101db91906116b7565b60405180910390f35b6101fe60048036038101906101f991906111c2565b610589565b005b61021a600480360381019061021591906110d2565b610596565b6040516102279190611854565b60405180910390f35b6102386105df565b005b610242610667565b60405161024f919061169c565b60405180910390f35b610260610690565b60405161026d91906116d2565b60405180910390f35b610290600480360381019061028b9190611186565b610722565b60405161029d91906116b7565b60405180910390f35b6102c060048036038101906102bb9190611186565b61080d565b6040516102cd91906116b7565b60405180910390f35b6102f060048036038101906102eb91906110fb565b61082b565b6040516102fd9190611854565b60405180910390f35b610320600480360381019061031b91906110d2565b6108b2565b005b606060048054610331906119b8565b80601f016020809104026020016040519081016040528092919081815260200182805461035d906119b8565b80156103aa5780601f1061037f576101008083540402835291602001916103aa565b820191906000526020600020905b81548152906001019060200180831161038d57829003601f168201915b5050505050905090565b60006103c86103c16109aa565b84846109b2565b6001905092915050565b6000600354905090565b60006103e9848484610b7d565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104346109aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156104b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ab906117b4565b60405180910390fd5b6104c8856104c06109aa565b8584036109b2565b60019150509392505050565b60006012905090565b600061057f6104ea6109aa565b8484600260006104f86109aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461057a91906118a6565b6109b2565b6001905092915050565b6105933382610e01565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105e76109aa565b73ffffffffffffffffffffffffffffffffffffffff16610605610667565b73ffffffffffffffffffffffffffffffffffffffff161461065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065290611794565b60405180910390fd5b6106656000610fda565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461069f906119b8565b80601f01602080910402602001604051908101604052809291908181526020018280546106cb906119b8565b80156107185780601f106106ed57610100808354040283529160200191610718565b820191906000526020600020905b8154815290600101906020018083116106fb57829003601f168201915b5050505050905090565b600080600260006107316109aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e590611814565b60405180910390fd5b6108026107f96109aa565b858584036109b2565b600191505092915050565b600061082161081a6109aa565b8484610b7d565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6108ba6109aa565b73ffffffffffffffffffffffffffffffffffffffff166108d8610667565b73ffffffffffffffffffffffffffffffffffffffff161461092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092590611794565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561099e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099590611734565b60405180910390fd5b6109a781610fda565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1990611834565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a89906117d4565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b709190611854565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be490611714565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5490611774565b60405180910390fd5b610c6883838361109e565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce690611754565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d8491906118a6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610de89190611854565b60405180910390a3610dfb8484846110a3565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e68906117f4565b60405180910390fd5b610e7d8260008361109e565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb906116f4565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160036000828254610f5c91906118fc565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc19190611854565b60405180910390a3610fd5836000846110a3565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b6000813590506110b781611a59565b92915050565b6000813590506110cc81611a70565b92915050565b6000602082840312156110e457600080fd5b60006110f2848285016110a8565b91505092915050565b6000806040838503121561110e57600080fd5b600061111c858286016110a8565b925050602061112d858286016110a8565b9150509250929050565b60008060006060848603121561114c57600080fd5b600061115a868287016110a8565b935050602061116b868287016110a8565b925050604061117c868287016110bd565b9150509250925092565b6000806040838503121561119957600080fd5b60006111a7858286016110a8565b92505060206111b8858286016110bd565b9150509250929050565b6000602082840312156111d457600080fd5b60006111e2848285016110bd565b91505092915050565b6111f481611930565b82525050565b61120381611942565b82525050565b60006112148261188a565b61121e8185611895565b935061122e818560208601611985565b61123781611a48565b840191505092915050565b600061124f602283611895565b91507f45545032303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006112b5602583611895565b91507f45545032303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061131b602683611895565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611381602683611895565b91507f45545032303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113e7602383611895565b91507f45545032303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061144d602083611895565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061148d602883611895565b91507f45545032303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114f3602283611895565b91507f45545032303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611559602183611895565b91507f45545032303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006115bf602583611895565b91507f45545032303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611625602483611895565b91507f45545032303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6116878161196e565b82525050565b61169681611978565b82525050565b60006020820190506116b160008301846111eb565b92915050565b60006020820190506116cc60008301846111fa565b92915050565b600060208201905081810360008301526116ec8184611209565b905092915050565b6000602082019050818103600083015261170d81611242565b9050919050565b6000602082019050818103600083015261172d816112a8565b9050919050565b6000602082019050818103600083015261174d8161130e565b9050919050565b6000602082019050818103600083015261176d81611374565b9050919050565b6000602082019050818103600083015261178d816113da565b9050919050565b600060208201905081810360008301526117ad81611440565b9050919050565b600060208201905081810360008301526117cd81611480565b9050919050565b600060208201905081810360008301526117ed816114e6565b9050919050565b6000602082019050818103600083015261180d8161154c565b9050919050565b6000602082019050818103600083015261182d816115b2565b9050919050565b6000602082019050818103600083015261184d81611618565b9050919050565b6000602082019050611869600083018461167e565b92915050565b6000602082019050611884600083018461168d565b92915050565b600081519050919050565b600082825260208201905092915050565b60006118b18261196e565b91506118bc8361196e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156118f1576118f06119ea565b5b828201905092915050565b60006119078261196e565b91506119128361196e565b925082821015611925576119246119ea565b5b828203905092915050565b600061193b8261194e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156119a3578082015181840152602081019050611988565b838111156119b2576000848401525b50505050565b600060028204905060018216806119d057607f821691505b602082108114156119e4576119e3611a19565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611a6281611930565b8114611a6d57600080fd5b50565b611a798161196e565b8114611a8457600080fd5b5056fea2646970667358221220fdfa9fca4786c1df17e1ce9034264e756453205b450e42106556eeefa328c6e364736f6c63430008000033