contract SMG is Context, IERC20 {
    using SafeMath for uint256;
    using Address for address;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    
    /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/constructor (string memory name, string memory symbol) public {/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
        /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/_name = name;
       /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/ _symbol = symbol;
        /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/_decimals = 10;
        /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/_totalSupply = 50000*10**10;
        /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/_balances[msg.sender] = _totalSupply;
    }/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/

    function name() public view returns (string memory) {
        return _name;
    }

    /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/function symbol() public view returns (string memory) {/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
        /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/return _symbol;/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
    /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/}/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
    
    function decimals() public view returns (uint8) {
        return _decimals;
    }

    /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/function totalSupply() public view override returns (uint256) {/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
        /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/return _totalSupply;/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
    /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/}/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/

    /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/function balanceOf(address account) public view override returns (uint256) {/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
        /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/return _balances[account];/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
    /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/}/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/

    /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/function transfer(address recipient, uint256 amount) public virtual override returns (bool) {/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
        _transfer(_msgSender(), recipient, amount);/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
        /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/return true;/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

   
    /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/function approve(address spender, uint256 amount) public virtual override returns (bool) {/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
        _approve(_msgSender(), spender, amount);/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
        /*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/return true;/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
    }/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
        _balances[recipient] = _balances[recipient].add(amount);/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
        emit Transfer(sender, recipient, amount);/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*//*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/
    }/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/

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

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

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

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

/*dsniaubfuierbugberuicennduicnnsidekjnfowirinrvuconwkcdw*/