ERC-20
Overview
Max Total Supply
1,000,000,000 $Buff
Holders
18
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
3,800,000 $BuffValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
OfficialBuffDoge
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
Yes with 200 runs
Other Settings:
byzantium EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity ^0.8.4; pragma experimental ABIEncoderV2; import "./utils/IUniswapV2Factory.sol"; import "./utils/IUniswapV2Pair.sol"; import "./utils/IUniswapV2Router02.sol"; import "./utils/IERC20.sol"; import "./utils/TimeLock.sol"; /** * @notice ERC20 token with cost basis tracking and restricted loss-taking */ contract OfficialBuffDoge is IERC20, TimeLock { address private constant UNISWAP_ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address private constant WETH = 0xc778417E063141139Fce010982780140Aa0cD5Ab; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping(address => uint256) private _basisOf; mapping(address => uint256) public cooldownOf; mapping (address => bool) private _isAllowedTransfer; mapping (address => bool) private _isExcluded; mapping (address => bool) private _blackList; address[] private _excluded; string private _NAME; string private _SYMBOL; uint256 private _DECIMALS; uint256 private constant _MAX = ~uint256(0); uint256 private constant _GRANULARITY = 100; uint256 private constant _maxTeamMintAmount = 1e8 ether; uint256 private _tTotal; uint256 private _rTotal; uint256 private _tFeeTotal; uint256 private _tBurnTotal; uint256 private _tMarketingFeeTotal; uint256 public _TAX_FEE; // 3% uint256 public _BURN_FEE; // 3% uint256 public _MARKET_FEE; // 3% // Track original fees to bypass fees for charity account uint256 private mintedSupply; address private _shoppingCart; address private _rewardWallet; address private _pair; address private _owner; bool private _paused; bool private _isEnableSwapTokenforEth; struct Minting { address recipient; uint amount; } struct StandardFees { uint taxFee; uint rewardFee; uint marketFee; uint taxPenaltyFee; uint rewardPenaltyFee; uint marketPenaltyFee; } StandardFees private _standardFees; mapping(address => address) private _referralOwner; mapping(address => uint256) private _referralOwnerTotalFee; constructor (string memory _name, string memory _symbol, uint256 _decimals, uint256 _supply, address[] memory blackList) { _owner = msg.sender; _NAME = _name; _SYMBOL = _symbol; _DECIMALS = _decimals; _tTotal =_supply * (10 ** uint256(_DECIMALS)); _rTotal = (_MAX - (_MAX % _tTotal)); // setup uniswap pair and store address _pair = IUniswapV2Factory(IUniswapV2Router02(UNISWAP_ROUTER).factory()) .createPair(WETH, address(this)); _rOwned[address(this)] = _rTotal; _excludeAccount(msg.sender); _excludeAccount(address(this)); _excludeAccount(_pair); _excludeAccount(UNISWAP_ROUTER); // prepare to add liquidity _approve(address(this), _owner, _rTotal); _paused = true; _isEnableSwapTokenforEth = false; if (blackList.length > 0) { for(uint k = 0; k < blackList.length; k++) { _blackList[blackList[k]] = true; } } } modifier isNotPaused() { require(_paused == false, "ERR: paused already"); _; } modifier onlyOwner() { require(_owner == msg.sender, "Ownable: caller is not the owner"); _; } function name() external view returns (string memory) { return _NAME; } function symbol() external view returns (string memory) { return _SYMBOL; } function decimals() external view returns (uint256) { return _DECIMALS; } function totalSupply() external view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) external override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) external view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender] - subtractedValue); return true; } function isExcluded(address account) external view returns (bool) { return _isExcluded[account]; } function totalFees() external view returns (uint256) { return _tFeeTotal; } function totalBurn() external view returns (uint256) { return _tBurnTotal; } function totalMarketingFees() external view returns (uint256) { return _tMarketingFeeTotal; } function checkReferralReward(address referralOwner) external view returns (uint256) { return _referralOwnerTotalFee[referralOwner]; } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) external view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); return rAmount / _getRate(); } function excludeAccount(address account) external onlyOwner { _excludeAccount(account); } function _excludeAccount(address account) private { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); _isAllowedTransfer[account] = true; excludeFromLock(account); } function includeAccount(address account) external onlyOwner { require(_isExcluded[account], "Account is already included"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "TOKEN20: approve from the zero address"); require(spender != address(0), "TOKEN20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function basisOf(address account) public view returns (uint256) { uint256 basis = _basisOf[account]; if (basis == 0 && balanceOf(account) > 0) { basis = 0; } return basis; } function setBusinessWallet(address businessAddress) external onlyOwner isNotPaused returns (bool) { require(businessAddress != address(0), "ERR: zero address"); _shoppingCart = businessAddress; uint256 cartAmount = 5e7 ether; _removeFee(); _transferFromExcluded(address(this), businessAddress, cartAmount); _restoreAllFee(); _excludeAccount(businessAddress); return true; } function setRewardAddress(address rewardAddress) external onlyOwner isNotPaused returns (bool) { require(rewardAddress != address(0), "ERR: zero address"); _rewardWallet = rewardAddress; uint256 burnAmount = 35 * 1e7 ether; _removeFee(); _transferFromExcluded(address(this), rewardAddress, burnAmount); _restoreAllFee(); _excludeAccount(rewardAddress); return true; } function setTokenExchange(address exchangeAddress) external onlyOwner isNotPaused returns (bool) { require(exchangeAddress != address(0), "ERR: zero address"); _approve(address(this), exchangeAddress, 1e8 ether); return true; } function setReferralOwner(address referralUser, address referralOwner) external returns (bool) { require(_referralOwner[referralUser] == address(0), "ERR: address registered already"); require(referralUser != address(0), "ERR: zero address"); require(referralOwner != address(0), "ERR: zero address"); _referralOwner[referralUser] = referralOwner; return true; } function setStandardFee(StandardFees memory _standardFee) external onlyOwner isNotPaused returns (bool) { require (_standardFee.taxFee < 100 && _standardFee.rewardFee < 100 && _standardFee.marketFee < 100, "ERR: Fee is so high"); require ( _standardFee.taxPenaltyFee < 100 && _standardFee.rewardPenaltyFee < 100 && _standardFee.marketPenaltyFee < 100, "ERR: Fee is so high"); _standardFees = _standardFee; return true; } function addBlackList(address blackAddress) external onlyOwner returns (bool) { require(blackAddress != _owner); require(!_blackList[blackAddress]); _blackList[blackAddress] = true; return true; } function removeBlackList(address removeAddress) external onlyOwner returns (bool) { require(_blackList[removeAddress]); require(removeAddress != _owner); _blackList[removeAddress] = false; return true; } function mintDev(Minting[] calldata mintings) external onlyOwner returns (bool) { require(mintings.length > 0, "ERR: zero address array"); _removeFee(); for(uint i = 0; i < mintings.length; i++) { Minting memory m = mintings[i]; require(mintedSupply + m.amount <= _maxTeamMintAmount, "ERR: exceed max team mint amount"); _transferFromExcluded(address(this), m.recipient, m.amount); mintedSupply += m.amount; lockAddress(m.recipient, uint64(180 days)); } _restoreAllFee(); return true; } function pausedEnable() external onlyOwner returns (bool) { require(!_paused, "ERR: already pause enabled"); _paused = true; return true; } function pausedNotEnable() external onlyOwner returns (bool) { require(_paused, "ERR: already pause disabled"); _paused = false; return true; } function swapTokenForEthEnable() external onlyOwner isNotPaused returns (bool) { require(!_isEnableSwapTokenforEth, "ERR: already enabled"); _isEnableSwapTokenforEth = true; return true; } function swapTokenForEthDisable() external onlyOwner isNotPaused returns (bool) { require(_isEnableSwapTokenforEth, "ERR: already disabled"); _isEnableSwapTokenforEth = false; return true; } function checkReferralOwner(address referralUser) external view returns (address) { require(referralUser != address(0), "ERR: zero address"); return _referralOwner[referralUser]; } function checkedTimeLock(address user) external view returns (bool) { return !isUnLocked(user); } function checkAllowedTransfer(address user) external view returns (bool) { return _isAllowedTransfer[user]; } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal { require(!_blackList[from] && !_blackList[to]); // ignore minting and burning if (from == address(0) || to == address(0)) return; // ignore add/remove liquidity if (from == address(this) || to == address(this)) return; if (from == _owner || to == _owner) return; if (from == UNISWAP_ROUTER || to == UNISWAP_ROUTER) return; require( msg.sender == UNISWAP_ROUTER || msg.sender == _pair || msg.sender == _owner || _isAllowedTransfer[from] || _isAllowedTransfer[to], "ERR: sender must be uniswap or shoppingCart" ); address[] memory path = new address[](2); if (from == _pair && !_isExcluded[to]) { require(isUnLocked(to), "ERR: address is locked(buy)"); require( cooldownOf[to] < block.timestamp /* revert message not returned by Uniswap */ ); cooldownOf[to] = block.timestamp + (30 minutes); path[0] = WETH; path[1] = address(this); uint256[] memory amounts = IUniswapV2Router02(UNISWAP_ROUTER).getAmountsIn(amount, path); uint256 balance = balanceOf(to); uint256 fromBasis = (1 ether) * amounts[0] / amount; _basisOf[to] = (fromBasis * amount + basisOf(to) * balance) / (amount + balance); } else if (to == _pair && !_isExcluded[from]) { require(isUnLocked(from), "ERR: address is locked(sales)"); require( cooldownOf[from] < block.timestamp /* revert message not returned by Uniswap */ ); cooldownOf[from] = block.timestamp + (30 minutes); } } function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); _beforeTokenTransfer(sender, recipient, amount); _transferWithFee(sender, recipient, amount); emit Transfer(sender, recipient, amount); } function _transferWithFee( address sender, address recipient, uint256 amount ) private returns (bool) { uint liquidityBalance = balanceOf(_pair); if(sender == _pair && !_isAllowedTransfer[recipient]) { require(amount <= liquidityBalance / 100, "ERR: Exceed the 1% of current liquidity balance"); _restoreAllFee(); } else if(recipient == _pair && !_isAllowedTransfer[sender]) { require(_isEnableSwapTokenforEth, "ERR: disabled swap"); require(amount <= liquidityBalance / 100, "ERR: Exceed the 1% of current liquidity balance"); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uint[] memory amounts = IUniswapV2Router02(UNISWAP_ROUTER).getAmountsOut( amount, path ); if (basisOf(sender) <= (1 ether) * amounts[1] / amount) { _restoreAllFee(); } else { _setPenaltyFee(); } } else { _removeFee(); } if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { if(recipient == _pair) { _transferToExcludedForSale(sender, recipient, amount); } else { _transferToExcluded(sender, recipient, amount); } } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } _restoreAllFee(); return true; } function _transferStandard(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) = _getValues(tAmount); uint256 rBurn = tBurn * currentRate; uint256 rMarket = tMarket * currentRate; _standardTransferContent(sender, recipient, rAmount, rTransferAmount); if (tMarket > 0) { _sendToBusinees(tMarket, sender, recipient); } if (tBurn > 0) { _sendToBurn(tBurn, sender); } _reflectFee(rFee, rBurn, rMarket, tFee, tBurn, tMarket); emit Transfer(sender, recipient, tTransferAmount); } function _standardTransferContent(address sender, address recipient, uint256 rAmount, uint256 rTransferAmount) private { _rOwned[sender] = _rOwned[sender] - rAmount; _rOwned[recipient] = _rOwned[recipient] + rTransferAmount; } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) = _getValues(tAmount); uint256 rBurn = tBurn * currentRate; uint256 rMarket = tMarket * currentRate; _excludedFromTransferContent(sender, recipient, tTransferAmount, rAmount, rTransferAmount); if (tMarket > 0) { _sendToBusinees(tMarket, sender, recipient); } if (tBurn > 0) { _sendToBurn(tBurn, sender); } _reflectFee(rFee, rBurn, rMarket, tFee, tBurn, tMarket); emit Transfer(sender, recipient, tTransferAmount); } function _excludedFromTransferContent(address sender, address recipient, uint256 tTransferAmount, uint256 rAmount, uint256 rTransferAmount) private { _rOwned[sender] = _rOwned[sender] - rAmount; _tOwned[recipient] = _tOwned[recipient] + tTransferAmount; _rOwned[recipient] = _rOwned[recipient] + rTransferAmount; } function _transferToExcludedForSale(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) = _getValuesForSale(tAmount); uint256 rBurn = tBurn * currentRate; uint256 rMarket = tMarket * currentRate; _excludedFromTransferContentForSale(sender, recipient, tAmount, rAmount, rTransferAmount); if (tMarket > 0) { _sendToBusinees(tMarket, sender, recipient); } if (tBurn > 0) { _sendToBurn(tBurn, sender); } _reflectFee(rFee, rBurn, rMarket, tFee, tBurn, tMarket); emit Transfer(sender, recipient, tTransferAmount); } function _excludedFromTransferContentForSale(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 rTransferAmount) private { _rOwned[sender] = _rOwned[sender] - rTransferAmount; _tOwned[recipient] = _tOwned[recipient] + tAmount; _rOwned[recipient] = _rOwned[recipient] + rAmount; } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) = _getValues(tAmount); uint256 rBurn = tBurn * currentRate; uint256 rMarket = tMarket * currentRate; _excludedToTransferContent(sender, recipient, tAmount, rAmount, rTransferAmount); if (tMarket > 0) { _sendToBusinees(tMarket, sender, recipient); } if (tBurn > 0) { _sendToBurn(tBurn, sender); } _reflectFee(rFee, rBurn, rMarket, tFee, tBurn, tMarket); emit Transfer(sender, recipient, tTransferAmount); } function _excludedToTransferContent(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 rTransferAmount) private { _tOwned[sender] = _tOwned[sender] - tAmount; _rOwned[sender] = _rOwned[sender] - rAmount; _rOwned[recipient] = _rOwned[recipient] + rTransferAmount; } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) = _getValues(tAmount); uint256 rBurn = tBurn * currentRate; uint256 rMarket = tMarket * currentRate; _bothTransferContent(sender, recipient, tAmount, rAmount, tTransferAmount, rTransferAmount); if (tMarket > 0) { _sendToBusinees(tMarket, sender, recipient); } if (tBurn > 0) { _sendToBurn(tBurn, sender); } _reflectFee(rFee, rBurn, rMarket, tFee, tBurn, tMarket); emit Transfer(sender, recipient, tTransferAmount); } function _bothTransferContent(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 tTransferAmount, uint256 rTransferAmount) private { _tOwned[sender] = _tOwned[sender] - tAmount; _rOwned[sender] = _rOwned[sender] - rAmount; _tOwned[recipient] = _tOwned[recipient] + tTransferAmount; _rOwned[recipient] = _rOwned[recipient] + rTransferAmount; } function _reflectFee(uint256 rFee, uint256 rBurn, uint256 rMarket, uint256 tFee, uint256 tBurn, uint256 tMarket) private { _rTotal = _rTotal - rFee - rBurn - rMarket; _tFeeTotal = _tFeeTotal + tFee; _tBurnTotal = _tBurnTotal + tBurn; _tMarketingFeeTotal = _tMarketingFeeTotal + tMarket; } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tFee, uint256 tBurn, uint256 tMarket) = _getTBasics(tAmount, _TAX_FEE, _BURN_FEE, _MARKET_FEE); uint256 tTransferAmount = getTTransferAmount(tAmount, tFee, tBurn, tMarket); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rFee) = _getRBasics(tAmount, tFee, currentRate); uint256 rTransferAmount = _getRTransferAmount(rAmount, rFee, tBurn, tMarket, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn, tMarket); } function _getValuesForSale(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tFee, uint256 tBurn, uint256 tMarket) = _getTBasics(tAmount, _TAX_FEE, _BURN_FEE, _MARKET_FEE); uint256 tTransferAmountForSale = getTTransferAmountForSale(tAmount, tFee, tBurn, tMarket); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rFee) = _getRBasics(tAmount, tFee, currentRate); uint256 rTransferAmountForSale = _getRTransferAmountForSale(rAmount, rFee, tBurn, tMarket, currentRate); return (rAmount, rTransferAmountForSale, rFee, tTransferAmountForSale, tFee, tBurn, tMarket); } function _getTBasics(uint256 tAmount, uint256 taxFee, uint256 burnFee, uint256 marketFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = (tAmount * taxFee) / _GRANULARITY / 100; uint256 tBurn = (tAmount * burnFee) / _GRANULARITY / 100; uint256 tMarket = (tAmount * marketFee) / _GRANULARITY / 100; return (tFee, tBurn, tMarket); } function getTTransferAmount(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) private pure returns (uint256) { return tAmount - tFee - tBurn - tMarket; } function getTTransferAmountForSale(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) private pure returns (uint256) { return tAmount + tFee + tBurn + tMarket; } function _getRBasics(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256) { uint256 rAmount = tAmount * currentRate; uint256 rFee = tFee * currentRate; return (rAmount, rFee); } function _getRTransferAmount(uint256 rAmount, uint256 rFee, uint256 tBurn, uint256 tMarket, uint256 currentRate) private pure returns (uint256) { uint256 rBurn = tBurn * currentRate; uint256 rMarket = tMarket * currentRate; uint256 rTransferAmount = rAmount - rFee - rBurn - rMarket; return rTransferAmount; } function _getRTransferAmountForSale(uint256 rAmount, uint256 rFee, uint256 tBurn, uint256 tMarket, uint256 currentRate) private pure returns (uint256) { uint256 rBurn = tBurn * currentRate; uint256 rMarket = tMarket * currentRate; uint256 rTransferAmountForSale = rAmount + rFee + rBurn + rMarket; return rTransferAmountForSale; } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply / tSupply; } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply - _rOwned[_excluded[i]]; tSupply = tSupply - _tOwned[_excluded[i]]; } if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _sendToBusinees(uint256 tMarket, address sender, address recipient) private { uint256 currentRate = _getRate(); uint256 rMarket = tMarket * currentRate; if(sender == _pair && _referralOwner[recipient] != address(0)) { _sendToReferralOwner(tMarket, rMarket, _referralOwner[recipient]); emit Transfer(sender, _referralOwner[recipient], tMarket); } else { _rOwned[_shoppingCart] = _rOwned[_shoppingCart] + rMarket; _tOwned[_shoppingCart] = _tOwned[_shoppingCart] + tMarket; emit Transfer(sender, _shoppingCart, tMarket); } } function _sendToBurn(uint256 tBurn, address sender) private { uint256 currentRate = _getRate(); uint256 rBurn = tBurn * currentRate; _rOwned[_rewardWallet] = _rOwned[_rewardWallet] + rBurn; _tOwned[_rewardWallet] = _tOwned[_rewardWallet] + rBurn; emit Transfer(sender, _rewardWallet, tBurn); } function _sendToReferralOwner(uint256 tMarket, uint256 rMarket, address owner) private { if(_isExcluded[owner]) { _rOwned[owner] = _rOwned[owner] + rMarket; _tOwned[owner] = _tOwned[owner] + tMarket; } else { _rOwned[owner] = _rOwned[owner] + rMarket; } _referralOwnerTotalFee[owner] += tMarket; } function _removeFee() private { if(_TAX_FEE == 0 && _BURN_FEE == 0 && _MARKET_FEE == 0) return; _TAX_FEE = 0; _BURN_FEE = 0; _MARKET_FEE = 0; } function _restoreAllFee() private { _TAX_FEE = _standardFees.taxFee * 100; _BURN_FEE = _standardFees.rewardFee * 100; _MARKET_FEE = _standardFees.marketFee * 100; } function _setPenaltyFee() private { _TAX_FEE = _standardFees.taxPenaltyFee * 100; _BURN_FEE = _standardFees.rewardPenaltyFee * 100; _MARKET_FEE = _standardFees.marketPenaltyFee * 100; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity ^0.8.4; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity ^0.8.4; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity ^0.8.4; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity ^0.8.4; import './IUniswapV2Router01.sol'; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity ^0.8.4; abstract contract TimeLock { struct LockedAddress { uint64 lockedPeriod; uint64 endTime; } mapping(address => LockedAddress) private _lockedList; mapping (address => bool) private _isExlcludeFromLock; constructor () { } function lockAddress(address _lockAddress, uint64 lockTime) internal virtual { require(_lockAddress != address(0), "ERR: zero lock address"); require(lockTime > 0, "ERR: zero lock period"); if (!_isExlcludeFromLock[_lockAddress]) { _lockedList[_lockAddress].lockedPeriod = lockTime; _lockedList[_lockAddress].endTime = uint64(block.timestamp) + lockTime; } } function isUnLocked(address _lockAddress) internal view virtual returns (bool) { require(_lockAddress != address(0), "ERR: zero lock address"); if (_isExlcludeFromLock[_lockAddress]) return true; return _lockedList[_lockAddress].endTime < uint64(block.timestamp); } function excludeFromLock(address _lockAddress) internal virtual { require(_lockAddress != address(0), "ERR: zero lock address"); if (_isExlcludeFromLock[_lockAddress]) return; _isExlcludeFromLock[_lockAddress] = true; } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "byzantium", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_decimals","type":"uint256"},{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"address[]","name":"blackList","type":"address[]"}],"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":[],"name":"_BURN_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_MARKET_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"blackAddress","type":"address"}],"name":"addBlackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"basisOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"checkAllowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referralUser","type":"address"}],"name":"checkReferralOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referralOwner","type":"address"}],"name":"checkReferralReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"checkedTimeLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"cooldownOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct OfficialBuffDoge.Minting[]","name":"mintings","type":"tuple[]"}],"name":"mintDev","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":"pausedEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pausedNotEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"removeAddress","type":"address"}],"name":"removeBlackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"businessAddress","type":"address"}],"name":"setBusinessWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"referralUser","type":"address"},{"internalType":"address","name":"referralOwner","type":"address"}],"name":"setReferralOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardAddress","type":"address"}],"name":"setRewardAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"rewardFee","type":"uint256"},{"internalType":"uint256","name":"marketFee","type":"uint256"},{"internalType":"uint256","name":"taxPenaltyFee","type":"uint256"},{"internalType":"uint256","name":"rewardPenaltyFee","type":"uint256"},{"internalType":"uint256","name":"marketPenaltyFee","type":"uint256"}],"internalType":"struct OfficialBuffDoge.StandardFees","name":"_standardFee","type":"tuple"}],"name":"setStandardFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"exchangeAddress","type":"address"}],"name":"setTokenExchange","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokenForEthDisable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokenForEthEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162004c3038038062004c30833981016040819052620000349162000c08565b601a8054600160a060020a0319163317905584516200005b90600b90602088019062000a90565b5083516200007190600c90602087019062000a90565b50600d8390556200008483600a62000db6565b62000090908362000e73565b600e819055620000a39060001962000f23565b620000b19060001962000e95565b600f81905550737a250d5630b4cf539739df2c5dacb4c659f2488d600160a060020a031663c45a01556040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156200012157600080fd5b505afa15801562000136573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015c919062000be4565b6040517fc9c6539600000000000000000000000000000000000000000000000000000000815273c778417e063141139fce010982780140aa0cd5ab6004820152306024820152600160a060020a03919091169063c9c6539690604401602060405180830381600087803b158015620001d357600080fd5b505af1158015620001e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020e919062000be4565b60198054600160a060020a031916600160a060020a0392909216919091179055600f54306000908152600260205260409020556200025533640100000000620003aa810204565b6200026930640100000000620003aa810204565b6019546200028990600160a060020a0316640100000000620003aa810204565b620002b1737a250d5630b4cf539739df2c5dacb4c659f2488d640100000000620003aa810204565b601a54600f54620002d9913091600160a060020a039091169064010000000062000528810204565b601a805460a060020a61ffff021916740100000000000000000000000000000000000000001790558051156200039f5760005b81518110156200039d5760016009600084848151811062000356577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff191691151591909117905580620003948162000f05565b9150506200030c565b505b505050505062000fc7565b600160a060020a03811660009081526008602052604090205460ff161562000433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064015b60405180910390fd5b600160a060020a038116600090815260026020526040902054156200049957600160a060020a0381166000908152600260205260409020546200047f90640100000000620006b8810204565b600160a060020a0382166000908152600360205260409020555b600160a060020a03811660008181526008602090815260408083208054600160ff199182168117909255600a80548084019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8018054600160a060020a03191690961790955560079092529091208054909216179055620005258164010000000062000773810204565b50565b600160a060020a038316620005c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200042a565b600160a060020a03821662000657576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f544f4b454e32303a20617070726f766520746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016200042a565b600160a060020a0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000600f548211156200074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e730000000000000000000000000000000000000000000060648201526084016200042a565b6200076164010000000062000831810204565b6200076d908362000d54565b92915050565b600160a060020a038116620007e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552523a207a65726f206c6f636b20616464726573730000000000000000000060448201526064016200042a565b600160a060020a03811660009081526001602052604090205460ff16156200080a5750565b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b600080806200084864010000000062000860810204565b909250905062000859818362000d54565b9250505090565b600f54600e546000918291825b600a5481101562000a5c578260026000600a8481548110620008b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602080832090910154600160a060020a0316835282019290925260400190205411806200094c57508160036000600a848154811062000925577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054115b156200096357600f54600e54945094505050509091565b60026000600a8381548110620009a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054620009d3908462000e95565b925060036000600a838154811062000a14577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602080832090910154600160a060020a0316835282019290925260400190205462000a45908362000e95565b91508062000a538162000f05565b9150506200086d565b50600e54600f5462000a6f919062000d54565b82101562000a8757600f54600e549350935050509091565b90939092509050565b82805462000a9e9062000eaf565b90600052602060002090601f01602090048101928262000ac2576000855562000b0d565b82601f1062000add57805160ff191683800117855562000b0d565b8280016001018555821562000b0d579182015b8281111562000b0d57825182559160200191906001019062000af0565b5062000b1b92915062000b1f565b5090565b5b8082111562000b1b576000815560010162000b20565b8051600160a060020a038116811462000b4e57600080fd5b919050565b600082601f83011262000b64578081fd5b81516001604060020a0381111562000b805762000b8062000f98565b602062000b96601f8301601f1916820162000d21565b828152858284870101111562000baa578384fd5b835b8381101562000bc957858101830151828201840152820162000bac565b8381111562000bda57848385840101525b5095945050505050565b60006020828403121562000bf6578081fd5b62000c018262000b36565b9392505050565b600080600080600060a0868803121562000c20578081fd5b85516001604060020a038082111562000c37578283fd5b62000c4589838a0162000b53565b965060209150818801518181111562000c5c578384fd5b62000c6a8a828b0162000b53565b965050604088015194506060880151935060808801518181111562000c8d578384fd5b8801601f81018a1362000c9e578384fd5b80518281111562000cb35762000cb362000f98565b838102925062000cc584840162000d21565b8181528481019083860185850187018e101562000ce0578788fd5b8795505b8386101562000d0d5762000cf88162000b36565b83526001959095019491860191860162000ce4565b508096505050505050509295509295909350565b604051601f8201601f191681016001604060020a038111828210171562000d4c5762000d4c62000f98565b604052919050565b60008262000d665762000d6662000f69565b500490565b600181815b8085111562000dae57816000190482111562000d905762000d9062000f3a565b8085161562000d9e57918102915b6002909404939080029062000d70565b509250929050565b600062000c01838360008262000dcf575060016200076d565b8162000dde575060006200076d565b816001811462000df7576002811462000e025762000e23565b60019150506200076d565b60ff84111562000e165762000e1662000f3a565b8360020a9150506200076d565b5060208310610133831016604e8410600b841016171562000e48575081810a6200076d565b62000e54838362000d6b565b806000190482111562000e6b5762000e6b62000f3a565b029392505050565b600081600019048311821515161562000e905762000e9062000f3a565b500290565b60008282101562000eaa5762000eaa62000f3a565b500390565b60028104600182168062000ec457607f821691505b6020821081141562000eff577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060001982141562000f1c5762000f1c62000f3a565b5060010190565b60008262000f355762000f3562000f69565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613c598062000fd76000396000f3fe608060405234801561001057600080fd5b5060043610610265576000357c01000000000000000000000000000000000000000000000000000000009004806395d89b4111610158578063d84bf7a8116100d5578063f0d9746911610099578063f0d9746914610519578063f2cc0c181461052c578063f357038814610541578063f84354f11461056a578063fb3a236f1461057d57600080fd5b8063d84bf7a814610486578063dd62ed3e1461048e578063e26af579146104c7578063e4997dc5146104f3578063e86203581461050657600080fd5b8063b58624281161011c578063b58624281461040b578063c9d390d314610414578063cba0e9961461043f578063d44ad87b1461046b578063d6f84b451461047357600080fd5b806395d89b41146103b5578063a457c2d7146103bd578063a9059cbb146103d0578063a9789268146103e3578063b33a7a17146103eb57600080fd5b80633c9f861d116101e65780635afe70d7116101aa5780635afe70d71461036a5780635e00e6791461037d57806370a082311461039057806377ef7993146103a357806390cda415146103ac57600080fd5b80633c9f861d1461032c5780633f5987a9146103345780634549b0391461033c5780634851f2b51461034f5780634e7a6a021461035757600080fd5b806323b872dd1161022d57806323b872dd146102d85780632d838119146102eb578063313ce567146102fe5780633280aba614610306578063395093511461031957600080fd5b806306fdde031461026a578063095ea7b3146102885780630ecb93c0146102ab57806313114a9d146102be57806318160ddd146102d0575b600080fd5b610272610590565b60405161027f91906138ca565b60405180910390f35b61029b610296366004613670565b610622565b604051901515815260200161027f565b61029b6102b93660046135e2565b610639565b6010545b60405190815260200161027f565b600e546102c2565b61029b6102e6366004613635565b6106e0565b6102c26102f936600461387f565b610732565b600d546102c2565b61029b610314366004613699565b6107c1565b61029b610327366004613670565b610959565b6011546102c2565b61029b610990565b6102c261034a366004613897565b610a80565b61029b610b12565b6102c26103653660046135e2565b610bc2565b61029b6103783660046135e2565b610bff565b61029b61038b3660046135e2565b610cdd565b6102c261039e3660046135e2565b610da0565b6102c260145481565b6102c260155481565b610272610dff565b61029b6103cb366004613670565b610e0e565b61029b6103de366004613670565b610e45565b61029b610e52565b6102c26103f93660046135e2565b60066020526000908152604090205481565b6102c260135481565b6104276104223660046135e2565b610f5b565b604051600160a060020a03909116815260200161027f565b61029b61044d3660046135e2565b600160a060020a031660009081526008602052604090205460ff1690565b61029b610fa5565b61029b610481366004613603565b61105c565b6012546102c2565b6102c261049c366004613603565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b61029b6104d53660046135e2565b600160a060020a031660009081526007602052604090205460ff1690565b61029b6105013660046135e2565b61115a565b61029b610514366004613806565b6111ef565b61029b6105273660046135e2565b61136b565b61053f61053a3660046135e2565b61140f565b005b6102c261054f3660046135e2565b600160a060020a031660009081526022602052604090205490565b61053f6105783660046135e2565b611448565b61029b61058b3660046135e2565b611663565b6060600b805461059f90613b78565b80601f01602080910402602001604051908101604052809291908181526020018280546105cb90613b78565b80156106185780601f106105ed57610100808354040283529160200191610618565b820191906000526020600020905b8154815290600101906020018083116105fb57829003601f168201915b5050505050905090565b600061062f338484611675565b5060015b92915050565b601a54600090600160a060020a031633146106725760405160e560020a62461bcd028152600401610669906139b1565b60405180910390fd5b601a54600160a060020a038381169116141561068d57600080fd5b600160a060020a03821660009081526009602052604090205460ff16156106b357600080fd5b50600160a060020a0381166000908152600960205260409020805460ff191660019081179091555b919050565b60006106ed8484846117d4565b600160a060020a038416600090815260046020908152604080832033808552925290912054610728918691610723908690613b61565b611675565b5060019392505050565b6000600f548211156107af5760405160e560020a62461bcd02815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610669565b6107b7611995565b6106339083613b1f565b601a54600090600160a060020a031633146107f15760405160e560020a62461bcd028152600401610669906139b1565b816108415760405160e560020a62461bcd02815260206004820152601760248201527f4552523a207a65726f20616464726573732061727261790000000000000000006044820152606401610669565b6108496119b8565b60005b828110156109505760008484838181106108795760e060020a634e487b7102600052603260045260246000fd5b90506040020180360381019061088f91906137b0565b90506a52b7d2dcc80cd2e400000081602001516016546108af9190613adb565b11156109005760405160e560020a62461bcd02815260206004820181905260248201527f4552523a20657863656564206d6178207465616d206d696e7420616d6f756e746044820152606401610669565b61091330826000015183602001516119ec565b8060200151601660008282546109299190613adb565b9091555050805161093d9062ed4e00611abe565b508061094881613bb6565b91505061084c565b5061062f611bf2565b336000818152600460209081526040808320600160a060020a0387168452909152812054909161062f918590610723908690613adb565b601a54600090600160a060020a031633146109c05760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff16156109ed5760405160e560020a62461bcd028152600401610669906139e6565b601a547501000000000000000000000000000000000000000000900460ff16610a5b5760405160e560020a62461bcd02815260206004820152601560248201527f4552523a20616c72656164792064697361626c656400000000000000000000006044820152606401610669565b50601a805475ff00000000000000000000000000000000000000000019169055600190565b6000600e54831115610ad75760405160e560020a62461bcd02815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610669565b81610af7576000610ae784611c27565b5094965061063395505050505050565b6000610b0284611c27565b5093965061063395505050505050565b601a54600090600160a060020a03163314610b425760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff16610b9e5760405160e560020a62461bcd02815260206004820152601b60248201527f4552523a20616c72656164792070617573652064697361626c656400000000006044820152606401610669565b50601a805474ff000000000000000000000000000000000000000019169055600190565b600160a060020a03811660009081526005602052604081205480158015610bf157506000610bef84610da0565b115b156106335750600092915050565b601a54600090600160a060020a03163314610c2f5760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff1615610c5c5760405160e560020a62461bcd028152600401610669906139e6565b600160a060020a038216610c855760405160e560020a62461bcd02815260040161066990613a1d565b6017805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790556a295be96e64066972000000610cc16119b8565b610ccc3084836119ec565b610cd4611bf2565b61062f83611cab565b601a54600090600160a060020a03163314610d0d5760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff1615610d3a5760405160e560020a62461bcd028152600401610669906139e6565b600160a060020a038216610d635760405160e560020a62461bcd02815260040161066990613a1d565b6018805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790556b0121836204bc2ce21e000000610cc16119b8565b600160a060020a03811660009081526008602052604081205460ff1615610ddd5750600160a060020a031660009081526003602052604090205490565b600160a060020a03821660009081526002602052604090205461063390610732565b6060600c805461059f90613b78565b336000818152600460209081526040808320600160a060020a0387168452909152812054909161062f918590610723908690613b61565b600061062f3384846117d4565b601a54600090600160a060020a03163314610e825760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff1615610eaf5760405160e560020a62461bcd028152600401610669906139e6565b601a547501000000000000000000000000000000000000000000900460ff1615610f1e5760405160e560020a62461bcd02815260206004820152601460248201527f4552523a20616c726561647920656e61626c65640000000000000000000000006044820152606401610669565b50601a805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055600190565b6000600160a060020a038216610f865760405160e560020a62461bcd02815260040161066990613a1d565b50600160a060020a039081166000908152602160205260409020541690565b601a54600090600160a060020a03163314610fd55760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff16156110325760405160e560020a62461bcd02815260206004820152601a60248201527f4552523a20616c726561647920706175736520656e61626c65640000000000006044820152606401610669565b50601a805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600160a060020a03828116600090815260216020526040812054909116156110c95760405160e560020a62461bcd02815260206004820152601f60248201527f4552523a2061646472657373207265676973746572656420616c7265616479006044820152606401610669565b600160a060020a0383166110f25760405160e560020a62461bcd02815260040161066990613a1d565b600160a060020a03821661111b5760405160e560020a62461bcd02815260040161066990613a1d565b50600160a060020a039182166000908152602160205260409020805473ffffffffffffffffffffffffffffffffffffffff191691909216179055600190565b601a54600090600160a060020a0316331461118a5760405160e560020a62461bcd028152600401610669906139b1565b600160a060020a03821660009081526009602052604090205460ff166111af57600080fd5b601a54600160a060020a03838116911614156111ca57600080fd5b50600160a060020a03166000908152600960205260409020805460ff19169055600190565b601a54600090600160a060020a0316331461121f5760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff161561124c5760405160e560020a62461bcd028152600401610669906139e6565b81516064118015611261575060648260200151105b8015611271575060648260400151105b6112c05760405160e560020a62461bcd02815260206004820152601360248201527f4552523a2046656520697320736f2068696768000000000000000000000000006044820152606401610669565b606482606001511080156112d8575060648260800151105b80156112e8575060648260a00151105b6113375760405160e560020a62461bcd02815260206004820152601360248201527f4552523a2046656520697320736f2068696768000000000000000000000000006044820152606401610669565b508051601b55602080820151601c556040820151601d556060820151601e556080820151601f5560a0909101519055600190565b601a54600090600160a060020a0316331461139b5760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff16156113c85760405160e560020a62461bcd028152600401610669906139e6565b600160a060020a0382166113f15760405160e560020a62461bcd02815260040161066990613a1d565b61140730836a52b7d2dcc80cd2e4000000611675565b506001919050565b601a54600160a060020a0316331461143c5760405160e560020a62461bcd028152600401610669906139b1565b61144581611cab565b50565b601a54600160a060020a031633146114755760405160e560020a62461bcd028152600401610669906139b1565b600160a060020a03811660009081526008602052604090205460ff166114e05760405160e560020a62461bcd02815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610669565b60005b600a5481101561165f5781600160a060020a0316600a828154811061151b5760e060020a634e487b7102600052603260045260246000fd5b600091825260209091200154600160a060020a0316141561164d57600a805461154690600190613b61565b815481106115675760e060020a634e487b7102600052603260045260246000fd5b600091825260209091200154600a8054600160a060020a0390921691839081106115a45760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039485161790559184168152600382526040808220829055600890925220805460ff19169055600a80548061161a5760e060020a634e487b7102600052603160045260246000fd5b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b8061165781613bb6565b9150506114e3565b5050565b600061166e82611dff565b1592915050565b600160a060020a0383166116f45760405160e560020a62461bcd02815260206004820152602660248201527f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610669565b600160a060020a0382166117725760405160e560020a62461bcd028152602060048201526024808201527f544f4b454e32303a20617070726f766520746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610669565b600160a060020a0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600160a060020a0383166118535760405160e560020a62461bcd02815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610669565b600160a060020a0382166118d25760405160e560020a62461bcd02815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610669565b6000811161194b5760405160e560020a62461bcd02815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610669565b611956838383611e8a565b611961838383612481565b5081600160a060020a031683600160a060020a0316600080516020613c04833981519152836040516117c791815260200190565b60008060006119a261294f565b90925090506119b18183613b1f565b9250505090565b6013541580156119c85750601454155b80156119d45750601554155b156119db57565b600060138190556014819055601555565b60006119f6611995565b90506000806000806000806000611a0c89611c27565b965096509650965096509650965060008883611a289190613b42565b90506000611a368a84613b42565b9050611a458d8d8d8c8c612b16565b8215611a5657611a56838e8e612bbd565b8315611a6657611a66848e612d3b565b611a74878383888888612e0c565b8b600160a060020a03168d600160a060020a0316600080516020613c0483398151915288604051611aa791815260200190565b60405180910390a350505050505050505050505050565b600160a060020a038216611ae75760405160e560020a62461bcd0281526004016106699061397a565b60008167ffffffffffffffff1611611b445760405160e560020a62461bcd02815260206004820152601560248201527f4552523a207a65726f206c6f636b20706572696f6400000000000000000000006044820152606401610669565b600160a060020a03821660009081526001602052604090205460ff1661165f57600160a060020a0382166000908152602081905260409020805467ffffffffffffffff191667ffffffffffffffff8316179055611ba18142613af3565b600160a060020a0383166000908152602081905260409020805467ffffffffffffffff9290921668010000000000000000026fffffffffffffffff0000000000000000199092169190911790555050565b601b54611c00906064613b42565b601355601c54611c11906064613b42565b601455601d54611c22906064613b42565b601555565b600080600080600080600080600080611c488b601354601454601554612e6e565b9250925092506000611c5c8c858585612eef565b90506000611c68611995565b9050600080611c788f8885612f1a565b915091506000611c8b8383898988612f44565b929e50919c509a5091985093965091945092505050919395979092949650565b600160a060020a03811660009081526008602052604090205460ff1615611d175760405160e560020a62461bcd02815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610669565b600160a060020a03811660009081526002602052604090205415611d7157600160a060020a038116600090815260026020526040902054611d5790610732565b600160a060020a0382166000908152600360205260409020555b600160a060020a03811660008181526008602090815260408083208054600160ff199182168117909255600a80548084019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801805473ffffffffffffffffffffffffffffffffffffffff19169096179095556007909252909120805490921617905561144581612f90565b6000600160a060020a038216611e2a5760405160e560020a62461bcd0281526004016106699061397a565b600160a060020a03821660009081526001602052604090205460ff1615611e5357506001919050565b50600160a060020a031660009081526020819052604090205467ffffffffffffffff42811668010000000000000000909204161090565b600160a060020a03831660009081526009602052604090205460ff16158015611ecc5750600160a060020a03821660009081526009602052604090205460ff16155b611ed557600080fd5b600160a060020a0383161580611ef25750600160a060020a038216155b15611efc57505050565b600160a060020a038316301480611f1b5750600160a060020a03821630145b15611f2557505050565b601a54600160a060020a0384811691161480611f4e5750601a54600160a060020a038381169116145b15611f5857505050565b600160a060020a038316737a250d5630b4cf539739df2c5dacb4c659f2488d1480611f9f5750600160a060020a038216737a250d5630b4cf539739df2c5dacb4c659f2488d145b15611fa957505050565b33737a250d5630b4cf539739df2c5dacb4c659f2488d1480611fd55750601954600160a060020a031633145b80611fea5750601a54600160a060020a031633145b8061200d5750600160a060020a03831660009081526007602052604090205460ff165b806120305750600160a060020a03821660009081526007602052604090205460ff165b6120a55760405160e560020a62461bcd02815260206004820152602b60248201527f4552523a2073656e646572206d75737420626520756e6973776170206f72207360448201527f686f7070696e67436172740000000000000000000000000000000000000000006064820152608401610669565b60408051600280825260608201835260009260208301908036833701905050601954909150600160a060020a0385811691161480156120fd5750600160a060020a03831660009081526008602052604090205460ff16155b1561239e5761210b83611dff565b61215a5760405160e560020a62461bcd02815260206004820152601b60248201527f4552523a2061646472657373206973206c6f636b6564286275792900000000006044820152606401610669565b600160a060020a038316600090815260066020526040902054421161217e57600080fd5b61218a42610708613adb565b600160a060020a038416600090815260066020526040812091909155815173c778417e063141139fce010982780140aa0cd5ab9183916121dd5760e060020a634e487b7102600052603260045260246000fd5b6020026020010190600160a060020a03169081600160a060020a03168152505030816001815181106122225760e060020a634e487b7102600052603260045260246000fd5b600160a060020a03909216602092830291909101909101526040517f1f00ca74000000000000000000000000000000000000000000000000000000008152600090737a250d5630b4cf539739df2c5dacb4c659f2488d90631f00ca749061228f9086908690600401613a54565b60006040518083038186803b1580156122a757600080fd5b505afa1580156122bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122e39190810190613709565b905060006122f085610da0565b9050600084836000815181106123195760e060020a634e487b7102600052603260045260246000fd5b6020026020010151670de0b6b3a76400006123349190613b42565b61233e9190613b1f565b905061234a8286613adb565b8261235488610bc2565b61235e9190613b42565b6123688784613b42565b6123729190613adb565b61237c9190613b1f565b600160a060020a0387166000908152600560205260409020555061247b915050565b601954600160a060020a0384811691161480156123d45750600160a060020a03841660009081526008602052604090205460ff16155b1561247b576123e284611dff565b6124315760405160e560020a62461bcd02815260206004820152601d60248201527f4552523a2061646472657373206973206c6f636b65642873616c6573290000006044820152606401610669565b600160a060020a038416600090815260066020526040902054421161245557600080fd5b61246142610708613adb565b600160a060020a0385166000908152600660205260409020555b50505050565b601954600090819061249b90600160a060020a0316610da0565b601954909150600160a060020a0386811691161480156124d45750600160a060020a03841660009081526007602052604090205460ff16155b15612513576124e4606482613b1f565b8311156125065760405160e560020a62461bcd0281526004016106699061391d565b61250e611bf2565b6127c7565b601954600160a060020a0385811691161480156125495750600160a060020a03851660009081526007602052604090205460ff16155b156127bf57601a547501000000000000000000000000000000000000000000900460ff166125bc5760405160e560020a62461bcd02815260206004820152601260248201527f4552523a2064697361626c6564207377617000000000000000000000000000006044820152606401610669565b6125c7606482613b1f565b8311156125e95760405160e560020a62461bcd0281526004016106699061391d565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061262f5760e060020a634e487b7102600052603260045260246000fd5b6020026020010190600160a060020a03169081600160a060020a03168152505073c778417e063141139fce010982780140aa0cd5ab816001815181106126885760e060020a634e487b7102600052603260045260246000fd5b600160a060020a03909216602092830291909101909101526040517fd06ca61f000000000000000000000000000000000000000000000000000000008152600090737a250d5630b4cf539739df2c5dacb4c659f2488d9063d06ca61f906126f59088908690600401613a54565b60006040518083038186803b15801561270d57600080fd5b505afa158015612721573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127499190810190613709565b905084816001815181106127705760e060020a634e487b7102600052603260045260246000fd5b6020026020010151670de0b6b3a764000061278b9190613b42565b6127959190613b1f565b61279e88610bc2565b116127b0576127ab611bf2565b6127b8565b6127b8613004565b50506127c7565b6127c76119b8565b600160a060020a03851660009081526008602052604090205460ff1680156128085750600160a060020a03841660009081526008602052604090205460ff16155b1561281d576128188585856119ec565b61293c565b600160a060020a03851660009081526008602052604090205460ff1615801561285e5750600160a060020a03841660009081526008602052604090205460ff165b1561288f57601954600160a060020a038581169116141561288457612818858585613034565b61281885858561308d565b600160a060020a03851660009081526008602052604090205460ff161580156128d15750600160a060020a03841660009081526008602052604090205460ff16155b156128e1576128188585856130e6565b600160a060020a03851660009081526008602052604090205460ff1680156129215750600160a060020a03841660009081526008602052604090205460ff165b156129315761281885858561313e565b61293c8585856130e6565b612944611bf2565b506001949350505050565b600f54600e546000918291825b600a54811015612ae5578260026000600a848154811061298f5760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a031683528201929092526040019020541180612a0b57508160036000600a84815481106129e45760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054115b15612a2157600f54600e54945094505050509091565b60026000600a8381548110612a495760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054612a789084613b61565b925060036000600a8381548110612aa25760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054612ad19083613b61565b915080612add81613bb6565b91505061295c565b50600e54600f54612af69190613b1f565b821015612b0d57600f54600e549350935050509091565b90939092509050565b600160a060020a038516600090815260036020526040902054612b3a908490613b61565b600160a060020a038616600090815260036020908152604080832093909355600290522054612b6a908390613b61565b600160a060020a038087166000908152600260205260408082209390935590861681522054612b9a908290613adb565b600160a060020a0390941660009081526002602052604090209390935550505050565b6000612bc7611995565b90506000612bd58286613b42565b601954909150600160a060020a038581169116148015612c0e5750600160a060020a038381166000908152602160205260409020541615155b15612c8357600160a060020a03808416600090815260216020526040902054612c3b918791849116613198565b600160a060020a0383811660009081526021602090815260409182902054915188815291831692871691600080516020613c04833981519152910160405180910390a3612d34565b601754600160a060020a0316600090815260026020526040902054612ca9908290613adb565b60178054600160a060020a039081166000908152600260209081526040808320959095559254909116815260039091522054612ce6908690613adb565b60178054600160a060020a0390811660009081526003602090815260409182902094909455915491518881529181169290871691600080516020613c04833981519152910160405180910390a35b5050505050565b6000612d45611995565b90506000612d538285613b42565b601854600160a060020a0316600090815260026020526040902054909150612d7c908290613adb565b60188054600160a060020a039081166000908152600260209081526040808320959095559254909116815260039091522054612db9908290613adb565b60188054600160a060020a0390811660009081526003602090815260409182902094909455915491518781529181169290861691600080516020613c04833981519152910160405180910390a350505050565b838587600f54612e1c9190613b61565b612e269190613b61565b612e309190613b61565b600f55601054612e41908490613adb565b601055601154612e52908390613adb565b601155601254612e63908290613adb565b601255505050505050565b6000808080606480612e80898b613b42565b612e8a9190613b1f565b612e949190613b1f565b90506000606480612ea5898c613b42565b612eaf9190613b1f565b612eb99190613b1f565b90506000606480612eca898d613b42565b612ed49190613b1f565b612ede9190613b1f565b929a91995091975095505050505050565b60008183612efd8688613b61565b612f079190613b61565b612f119190613b61565b95945050505050565b60008080612f288487613b42565b90506000612f368587613b42565b919791965090945050505050565b600080612f518386613b42565b90506000612f5f8486613b42565b905060008183612f6f8a8c613b61565b612f799190613b61565b612f839190613b61565b9998505050505050505050565b600160a060020a038116612fb95760405160e560020a62461bcd0281526004016106699061397a565b600160a060020a03811660009081526001602052604090205460ff1615612fdd5750565b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b601e54613012906064613b42565b601355601f54613023906064613b42565b601455602054611c22906064613b42565b600061303e611995565b905060008060008060008060006130548961329b565b9650965096509650965096509650600088836130709190613b42565b9050600061307e8a84613b42565b9050611a458d8d8d8c8c6132ff565b6000613097611995565b905060008060008060008060006130ad89611c27565b9650965096509650965096509650600088836130c99190613b42565b905060006130d78a84613b42565b9050611a458d8d888c8c61338a565b60006130f0611995565b9050600080600080600080600061310689611c27565b9650965096509650965096509650600088836131229190613b42565b905060006131308a84613b42565b9050611a458d8d8b8b613415565b6000613148611995565b9050600080600080600080600061315e89611c27565b96509650965096509650965096506000888361317a9190613b42565b905060006131888a84613b42565b9050611a458d8d8d8c8a8d61348b565b600160a060020a03811660009081526008602052604090205460ff161561322b57600160a060020a0381166000908152600260205260409020546131dd908390613adb565b600160a060020a03821660009081526002602090815260408083209390935560039052205461320d908490613adb565b600160a060020a038216600090815260036020526040902055613269565b600160a060020a03811660009081526002602052604090205461324f908390613adb565b600160a060020a0382166000908152600260205260409020555b600160a060020a03811660009081526022602052604081208054859290613291908490613adb565b9091555050505050565b6000806000806000806000806000806132bc8b601354601454601554612e6e565b92509250925060006132d08c85858561356a565b905060006132dc611995565b90506000806132ec8f8885612f1a565b915091506000611c8b838389898861358c565b600160a060020a038516600090815260026020526040902054613323908290613b61565b600160a060020a0380871660009081526002602090815260408083209490945591871681526003909152205461335a908490613adb565b600160a060020a038516600090815260036020908152604080832093909355600290522054612b9a908390613adb565b600160a060020a0385166000908152600260205260409020546133ae908390613b61565b600160a060020a038087166000908152600260209081526040808320949094559187168152600390915220546133e5908490613adb565b600160a060020a038516600090815260036020908152604080832093909355600290522054612b9a908290613adb565b600160a060020a038416600090815260026020526040902054613439908390613b61565b600160a060020a038086166000908152600260205260408082209390935590851681522054613469908290613adb565b600160a060020a03909316600090815260026020526040902092909255505050565b600160a060020a0386166000908152600360205260409020546134af908590613b61565b600160a060020a0387166000908152600360209081526040808320939093556002905220546134df908490613b61565b600160a060020a03808816600090815260026020908152604080832094909455918816815260039091522054613516908390613adb565b600160a060020a038616600090815260036020908152604080832093909355600290522054613546908290613adb565b600160a060020a039095166000908152600260205260409020949094555050505050565b600081836135788688613adb565b6135829190613adb565b612f119190613adb565b6000806135998386613b42565b905060006135a78486613b42565b9050600081836135b78a8c613adb565b6135c19190613adb565b612f839190613adb565b8035600160a060020a03811681146106db57600080fd5b6000602082840312156135f3578081fd5b6135fc826135cb565b9392505050565b60008060408385031215613615578081fd5b61361e836135cb565b915061362c602084016135cb565b90509250929050565b600080600060608486031215613649578081fd5b613652846135cb565b9250613660602085016135cb565b9150604084013590509250925092565b60008060408385031215613682578182fd5b61368b836135cb565b946020939093013593505050565b600080602083850312156136ab578182fd5b823567ffffffffffffffff808211156136c2578384fd5b818501915085601f8301126136d5578384fd5b8135818111156136e3578485fd5b8660206040830285010111156136f7578485fd5b60209290920196919550909350505050565b6000602080838503121561371b578182fd5b825167ffffffffffffffff80821115613732578384fd5b818501915085601f830112613745578384fd5b81518181111561375757613757613bea565b8381029150613767848301613aaa565b8181528481019084860184860187018a1015613781578788fd5b8795505b838610156137a3578051835260019590950194918601918601613785565b5098975050505050505050565b6000604082840312156137c1578081fd5b6040516040810181811067ffffffffffffffff821117156137e4576137e4613bea565b6040526137f0836135cb565b8152602083013560208201528091505092915050565b600060c08284031215613817578081fd5b60405160c0810181811067ffffffffffffffff8211171561383a5761383a613bea565b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201528091505092915050565b600060208284031215613890578081fd5b5035919050565b600080604083850312156138a9578182fd5b82359150602083013580151581146138bf578182fd5b809150509250929050565b6000602080835283518082850152825b818110156138f6578581018301518582016040015282016138da565b818111156139075783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602f908201527f4552523a2045786365656420746865203125206f662063757272656e74206c6960408201527f717569646974792062616c616e63650000000000000000000000000000000000606082015260800190565b60208082526016908201527f4552523a207a65726f206c6f636b206164647265737300000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526013908201527f4552523a2070617573656420616c726561647900000000000000000000000000604082015260600190565b60208082526011908201527f4552523a207a65726f2061646472657373000000000000000000000000000000604082015260600190565b60006040820184835260206040818501528185518084526060860191508287019350845b81811015613a9d578451600160a060020a031683529383019391830191600101613a78565b5090979650505050505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715613ad357613ad3613bea565b604052919050565b60008219821115613aee57613aee613bd1565b500190565b600067ffffffffffffffff808316818516808303821115613b1657613b16613bd1565b01949350505050565b600082613b3d5760e060020a634e487b710281526012600452602481fd5b500490565b6000816000190483118215151615613b5c57613b5c613bd1565b500290565b600082821015613b7357613b73613bd1565b500390565b600281046001821680613b8c57607f821691505b60208210811415613bb05760e060020a634e487b7102600052602260045260246000fd5b50919050565b6000600019821415613bca57613bca613bd1565b5060010190565b60e060020a634e487b7102600052601160045260246000fd5b60e060020a634e487b7102600052604160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220fe057a975eb70d1151d154e7b68984d0503af4bf416f187530a2d977308879e464736f6c6343000804003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000114f6666696369616c2042756666446f6765000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524427566660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f3207c360a7cbeb6e359e79c3f690f1730897a19000000000000000000000000aae55e8342ecbbecf836483ad54b90a32475065d0000000000000000000000008a8eff48fbd6886ff67170bd893264f338c2c5dd000000000000000000000000c505f97fea928d0820cee103eb4f9ed6e617f7a7
Deployed Bytecode
0x608060405234801561001057600080fd5b5060043610610265576000357c01000000000000000000000000000000000000000000000000000000009004806395d89b4111610158578063d84bf7a8116100d5578063f0d9746911610099578063f0d9746914610519578063f2cc0c181461052c578063f357038814610541578063f84354f11461056a578063fb3a236f1461057d57600080fd5b8063d84bf7a814610486578063dd62ed3e1461048e578063e26af579146104c7578063e4997dc5146104f3578063e86203581461050657600080fd5b8063b58624281161011c578063b58624281461040b578063c9d390d314610414578063cba0e9961461043f578063d44ad87b1461046b578063d6f84b451461047357600080fd5b806395d89b41146103b5578063a457c2d7146103bd578063a9059cbb146103d0578063a9789268146103e3578063b33a7a17146103eb57600080fd5b80633c9f861d116101e65780635afe70d7116101aa5780635afe70d71461036a5780635e00e6791461037d57806370a082311461039057806377ef7993146103a357806390cda415146103ac57600080fd5b80633c9f861d1461032c5780633f5987a9146103345780634549b0391461033c5780634851f2b51461034f5780634e7a6a021461035757600080fd5b806323b872dd1161022d57806323b872dd146102d85780632d838119146102eb578063313ce567146102fe5780633280aba614610306578063395093511461031957600080fd5b806306fdde031461026a578063095ea7b3146102885780630ecb93c0146102ab57806313114a9d146102be57806318160ddd146102d0575b600080fd5b610272610590565b60405161027f91906138ca565b60405180910390f35b61029b610296366004613670565b610622565b604051901515815260200161027f565b61029b6102b93660046135e2565b610639565b6010545b60405190815260200161027f565b600e546102c2565b61029b6102e6366004613635565b6106e0565b6102c26102f936600461387f565b610732565b600d546102c2565b61029b610314366004613699565b6107c1565b61029b610327366004613670565b610959565b6011546102c2565b61029b610990565b6102c261034a366004613897565b610a80565b61029b610b12565b6102c26103653660046135e2565b610bc2565b61029b6103783660046135e2565b610bff565b61029b61038b3660046135e2565b610cdd565b6102c261039e3660046135e2565b610da0565b6102c260145481565b6102c260155481565b610272610dff565b61029b6103cb366004613670565b610e0e565b61029b6103de366004613670565b610e45565b61029b610e52565b6102c26103f93660046135e2565b60066020526000908152604090205481565b6102c260135481565b6104276104223660046135e2565b610f5b565b604051600160a060020a03909116815260200161027f565b61029b61044d3660046135e2565b600160a060020a031660009081526008602052604090205460ff1690565b61029b610fa5565b61029b610481366004613603565b61105c565b6012546102c2565b6102c261049c366004613603565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b61029b6104d53660046135e2565b600160a060020a031660009081526007602052604090205460ff1690565b61029b6105013660046135e2565b61115a565b61029b610514366004613806565b6111ef565b61029b6105273660046135e2565b61136b565b61053f61053a3660046135e2565b61140f565b005b6102c261054f3660046135e2565b600160a060020a031660009081526022602052604090205490565b61053f6105783660046135e2565b611448565b61029b61058b3660046135e2565b611663565b6060600b805461059f90613b78565b80601f01602080910402602001604051908101604052809291908181526020018280546105cb90613b78565b80156106185780601f106105ed57610100808354040283529160200191610618565b820191906000526020600020905b8154815290600101906020018083116105fb57829003601f168201915b5050505050905090565b600061062f338484611675565b5060015b92915050565b601a54600090600160a060020a031633146106725760405160e560020a62461bcd028152600401610669906139b1565b60405180910390fd5b601a54600160a060020a038381169116141561068d57600080fd5b600160a060020a03821660009081526009602052604090205460ff16156106b357600080fd5b50600160a060020a0381166000908152600960205260409020805460ff191660019081179091555b919050565b60006106ed8484846117d4565b600160a060020a038416600090815260046020908152604080832033808552925290912054610728918691610723908690613b61565b611675565b5060019392505050565b6000600f548211156107af5760405160e560020a62461bcd02815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610669565b6107b7611995565b6106339083613b1f565b601a54600090600160a060020a031633146107f15760405160e560020a62461bcd028152600401610669906139b1565b816108415760405160e560020a62461bcd02815260206004820152601760248201527f4552523a207a65726f20616464726573732061727261790000000000000000006044820152606401610669565b6108496119b8565b60005b828110156109505760008484838181106108795760e060020a634e487b7102600052603260045260246000fd5b90506040020180360381019061088f91906137b0565b90506a52b7d2dcc80cd2e400000081602001516016546108af9190613adb565b11156109005760405160e560020a62461bcd02815260206004820181905260248201527f4552523a20657863656564206d6178207465616d206d696e7420616d6f756e746044820152606401610669565b61091330826000015183602001516119ec565b8060200151601660008282546109299190613adb565b9091555050805161093d9062ed4e00611abe565b508061094881613bb6565b91505061084c565b5061062f611bf2565b336000818152600460209081526040808320600160a060020a0387168452909152812054909161062f918590610723908690613adb565b601a54600090600160a060020a031633146109c05760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff16156109ed5760405160e560020a62461bcd028152600401610669906139e6565b601a547501000000000000000000000000000000000000000000900460ff16610a5b5760405160e560020a62461bcd02815260206004820152601560248201527f4552523a20616c72656164792064697361626c656400000000000000000000006044820152606401610669565b50601a805475ff00000000000000000000000000000000000000000019169055600190565b6000600e54831115610ad75760405160e560020a62461bcd02815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610669565b81610af7576000610ae784611c27565b5094965061063395505050505050565b6000610b0284611c27565b5093965061063395505050505050565b601a54600090600160a060020a03163314610b425760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff16610b9e5760405160e560020a62461bcd02815260206004820152601b60248201527f4552523a20616c72656164792070617573652064697361626c656400000000006044820152606401610669565b50601a805474ff000000000000000000000000000000000000000019169055600190565b600160a060020a03811660009081526005602052604081205480158015610bf157506000610bef84610da0565b115b156106335750600092915050565b601a54600090600160a060020a03163314610c2f5760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff1615610c5c5760405160e560020a62461bcd028152600401610669906139e6565b600160a060020a038216610c855760405160e560020a62461bcd02815260040161066990613a1d565b6017805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790556a295be96e64066972000000610cc16119b8565b610ccc3084836119ec565b610cd4611bf2565b61062f83611cab565b601a54600090600160a060020a03163314610d0d5760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff1615610d3a5760405160e560020a62461bcd028152600401610669906139e6565b600160a060020a038216610d635760405160e560020a62461bcd02815260040161066990613a1d565b6018805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790556b0121836204bc2ce21e000000610cc16119b8565b600160a060020a03811660009081526008602052604081205460ff1615610ddd5750600160a060020a031660009081526003602052604090205490565b600160a060020a03821660009081526002602052604090205461063390610732565b6060600c805461059f90613b78565b336000818152600460209081526040808320600160a060020a0387168452909152812054909161062f918590610723908690613b61565b600061062f3384846117d4565b601a54600090600160a060020a03163314610e825760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff1615610eaf5760405160e560020a62461bcd028152600401610669906139e6565b601a547501000000000000000000000000000000000000000000900460ff1615610f1e5760405160e560020a62461bcd02815260206004820152601460248201527f4552523a20616c726561647920656e61626c65640000000000000000000000006044820152606401610669565b50601a805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055600190565b6000600160a060020a038216610f865760405160e560020a62461bcd02815260040161066990613a1d565b50600160a060020a039081166000908152602160205260409020541690565b601a54600090600160a060020a03163314610fd55760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff16156110325760405160e560020a62461bcd02815260206004820152601a60248201527f4552523a20616c726561647920706175736520656e61626c65640000000000006044820152606401610669565b50601a805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600160a060020a03828116600090815260216020526040812054909116156110c95760405160e560020a62461bcd02815260206004820152601f60248201527f4552523a2061646472657373207265676973746572656420616c7265616479006044820152606401610669565b600160a060020a0383166110f25760405160e560020a62461bcd02815260040161066990613a1d565b600160a060020a03821661111b5760405160e560020a62461bcd02815260040161066990613a1d565b50600160a060020a039182166000908152602160205260409020805473ffffffffffffffffffffffffffffffffffffffff191691909216179055600190565b601a54600090600160a060020a0316331461118a5760405160e560020a62461bcd028152600401610669906139b1565b600160a060020a03821660009081526009602052604090205460ff166111af57600080fd5b601a54600160a060020a03838116911614156111ca57600080fd5b50600160a060020a03166000908152600960205260409020805460ff19169055600190565b601a54600090600160a060020a0316331461121f5760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff161561124c5760405160e560020a62461bcd028152600401610669906139e6565b81516064118015611261575060648260200151105b8015611271575060648260400151105b6112c05760405160e560020a62461bcd02815260206004820152601360248201527f4552523a2046656520697320736f2068696768000000000000000000000000006044820152606401610669565b606482606001511080156112d8575060648260800151105b80156112e8575060648260a00151105b6113375760405160e560020a62461bcd02815260206004820152601360248201527f4552523a2046656520697320736f2068696768000000000000000000000000006044820152606401610669565b508051601b55602080820151601c556040820151601d556060820151601e556080820151601f5560a0909101519055600190565b601a54600090600160a060020a0316331461139b5760405160e560020a62461bcd028152600401610669906139b1565b601a5460a060020a900460ff16156113c85760405160e560020a62461bcd028152600401610669906139e6565b600160a060020a0382166113f15760405160e560020a62461bcd02815260040161066990613a1d565b61140730836a52b7d2dcc80cd2e4000000611675565b506001919050565b601a54600160a060020a0316331461143c5760405160e560020a62461bcd028152600401610669906139b1565b61144581611cab565b50565b601a54600160a060020a031633146114755760405160e560020a62461bcd028152600401610669906139b1565b600160a060020a03811660009081526008602052604090205460ff166114e05760405160e560020a62461bcd02815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610669565b60005b600a5481101561165f5781600160a060020a0316600a828154811061151b5760e060020a634e487b7102600052603260045260246000fd5b600091825260209091200154600160a060020a0316141561164d57600a805461154690600190613b61565b815481106115675760e060020a634e487b7102600052603260045260246000fd5b600091825260209091200154600a8054600160a060020a0390921691839081106115a45760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039485161790559184168152600382526040808220829055600890925220805460ff19169055600a80548061161a5760e060020a634e487b7102600052603160045260246000fd5b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b8061165781613bb6565b9150506114e3565b5050565b600061166e82611dff565b1592915050565b600160a060020a0383166116f45760405160e560020a62461bcd02815260206004820152602660248201527f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610669565b600160a060020a0382166117725760405160e560020a62461bcd028152602060048201526024808201527f544f4b454e32303a20617070726f766520746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610669565b600160a060020a0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600160a060020a0383166118535760405160e560020a62461bcd02815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610669565b600160a060020a0382166118d25760405160e560020a62461bcd02815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610669565b6000811161194b5760405160e560020a62461bcd02815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610669565b611956838383611e8a565b611961838383612481565b5081600160a060020a031683600160a060020a0316600080516020613c04833981519152836040516117c791815260200190565b60008060006119a261294f565b90925090506119b18183613b1f565b9250505090565b6013541580156119c85750601454155b80156119d45750601554155b156119db57565b600060138190556014819055601555565b60006119f6611995565b90506000806000806000806000611a0c89611c27565b965096509650965096509650965060008883611a289190613b42565b90506000611a368a84613b42565b9050611a458d8d8d8c8c612b16565b8215611a5657611a56838e8e612bbd565b8315611a6657611a66848e612d3b565b611a74878383888888612e0c565b8b600160a060020a03168d600160a060020a0316600080516020613c0483398151915288604051611aa791815260200190565b60405180910390a350505050505050505050505050565b600160a060020a038216611ae75760405160e560020a62461bcd0281526004016106699061397a565b60008167ffffffffffffffff1611611b445760405160e560020a62461bcd02815260206004820152601560248201527f4552523a207a65726f206c6f636b20706572696f6400000000000000000000006044820152606401610669565b600160a060020a03821660009081526001602052604090205460ff1661165f57600160a060020a0382166000908152602081905260409020805467ffffffffffffffff191667ffffffffffffffff8316179055611ba18142613af3565b600160a060020a0383166000908152602081905260409020805467ffffffffffffffff9290921668010000000000000000026fffffffffffffffff0000000000000000199092169190911790555050565b601b54611c00906064613b42565b601355601c54611c11906064613b42565b601455601d54611c22906064613b42565b601555565b600080600080600080600080600080611c488b601354601454601554612e6e565b9250925092506000611c5c8c858585612eef565b90506000611c68611995565b9050600080611c788f8885612f1a565b915091506000611c8b8383898988612f44565b929e50919c509a5091985093965091945092505050919395979092949650565b600160a060020a03811660009081526008602052604090205460ff1615611d175760405160e560020a62461bcd02815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610669565b600160a060020a03811660009081526002602052604090205415611d7157600160a060020a038116600090815260026020526040902054611d5790610732565b600160a060020a0382166000908152600360205260409020555b600160a060020a03811660008181526008602090815260408083208054600160ff199182168117909255600a80548084019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801805473ffffffffffffffffffffffffffffffffffffffff19169096179095556007909252909120805490921617905561144581612f90565b6000600160a060020a038216611e2a5760405160e560020a62461bcd0281526004016106699061397a565b600160a060020a03821660009081526001602052604090205460ff1615611e5357506001919050565b50600160a060020a031660009081526020819052604090205467ffffffffffffffff42811668010000000000000000909204161090565b600160a060020a03831660009081526009602052604090205460ff16158015611ecc5750600160a060020a03821660009081526009602052604090205460ff16155b611ed557600080fd5b600160a060020a0383161580611ef25750600160a060020a038216155b15611efc57505050565b600160a060020a038316301480611f1b5750600160a060020a03821630145b15611f2557505050565b601a54600160a060020a0384811691161480611f4e5750601a54600160a060020a038381169116145b15611f5857505050565b600160a060020a038316737a250d5630b4cf539739df2c5dacb4c659f2488d1480611f9f5750600160a060020a038216737a250d5630b4cf539739df2c5dacb4c659f2488d145b15611fa957505050565b33737a250d5630b4cf539739df2c5dacb4c659f2488d1480611fd55750601954600160a060020a031633145b80611fea5750601a54600160a060020a031633145b8061200d5750600160a060020a03831660009081526007602052604090205460ff165b806120305750600160a060020a03821660009081526007602052604090205460ff165b6120a55760405160e560020a62461bcd02815260206004820152602b60248201527f4552523a2073656e646572206d75737420626520756e6973776170206f72207360448201527f686f7070696e67436172740000000000000000000000000000000000000000006064820152608401610669565b60408051600280825260608201835260009260208301908036833701905050601954909150600160a060020a0385811691161480156120fd5750600160a060020a03831660009081526008602052604090205460ff16155b1561239e5761210b83611dff565b61215a5760405160e560020a62461bcd02815260206004820152601b60248201527f4552523a2061646472657373206973206c6f636b6564286275792900000000006044820152606401610669565b600160a060020a038316600090815260066020526040902054421161217e57600080fd5b61218a42610708613adb565b600160a060020a038416600090815260066020526040812091909155815173c778417e063141139fce010982780140aa0cd5ab9183916121dd5760e060020a634e487b7102600052603260045260246000fd5b6020026020010190600160a060020a03169081600160a060020a03168152505030816001815181106122225760e060020a634e487b7102600052603260045260246000fd5b600160a060020a03909216602092830291909101909101526040517f1f00ca74000000000000000000000000000000000000000000000000000000008152600090737a250d5630b4cf539739df2c5dacb4c659f2488d90631f00ca749061228f9086908690600401613a54565b60006040518083038186803b1580156122a757600080fd5b505afa1580156122bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122e39190810190613709565b905060006122f085610da0565b9050600084836000815181106123195760e060020a634e487b7102600052603260045260246000fd5b6020026020010151670de0b6b3a76400006123349190613b42565b61233e9190613b1f565b905061234a8286613adb565b8261235488610bc2565b61235e9190613b42565b6123688784613b42565b6123729190613adb565b61237c9190613b1f565b600160a060020a0387166000908152600560205260409020555061247b915050565b601954600160a060020a0384811691161480156123d45750600160a060020a03841660009081526008602052604090205460ff16155b1561247b576123e284611dff565b6124315760405160e560020a62461bcd02815260206004820152601d60248201527f4552523a2061646472657373206973206c6f636b65642873616c6573290000006044820152606401610669565b600160a060020a038416600090815260066020526040902054421161245557600080fd5b61246142610708613adb565b600160a060020a0385166000908152600660205260409020555b50505050565b601954600090819061249b90600160a060020a0316610da0565b601954909150600160a060020a0386811691161480156124d45750600160a060020a03841660009081526007602052604090205460ff16155b15612513576124e4606482613b1f565b8311156125065760405160e560020a62461bcd0281526004016106699061391d565b61250e611bf2565b6127c7565b601954600160a060020a0385811691161480156125495750600160a060020a03851660009081526007602052604090205460ff16155b156127bf57601a547501000000000000000000000000000000000000000000900460ff166125bc5760405160e560020a62461bcd02815260206004820152601260248201527f4552523a2064697361626c6564207377617000000000000000000000000000006044820152606401610669565b6125c7606482613b1f565b8311156125e95760405160e560020a62461bcd0281526004016106699061391d565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061262f5760e060020a634e487b7102600052603260045260246000fd5b6020026020010190600160a060020a03169081600160a060020a03168152505073c778417e063141139fce010982780140aa0cd5ab816001815181106126885760e060020a634e487b7102600052603260045260246000fd5b600160a060020a03909216602092830291909101909101526040517fd06ca61f000000000000000000000000000000000000000000000000000000008152600090737a250d5630b4cf539739df2c5dacb4c659f2488d9063d06ca61f906126f59088908690600401613a54565b60006040518083038186803b15801561270d57600080fd5b505afa158015612721573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127499190810190613709565b905084816001815181106127705760e060020a634e487b7102600052603260045260246000fd5b6020026020010151670de0b6b3a764000061278b9190613b42565b6127959190613b1f565b61279e88610bc2565b116127b0576127ab611bf2565b6127b8565b6127b8613004565b50506127c7565b6127c76119b8565b600160a060020a03851660009081526008602052604090205460ff1680156128085750600160a060020a03841660009081526008602052604090205460ff16155b1561281d576128188585856119ec565b61293c565b600160a060020a03851660009081526008602052604090205460ff1615801561285e5750600160a060020a03841660009081526008602052604090205460ff165b1561288f57601954600160a060020a038581169116141561288457612818858585613034565b61281885858561308d565b600160a060020a03851660009081526008602052604090205460ff161580156128d15750600160a060020a03841660009081526008602052604090205460ff16155b156128e1576128188585856130e6565b600160a060020a03851660009081526008602052604090205460ff1680156129215750600160a060020a03841660009081526008602052604090205460ff165b156129315761281885858561313e565b61293c8585856130e6565b612944611bf2565b506001949350505050565b600f54600e546000918291825b600a54811015612ae5578260026000600a848154811061298f5760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a031683528201929092526040019020541180612a0b57508160036000600a84815481106129e45760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054115b15612a2157600f54600e54945094505050509091565b60026000600a8381548110612a495760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054612a789084613b61565b925060036000600a8381548110612aa25760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054612ad19083613b61565b915080612add81613bb6565b91505061295c565b50600e54600f54612af69190613b1f565b821015612b0d57600f54600e549350935050509091565b90939092509050565b600160a060020a038516600090815260036020526040902054612b3a908490613b61565b600160a060020a038616600090815260036020908152604080832093909355600290522054612b6a908390613b61565b600160a060020a038087166000908152600260205260408082209390935590861681522054612b9a908290613adb565b600160a060020a0390941660009081526002602052604090209390935550505050565b6000612bc7611995565b90506000612bd58286613b42565b601954909150600160a060020a038581169116148015612c0e5750600160a060020a038381166000908152602160205260409020541615155b15612c8357600160a060020a03808416600090815260216020526040902054612c3b918791849116613198565b600160a060020a0383811660009081526021602090815260409182902054915188815291831692871691600080516020613c04833981519152910160405180910390a3612d34565b601754600160a060020a0316600090815260026020526040902054612ca9908290613adb565b60178054600160a060020a039081166000908152600260209081526040808320959095559254909116815260039091522054612ce6908690613adb565b60178054600160a060020a0390811660009081526003602090815260409182902094909455915491518881529181169290871691600080516020613c04833981519152910160405180910390a35b5050505050565b6000612d45611995565b90506000612d538285613b42565b601854600160a060020a0316600090815260026020526040902054909150612d7c908290613adb565b60188054600160a060020a039081166000908152600260209081526040808320959095559254909116815260039091522054612db9908290613adb565b60188054600160a060020a0390811660009081526003602090815260409182902094909455915491518781529181169290861691600080516020613c04833981519152910160405180910390a350505050565b838587600f54612e1c9190613b61565b612e269190613b61565b612e309190613b61565b600f55601054612e41908490613adb565b601055601154612e52908390613adb565b601155601254612e63908290613adb565b601255505050505050565b6000808080606480612e80898b613b42565b612e8a9190613b1f565b612e949190613b1f565b90506000606480612ea5898c613b42565b612eaf9190613b1f565b612eb99190613b1f565b90506000606480612eca898d613b42565b612ed49190613b1f565b612ede9190613b1f565b929a91995091975095505050505050565b60008183612efd8688613b61565b612f079190613b61565b612f119190613b61565b95945050505050565b60008080612f288487613b42565b90506000612f368587613b42565b919791965090945050505050565b600080612f518386613b42565b90506000612f5f8486613b42565b905060008183612f6f8a8c613b61565b612f799190613b61565b612f839190613b61565b9998505050505050505050565b600160a060020a038116612fb95760405160e560020a62461bcd0281526004016106699061397a565b600160a060020a03811660009081526001602052604090205460ff1615612fdd5750565b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b601e54613012906064613b42565b601355601f54613023906064613b42565b601455602054611c22906064613b42565b600061303e611995565b905060008060008060008060006130548961329b565b9650965096509650965096509650600088836130709190613b42565b9050600061307e8a84613b42565b9050611a458d8d8d8c8c6132ff565b6000613097611995565b905060008060008060008060006130ad89611c27565b9650965096509650965096509650600088836130c99190613b42565b905060006130d78a84613b42565b9050611a458d8d888c8c61338a565b60006130f0611995565b9050600080600080600080600061310689611c27565b9650965096509650965096509650600088836131229190613b42565b905060006131308a84613b42565b9050611a458d8d8b8b613415565b6000613148611995565b9050600080600080600080600061315e89611c27565b96509650965096509650965096506000888361317a9190613b42565b905060006131888a84613b42565b9050611a458d8d8d8c8a8d61348b565b600160a060020a03811660009081526008602052604090205460ff161561322b57600160a060020a0381166000908152600260205260409020546131dd908390613adb565b600160a060020a03821660009081526002602090815260408083209390935560039052205461320d908490613adb565b600160a060020a038216600090815260036020526040902055613269565b600160a060020a03811660009081526002602052604090205461324f908390613adb565b600160a060020a0382166000908152600260205260409020555b600160a060020a03811660009081526022602052604081208054859290613291908490613adb565b9091555050505050565b6000806000806000806000806000806132bc8b601354601454601554612e6e565b92509250925060006132d08c85858561356a565b905060006132dc611995565b90506000806132ec8f8885612f1a565b915091506000611c8b838389898861358c565b600160a060020a038516600090815260026020526040902054613323908290613b61565b600160a060020a0380871660009081526002602090815260408083209490945591871681526003909152205461335a908490613adb565b600160a060020a038516600090815260036020908152604080832093909355600290522054612b9a908390613adb565b600160a060020a0385166000908152600260205260409020546133ae908390613b61565b600160a060020a038087166000908152600260209081526040808320949094559187168152600390915220546133e5908490613adb565b600160a060020a038516600090815260036020908152604080832093909355600290522054612b9a908290613adb565b600160a060020a038416600090815260026020526040902054613439908390613b61565b600160a060020a038086166000908152600260205260408082209390935590851681522054613469908290613adb565b600160a060020a03909316600090815260026020526040902092909255505050565b600160a060020a0386166000908152600360205260409020546134af908590613b61565b600160a060020a0387166000908152600360209081526040808320939093556002905220546134df908490613b61565b600160a060020a03808816600090815260026020908152604080832094909455918816815260039091522054613516908390613adb565b600160a060020a038616600090815260036020908152604080832093909355600290522054613546908290613adb565b600160a060020a039095166000908152600260205260409020949094555050505050565b600081836135788688613adb565b6135829190613adb565b612f119190613adb565b6000806135998386613b42565b905060006135a78486613b42565b9050600081836135b78a8c613adb565b6135c19190613adb565b612f839190613adb565b8035600160a060020a03811681146106db57600080fd5b6000602082840312156135f3578081fd5b6135fc826135cb565b9392505050565b60008060408385031215613615578081fd5b61361e836135cb565b915061362c602084016135cb565b90509250929050565b600080600060608486031215613649578081fd5b613652846135cb565b9250613660602085016135cb565b9150604084013590509250925092565b60008060408385031215613682578182fd5b61368b836135cb565b946020939093013593505050565b600080602083850312156136ab578182fd5b823567ffffffffffffffff808211156136c2578384fd5b818501915085601f8301126136d5578384fd5b8135818111156136e3578485fd5b8660206040830285010111156136f7578485fd5b60209290920196919550909350505050565b6000602080838503121561371b578182fd5b825167ffffffffffffffff80821115613732578384fd5b818501915085601f830112613745578384fd5b81518181111561375757613757613bea565b8381029150613767848301613aaa565b8181528481019084860184860187018a1015613781578788fd5b8795505b838610156137a3578051835260019590950194918601918601613785565b5098975050505050505050565b6000604082840312156137c1578081fd5b6040516040810181811067ffffffffffffffff821117156137e4576137e4613bea565b6040526137f0836135cb565b8152602083013560208201528091505092915050565b600060c08284031215613817578081fd5b60405160c0810181811067ffffffffffffffff8211171561383a5761383a613bea565b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201528091505092915050565b600060208284031215613890578081fd5b5035919050565b600080604083850312156138a9578182fd5b82359150602083013580151581146138bf578182fd5b809150509250929050565b6000602080835283518082850152825b818110156138f6578581018301518582016040015282016138da565b818111156139075783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602f908201527f4552523a2045786365656420746865203125206f662063757272656e74206c6960408201527f717569646974792062616c616e63650000000000000000000000000000000000606082015260800190565b60208082526016908201527f4552523a207a65726f206c6f636b206164647265737300000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526013908201527f4552523a2070617573656420616c726561647900000000000000000000000000604082015260600190565b60208082526011908201527f4552523a207a65726f2061646472657373000000000000000000000000000000604082015260600190565b60006040820184835260206040818501528185518084526060860191508287019350845b81811015613a9d578451600160a060020a031683529383019391830191600101613a78565b5090979650505050505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715613ad357613ad3613bea565b604052919050565b60008219821115613aee57613aee613bd1565b500190565b600067ffffffffffffffff808316818516808303821115613b1657613b16613bd1565b01949350505050565b600082613b3d5760e060020a634e487b710281526012600452602481fd5b500490565b6000816000190483118215151615613b5c57613b5c613bd1565b500290565b600082821015613b7357613b73613bd1565b500390565b600281046001821680613b8c57607f821691505b60208210811415613bb05760e060020a634e487b7102600052602260045260246000fd5b50919050565b6000600019821415613bca57613bca613bd1565b5060010190565b60e060020a634e487b7102600052601160045260246000fd5b60e060020a634e487b7102600052604160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220fe057a975eb70d1151d154e7b68984d0503af4bf416f187530a2d977308879e464736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000114f6666696369616c2042756666446f6765000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524427566660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f3207c360a7cbeb6e359e79c3f690f1730897a19000000000000000000000000aae55e8342ecbbecf836483ad54b90a32475065d0000000000000000000000008a8eff48fbd6886ff67170bd893264f338c2c5dd000000000000000000000000c505f97fea928d0820cee103eb4f9ed6e617f7a7
-----Decoded View---------------
Arg [0] : _name (string): Official BuffDoge
Arg [1] : _symbol (string): $Buff
Arg [2] : _decimals (uint256): 18
Arg [3] : _supply (uint256): 1000000000
Arg [4] : blackList (address[]): 0xf3207c360a7cBeB6e359E79c3f690f1730897a19,0xAAE55e8342ecbBEcF836483aD54B90a32475065D,0x8A8eFf48fBD6886FF67170BD893264f338c2c5DD,0xC505F97fEA928d0820cee103EB4F9eD6e617f7a7
-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000011
Arg [6] : 4f6666696369616c2042756666446f6765000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [8] : 2442756666000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [10] : 000000000000000000000000f3207c360a7cbeb6e359e79c3f690f1730897a19
Arg [11] : 000000000000000000000000aae55e8342ecbbecf836483ad54b90a32475065d
Arg [12] : 0000000000000000000000008a8eff48fbd6886ff67170bd893264f338c2c5dd
Arg [13] : 000000000000000000000000c505f97fea928d0820cee103eb4f9ed6e617f7a7
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.