Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 23 from a total of 23 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 19010488 | 255 days ago | IN | 0 ETH | 0.00000175 | ||||
| Approve | 19010465 | 255 days ago | IN | 0 ETH | 0.00000175 | ||||
| Approve | 19010434 | 255 days ago | IN | 0 ETH | 0.00000175 | ||||
| Approve | 19010407 | 255 days ago | IN | 0 ETH | 0.00000259 | ||||
| Transfer | 19000107 | 255 days ago | IN | 0 ETH | 0.00000928 | ||||
| Approve | 19000018 | 255 days ago | IN | 0 ETH | 0.00000249 | ||||
| Transfer | 18999952 | 255 days ago | IN | 0 ETH | 0.0000075 | ||||
| Transfer | 18999939 | 255 days ago | IN | 0 ETH | 0.00001316 | ||||
| Transfer | 18999921 | 255 days ago | IN | 0 ETH | 0.00000749 | ||||
| Transfer | 18998556 | 255 days ago | IN | 0 ETH | 0.00001163 | ||||
| Transfer | 18997767 | 255 days ago | IN | 0 ETH | 0.00000784 | ||||
| Transfer | 18997485 | 255 days ago | IN | 0 ETH | 0.00000763 | ||||
| Transfer | 18997356 | 255 days ago | IN | 0 ETH | 0.00000932 | ||||
| Transfer | 18997116 | 255 days ago | IN | 0 ETH | 0.00000786 | ||||
| Transfer | 18997091 | 255 days ago | IN | 0 ETH | 0.00000784 | ||||
| Transfer | 18996726 | 255 days ago | IN | 0 ETH | 0.0000084 | ||||
| Transfer | 18996401 | 255 days ago | IN | 0 ETH | 0.00000284 | ||||
| Approve | 18996212 | 255 days ago | IN | 0 ETH | 0.00000261 | ||||
| Transfer | 18996138 | 255 days ago | IN | 0 ETH | 0.0000091 | ||||
| Transfer | 18996078 | 255 days ago | IN | 0 ETH | 0.00000762 | ||||
| Approve | 18995917 | 255 days ago | IN | 0 ETH | 0.0000026 | ||||
| Start Trading | 18995859 | 255 days ago | IN | 0 ETH | 0.00000176 | ||||
| Set Pair | 18995848 | 255 days ago | IN | 0 ETH | 0.00012993 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 19010107 | 255 days ago | 0 ETH | ||||
| 19010107 | 255 days ago | 0 ETH | ||||
| 19010107 | 255 days ago | 0 ETH | ||||
| 19010107 | 255 days ago | 0 ETH | ||||
| 19010107 | 255 days ago | 0 ETH | ||||
| 19010107 | 255 days ago | 0 ETH | ||||
| 19010107 | 255 days ago | 0 ETH | ||||
| 19010107 | 255 days ago | 0 ETH | ||||
| 19010107 | 255 days ago | 0 ETH | ||||
| 19009887 | 255 days ago | 0 ETH | ||||
| 19009887 | 255 days ago | 0 ETH | ||||
| 19009887 | 255 days ago | 0 ETH | ||||
| 19009887 | 255 days ago | 0 ETH | ||||
| 19009887 | 255 days ago | 0 ETH | ||||
| 19009887 | 255 days ago | 0 ETH | ||||
| 19009887 | 255 days ago | 0 ETH | ||||
| 19009887 | 255 days ago | 0 ETH | ||||
| 19009887 | 255 days ago | 0 ETH | ||||
| 19009867 | 255 days ago | 0 ETH | ||||
| 19009867 | 255 days ago | 0 ETH | ||||
| 19009867 | 255 days ago | 0 ETH | ||||
| 19009867 | 255 days ago | 0 ETH | ||||
| 19009867 | 255 days ago | 0 ETH | ||||
| 19009867 | 255 days ago | 0 ETH | ||||
| 19009867 | 255 days ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DoNotBuy
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
Yes with 10000 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {if(b > a) return(false, 0); return(true, a - b);}}
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
if(c / a != b) return(false, 0); return(true, c);}}
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {if(b == 0) return(false, 0); return(true, a / b);}}
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {if(b == 0) return(false, 0); return(true, a % b);}}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked{require(b <= a, errorMessage); return a - b;}}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked{require(b > 0, errorMessage); return a / b;}}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked{require(b > 0, errorMessage); return a % b;}}}
interface IERC20 {
function totalSupply() external view returns (uint256);
function circulatingSupply() external view returns (uint256);
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function getOwner() external view returns (address);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address _owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);}
abstract contract Ownable {
address internal owner;
constructor(address _owner) {owner = _owner;}
modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
function isOwner(address account) public view returns (bool) {return account == owner;}
function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
event OwnershipTransferred(address owner);
}
struct route {
address from;
address to;
bool stable;
}
interface IFactory {
function createPair(address tokenA, address tokenB, bool stable) external returns (address pair);
function getPair(address tokenA, address tokenB, bool stable) external view returns (address pair);
}
interface IRouter {
function factory() external pure returns (address);
function wETH() external pure returns (address);
function getAmountsOut(uint amountIn, route[] calldata routes) external view returns (uint[] memory amounts);
function addLiquidityETH(
address token,
bool stable,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
route[] calldata routes,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
route[] calldata routes,
address to,
uint deadline
) external;
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
route[] calldata routes,
address to,
uint deadline
) external;
}
contract DoNotBuy is IERC20, Ownable {
using SafeMath for uint256;
string private constant _name = 'DoNotBuy';
string private constant _symbol = 'DNB';
uint8 private constant _decimals = 18;
uint256 private _totalSupply = 100000000 * (10 ** _decimals);
uint256 private _maxTxAmount = ( _totalSupply * 200 ) / 10000;
uint256 private _maxSellAmount = ( _totalSupply * 200 ) / 10000;
uint256 private _maxWalletToken = ( _totalSupply * 200 ) / 10000;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) public isFeeExempt;
mapping (address => bool) public isDividendExempt;
mapping (address => bool) private isBot;
IRouter router;
address public pair;
bool private tradingAllowed = false;
uint256 private liquidityFee = 200;
uint256 private marketingFee = 1800;
uint256 private rewardsFee = 7000;
uint256 private developmentFee = 1000;
uint256 private burnFee = 0;
uint256 private totalFee = 1000;
uint256 private sellFee = 1500;
uint256 private transferFee = 200;
uint256 private denominator = 10000;
bool private swapEnabled = true;
uint256 private swapTimes;
bool private swapping;
uint256 private swapThreshold = ( _totalSupply * 500 ) / 100000;
uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
modifier lockTheSwap {swapping = true; _; swapping = false;}
address public reward = 0x176211869cA2b568f2A7D4EE941E073a821EE1ff;
uint256 public totalShares;
uint256 public totalDividends;
uint256 public totalDistributed;
uint256 internal dividendsPerShare;
uint256 internal dividendsPerShareAccuracyFactor = 10 ** 36;
address[] shareholders;
mapping (address => uint256) shareholderIndexes;
mapping (address => uint256) shareholderClaims;
struct Share {uint256 amount; uint256 totalExcluded; uint256 totalRealised; }
mapping (address => Share) public shares;
uint256 internal currentIndex;
uint256 public minPeriod = 1 minutes;
uint256 public minDistribution = 1 * (10 ** 5);
uint256 public distributorGas = 350000;
function _claimDividend() external {distributeDividend(msg.sender);}
address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
address internal constant development_receiver = 0x0F245A7D374388CD76fC8139Dd900E9B02bF69d7;
address internal constant marketing_receiver = 0x27DFbEC90EEa392446f71638b70193c6F558c001;
address internal constant liquidity_receiver = 0xd53686b4298Ac78B1d182E95FeAC1A4DD1D780bD;
constructor() Ownable(msg.sender) {
isFeeExempt[address(this)] = true;
isFeeExempt[liquidity_receiver] = true;
isFeeExempt[marketing_receiver] = true;
isFeeExempt[msg.sender] = true;
isDividendExempt[address(msg.sender)] = true;
isDividendExempt[address(this)] = true;
isDividendExempt[address(DEAD)] = true;
isDividendExempt[address(0)] = true;
_balances[msg.sender] = _totalSupply;
emit Transfer(address(0), msg.sender, _totalSupply);
}
receive() external payable {}
function name() public pure returns (string memory) {return _name;}
function symbol() public pure returns (string memory) {return _symbol;}
function decimals() public pure returns (uint8) {return _decimals;}
function getOwner() external view override returns (address) { return owner; }
function totalSupply() public view override returns (uint256) {return _totalSupply;}
function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
function startTrading() external onlyOwner {
require(!tradingAllowed,"trading is already open");
tradingAllowed = true;
}
function setPair(address _routerAddress) external onlyOwner {
require(_routerAddress != address(0), "Router cannot be zero address");
router = IRouter(_routerAddress);
pair = IFactory(router.factory()).getPair(address(this), router.wETH(), false);
if (pair == address(0)) {
pair = IFactory(router.factory()).createPair(address(this), router.wETH(), false);
}
isDividendExempt[pair] = true;
}
function preTxCheck(address sender, address recipient, uint256 amount) internal view {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
require(amount > uint256(0), "Transfer amount must be greater than zero");
require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
}
function _transfer(address sender, address recipient, uint256 amount) private {
require(sender != address(0), "ERC20: transfer from zero address");
require(recipient != address(0), "ERC20: transfer to zero address");
require(amount > 0, "Transfer amount must be greater than zero");
require(amount <= _balances[sender], "Insufficient balance");
bool isSenderExempt = isFeeExempt[sender];
bool isRecipientExempt = isFeeExempt[recipient];
bool isSell = recipient == pair;
bool isBuy = sender == pair;
if (!isSenderExempt && !isRecipientExempt) {
require(tradingAllowed, "Trading not allowed");
if (!isSell && recipient != address(DEAD)) {
require(_balances[recipient] + amount <= _maxWalletToken, "Exceeds max wallet");
}
require(amount <= _maxTxAmount, "Exceeds max tx amount");
if (!isBuy) {
require(amount <= _maxSellAmount, "Exceeds max sell amount");
}
}
if (isSell && !isSenderExempt) {
swapTimes++;
}
uint256 contractBalance = _balances[address(this)];
bool shouldSwap = !swapping && swapEnabled && tradingAllowed && !isSenderExempt && isSell &&
swapTimes >= 2 && amount >= _minTokenAmount && contractBalance >= swapThreshold;
if (shouldSwap) {
swapandreward(swapThreshold);
swapTimes = 0;
}
_balances[sender] -= amount;
uint256 amountReceived = (isSenderExempt || isRecipientExempt) ? amount : takeFee(sender, recipient, amount);
_balances[recipient] += amountReceived;
emit Transfer(sender, recipient, amountReceived);
bool senderHasShares = !isDividendExempt[sender];
bool recipientHasShares = !isDividendExempt[recipient];
if (senderHasShares || recipientHasShares) {
if (senderHasShares) {
if (isSell && shouldSwap) {
distributeDividend(sender); // Sender only on sell with swap
} else if (!isSell && !isBuy) {
distributeDividend(sender); // Sender on transfer
}
setShare(sender, _balances[sender]);
}
if (recipientHasShares) {
if (!isSell && !isBuy && !shouldSwap) {
distributeDividend(recipient); // Recipient on transfer
}
setShare(recipient, _balances[recipient]);
}
}
}
function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _rewards, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
liquidityFee = _liquidity;
marketingFee = _marketing;
burnFee = _burn;
rewardsFee = _rewards;
developmentFee = _development;
totalFee = _total;
sellFee = _sell;
transferFee = _trans;
//require(totalFee <= denominator.div(10) && sellFee <= denominator.div(10) && transferFee <= denominator.div(10), "totalFee and sellFee cannot be more than 10%");
}
function setisBot(address _address, bool _enabled) external onlyOwner {
require(_address != address(pair) && _address != address(router) && _address != address(this), "Ineligible Address");
isBot[_address] = _enabled;
}
function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
uint256 newTx = (totalSupply() * _buy) / 10000;
uint256 newTransfer = (totalSupply() * _trans) / 10000;
uint256 newWallet = (totalSupply() * _wallet) / 10000;
_maxTxAmount = newTx;
_maxSellAmount = newTransfer;
_maxWalletToken = newWallet;
uint256 limit = totalSupply().mul(5).div(1000);
require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
}
function checkTradingAllowed(address sender, address recipient) internal view {
if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
}
function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
}
function swapbackCounters(address sender, address recipient) internal {
if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
}
function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
}
function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
_approve(address(this), address(router), tokenAmount);
router.addLiquidityETH{value: ETHAmount}(
address(this),
false,
tokenAmount,
0,
0,
liquidity_receiver,
block.timestamp);
}
function swapTokensForETH(uint256 tokenAmount) private {
route[] memory routes = new route[](1);
routes[0] = route({
from: address(this),
to: router.wETH(),
stable: false
});
_approve(address(this), address(router), tokenAmount);
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
routes,
address(this),
block.timestamp);
}
function swapETHForRewardToken(uint256 ethAmount) external onlyOwner {
route[] memory routes = new route[](1);
routes[0] = route({
from: router.wETH(),
to: reward,
stable: true
});
router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
0,
routes,
address(this),
block.timestamp);
}
function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
bool aboveMin = amount >= _minTokenAmount;
bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= uint256(2) && aboveThreshold;
}
function depositreward(uint256 amount) private {
totalDividends = totalDividends.add(amount);
dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
}
function swapandreward(uint256 tokens) private lockTheSwap {
uint256 _denominator = marketingFee + developmentFee + rewardsFee;
// Swap tokens for ETH
uint256 initialBalance = address(this).balance;
swapTokensForETH(tokens);
uint256 deltaBalance = address(this).balance - initialBalance;
// Calculate unit ETH per fee weight
uint256 unitBalance = deltaBalance / _denominator;
// Distribute ETH based on fee allocations
uint256 rewardsAmount = unitBalance * rewardsFee;
if (rewardsAmount > 0) {
depositreward(rewardsAmount); // Assumes deposit handles ETH distribution for rewards
}
uint256 marketingAmount = unitBalance * marketingFee;
if (marketingAmount > 0) {
payable(marketing_receiver).transfer(marketingAmount);
}
// Calculate the remaining balance after rewards and marketing
uint256 usedBalance = rewardsAmount + marketingAmount;
uint256 remaining = deltaBalance > usedBalance ? deltaBalance - usedBalance : 0;
if (remaining > 0) {
payable(development_receiver).transfer(remaining);
}
}
function swapBack(address sender, address recipient, uint256 amount) internal {
if(shouldSwapBack(sender, recipient, amount)){swapandreward(swapThreshold); swapTimes = uint256(0);}
}
function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
return !isFeeExempt[sender] && !isFeeExempt[recipient];
}
function getTotalFee(address sender, address recipient) internal view returns (uint256) {
if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
if(recipient == pair){return sellFee;}
if(sender == pair){return totalFee;}
return transferFee;
}
function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
if(getTotalFee(sender, recipient) > 0){
uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
if(burnFee > uint256(0)){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
return amount.sub(feeAmount);} return amount;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function triggerSwap(uint256 tokens) external onlyOwner {
swapandreward(tokens);
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function setisDividendExempt(address holder, bool exempt) external onlyOwner {
isDividendExempt[holder] = exempt;
if(exempt){setShare(holder, 0);}
else{setShare(holder, balanceOf(holder)); }
}
function setShare(address shareholder, uint256 amount) internal {
if(amount > 0 && shares[shareholder].amount == 0){addShareholder(shareholder);}
else if(amount == 0 && shares[shareholder].amount > 0){removeShareholder(shareholder); }
totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
shares[shareholder].amount = amount;
shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
}
function processDistribution(uint256 gas) external {
uint256 shareholderCount = shareholders.length;
if(shareholderCount == 0) { return; }
uint256 gasUsed = 0;
uint256 gasLeft = gasleft();
uint256 iterations = 0;
while(gasUsed < gas && iterations < shareholderCount) {
if(currentIndex >= shareholderCount){currentIndex = 0;}
if(shouldDistribute(shareholders[currentIndex])){
distributeDividend(shareholders[currentIndex]);}
gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
gasLeft = gasleft();
currentIndex++;
iterations++;
}
}
function rescueERC20(address _address, uint256 _amount) external onlyOwner {
IERC20(_address).transfer(marketing_receiver, _amount);
}
function getExcessETH() public view returns (uint256) {
uint256 contractBalance = address(this).balance;
uint256 pendingDividends = totalDividends - totalDistributed;
// Safety check: totalDividends should always be >= totalDistributed
if (pendingDividends > contractBalance) return 0;
return contractBalance - pendingDividends;
}
function rescueExcessETH(address to) external onlyOwner {
uint256 excess = getExcessETH();
require(excess > 0, "No excess ETH");
(bool success, ) = payable(to).call{value: excess}("");
require(success, "Transfer failed");
}
function forceDistributeExcessETH() external onlyOwner {
uint256 unallocated = getExcessETH();
require(unallocated > 0, "No unallocated ETH");
totalDividends += unallocated;
dividendsPerShare += (unallocated * dividendsPerShareAccuracyFactor) / totalShares;
}
function shouldDistribute(address shareholder) internal view returns (bool) {
return shareholderClaims[shareholder] + minPeriod < block.timestamp
&& getUnpaidEarnings(shareholder) > minDistribution;
}
function totalRewardsDistributed(address _wallet) external view returns (uint256) {
address shareholder = _wallet;
return uint256(shares[shareholder].totalRealised);
}
function distributeDividend(address shareholder) private {
Share storage share = shares[shareholder];
uint256 amount = getUnpaidEarnings(shareholder);
if (share.amount == 0 || amount == 0) return;
totalDistributed += amount;
// Use transfer instead of call
payable(shareholder).transfer(amount);
shareholderClaims[shareholder] = block.timestamp;
share.totalRealised += amount;
share.totalExcluded = getCumulativeDividends(share.amount);
}
function getUnpaidEarnings(address shareholder) public view returns (uint256) {
if(shares[shareholder].amount == 0){ return 0; }
uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }
return shareholderTotalDividends.sub(shareholderTotalExcluded);
}
function getCumulativeDividends(uint256 share) internal view returns (uint256) {
return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
}
function addShareholder(address shareholder) internal {
shareholderIndexes[shareholder] = shareholders.length;
shareholders.push(shareholder);
}
function removeShareholder(address shareholder) internal {
shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
shareholders.pop();
}
function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _distributorGas) external onlyOwner {
minPeriod = _minPeriod;
minDistribution = _minDistribution;
distributorGas = _distributorGas;
}
}{
"evmVersion": "london",
"optimizer": {
"enabled": true,
"runs": 10000
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"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":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","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":"_claimDividend","outputs":[],"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":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forceDistributeExcessETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getExcessETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"processDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"rescueExcessETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_routerAddress","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_rewards","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"swapETHForRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"totalRewardsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","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"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"triggerSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040526100106012600a6103b0565b61001e906305f5e1006103c6565b60015561271060015460c861003391906103c6565b61003d91906103dd565b60025561271060015460c861005291906103c6565b61005c91906103dd565b60035561271060015460c861007191906103c6565b61007b91906103dd565b600455600b805460ff60a01b1916905560c8600c819055610708600d55611b58600e556103e8600f81905560006010556011556105dc6012556013556127106014556015805460ff1916600190811790915554620186a0906100df906101f46103c6565b6100e991906103dd565b601855620186a0600154600a6100ff91906103c6565b61010991906103dd565b601955601a80546001600160a01b03191673176211869ca2b568f2a7d4ee941e073a821ee1ff1790556ec097ce7bc90715b34b9f1000000000601f55603c602555620186a06026556205573060275534801561016457600080fd5b50600080546001600160a01b03191633908117825530808352600760209081526040808520805460ff1990811660019081179092557f8e59ac7acde592c7ba2df38c5a1ecf7a6c39a39b6e4a94fdf4dfdb65e47f3b2380548216831790557f3bafff0d408724193cd1257de0975bfddf34c1c58e69455d3122fbd65073fb4a8054821683179055858752828720805482168317905560088452828720805482168317905593865281862080548516821790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548516821790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054909416811790935591548385526005825282852081905591519182529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36103ff565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115610302578085048111156102e6576102e66102b1565b60018416156102f457908102905b60019390931c9280026102cb565b935093915050565b600082610319575060016103aa565b81610326575060006103aa565b816001811461033c576002811461034657610362565b60019150506103aa565b60ff841115610357576103576102b1565b50506001821b6103aa565b5060208310610133831016604e8410600b8410161715610385575081810a6103aa565b61039260001984846102c7565b80600019048211156103a6576103a66102b1565b0290505b92915050565b60006103bf60ff84168361030a565b9392505050565b80820281158282048414176103aa576103aa6102b1565b6000826103fa57634e487b7160e01b600052601260045260246000fd5b500490565b6130eb8061040e6000396000f3fe6080604052600436106102d55760003560e01c80638187f51611610179578063c942435d116100d6578063e2d6f94c1161008a578063f2fde38b11610064578063f2fde38b14610894578063f8e5884b146108b4578063ffd49c84146108d457600080fd5b8063e2d6f94c1461083e578063ef43b02b1461085e578063efca2eed1461087e57600080fd5b8063ce7c2ac2116100bb578063ce7c2ac21461078c578063d84b440a146107e3578063dd62ed3e146107f857600080fd5b8063c942435d1461073e578063ca89b8991461075357600080fd5b806395d89b411161012d578063a8aa1b3111610112578063a8aa1b31146106e9578063a9059cbb14610709578063ad77bd141461072957600080fd5b806395d89b411461068d578063997664d7146106d357600080fd5b80638c41180e1161015e5780638c41180e146106385780638cd4426d146106585780639358928b1461067857600080fd5b80638187f516146105fa578063893d20e81461061a57600080fd5b806334c5d2ce1161023257806344e56680116101e657806360e71962116101c057806360e719621461058e57806370a08231146105a45780637d3dec60146105da57600080fd5b806344e566801461053857806348ff2b8b146105585780634fab0ae81461057857600080fd5b80633f4218e0116102175780633f4218e0146104b85780633f89797e146104e85780634355855a1461050857600080fd5b806334c5d2ce146104825780633a98ef39146104a257600080fd5b806323b872dd11610289578063293230b81161026e578063293230b8146104225780632f54bf6e14610437578063313ce5671461046657600080fd5b806323b872dd146103e257806328fd31981461040257600080fd5b80630ca61cb1116102ba5780630ca61cb11461036957806318160ddd1461038b578063228cb733146103aa57600080fd5b806306fdde03146102e1578063095ea7b31461033957600080fd5b366102dc57005b600080fd5b3480156102ed57600080fd5b5060408051808201909152600881527f446f4e6f7442757900000000000000000000000000000000000000000000000060208201525b6040516103309190612c1f565b60405180910390f35b34801561034557600080fd5b50610359610354366004612ca0565b6108ea565b6040519015158152602001610330565b34801561037557600080fd5b50610389610384366004612ccc565b610901565b005b34801561039757600080fd5b506001545b604051908152602001610330565b3480156103b657600080fd5b50601a546103ca906001600160a01b031681565b6040516001600160a01b039091168152602001610330565b3480156103ee57600080fd5b506103596103fd366004612cf8565b610957565b34801561040e57600080fd5b5061039c61041d366004612d39565b6109c1565b34801561042e57600080fd5b50610389610a4c565b34801561044357600080fd5b50610359610452366004612d39565b6000546001600160a01b0391821691161490565b34801561047257600080fd5b5060405160128152602001610330565b34801561048e57600080fd5b5061038961049d366004612ccc565b610b3b565b3480156104ae57600080fd5b5061039c601b5481565b3480156104c457600080fd5b506103596104d3366004612d39565b60076020526000908152604090205460ff1681565b3480156104f457600080fd5b50610389610503366004612d56565b610cb7565b34801561051457600080fd5b50610359610523366004612d39565b60086020526000908152604090205460ff1681565b34801561054457600080fd5b50610389610553366004612d39565b610da4565b34801561056457600080fd5b50610389610573366004612d7d565b610eeb565b34801561058457600080fd5b5061039c60265481565b34801561059a57600080fd5b5061039c60275481565b3480156105b057600080fd5b5061039c6105bf366004612d39565b6001600160a01b031660009081526005602052604090205490565b3480156105e657600080fd5b506103896105f5366004612d56565b610f59565b34801561060657600080fd5b50610389610615366004612d39565b611148565b34801561062657600080fd5b506000546001600160a01b03166103ca565b34801561064457600080fd5b50610389610653366004612d7d565b6115cc565b34801561066457600080fd5b50610389610673366004612ca0565b6116c7565b34801561068457600080fd5b5061039c6117a8565b34801561069957600080fd5b5060408051808201909152600381527f444e4200000000000000000000000000000000000000000000000000000000006020820152610323565b3480156106df57600080fd5b5061039c601c5481565b3480156106f557600080fd5b50600b546103ca906001600160a01b031681565b34801561071557600080fd5b50610359610724366004612ca0565b611819565b34801561073557600080fd5b5061039c611826565b34801561074a57600080fd5b50610389611860565b34801561075f57600080fd5b5061039c61076e366004612d39565b6001600160a01b031660009081526023602052604090206002015490565b34801561079857600080fd5b506107c86107a7366004612d39565b60236020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610330565b3480156107ef57600080fd5b5061038961186b565b34801561080457600080fd5b5061039c610813366004612db6565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561084a57600080fd5b50610389610859366004612de4565b611954565b34801561086a57600080fd5b50610389610879366004612d7d565b6119bd565b34801561088a57600080fd5b5061039c601d5481565b3480156108a057600080fd5b506103896108af366004612d39565b611a64565b3480156108c057600080fd5b506103896108cf366004612d56565b611b13565b3480156108e057600080fd5b5061039c60255481565b60006108f7338484611b62565b5060015b92915050565b6000546001600160a01b031633146109495760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064015b60405180910390fd5b602592909255602655602755565b6000610964848484611cba565b6109b684336109b18560405180606001604052806028815260200161308e602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906122ee565b611b62565b5060015b9392505050565b6001600160a01b03811660009081526023602052604081205481036109e857506000919050565b6001600160a01b038216600090815260236020526040812054610a0a9061231a565b6001600160a01b038416600090815260236020526040902060010154909150808211610a3a575060009392505050565b610a448282612337565b949350505050565b6000546001600160a01b03163314610a8f5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b600b5474010000000000000000000000000000000000000000900460ff1615610afa5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610940565b600b80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b6000546001600160a01b03163314610b7e5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b600061271084610b8d60015490565b610b979190612e68565b610ba19190612e7f565b9050600061271084610bb260015490565b610bbc9190612e68565b610bc69190612e7f565b9050600061271084610bd760015490565b610be19190612e68565b610beb9190612e7f565b60028490556003839055600481905590506000610c1e6103e8610c186005610c1260015490565b90612343565b9061234f565b9050808410158015610c305750808310155b8015610c3c5750808210155b610cae5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201527f206c657373207468616e202e35250000000000000000000000000000000000006064820152608401610940565b50505050505050565b6020546000819003610cc7575050565b6000805a905060005b8483108015610cde57508381105b15610d9d578360245410610cf25760006024555b610d24602060245481548110610d0a57610d0a612eba565b6000918252602090912001546001600160a01b031661235b565b15610d5b57610d5b602060245481548110610d4157610d41612eba565b6000918252602090912001546001600160a01b03166123a0565b610d70610d695a8490612337565b8490612475565b92505a602480549193506000610d8583612ee9565b91905055508080610d9590612ee9565b915050610cd0565b5050505050565b6000546001600160a01b03163314610de75760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b6000610df1611826565b905060008111610e435760405162461bcd60e51b815260206004820152600d60248201527f4e6f2065786365737320455448000000000000000000000000000000000000006044820152606401610940565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610e90576040519150601f19603f3d011682016040523d82523d6000602084013e610e95565b606091505b5050905080610ee65760405162461bcd60e51b815260206004820152600f60248201527f5472616e73666572206661696c656400000000000000000000000000000000006044820152606401610940565b505050565b6000546001600160a01b03163314610f2e5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f9c5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b604080516001808252818301909252600091816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610fb35750506040805160608101808352600a547ff24286210000000000000000000000000000000000000000000000000000000090915291519293509182916001600160a01b03169063f2428621906064808501916020918187030181865afa158015611069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108d9190612f21565b6001600160a01b039081168252601a541660208201526001604090910152815182906000906110be576110be612eba565b6020908102919091010152600a546040517f76c727510000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906376c7275190849061111b90600090869030904290600401612faa565b6000604051808303818588803b15801561113457600080fd5b505af1158015610cae573d6000803e3d6000fd5b6000546001600160a01b0316331461118b5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b6001600160a01b0381166111e15760405162461bcd60e51b815260206004820152601d60248201527f526f757465722063616e6e6f74206265207a65726f20616464726573730000006044820152606401610940565b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517fc45a0155000000000000000000000000000000000000000000000000000000008152905163c45a0155916004808201926020929091908290030181865afa15801561126b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128f9190612f21565b6001600160a01b0316636801cc3030600a60009054906101000a90046001600160a01b03166001600160a01b031663f24286216040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190612f21565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260006044820152606401602060405180830381865afa15801561137f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a39190612f21565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556115a457600a60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611431573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114559190612f21565b6001600160a01b03166382dfdce430600a60009054906101000a90046001600160a01b03166001600160a01b031663f24286216040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114db9190612f21565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152600060448201526064016020604051808303816000875af1158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190612f21565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790555b50600b546001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b0316331461160f5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b600b546001600160a01b0383811691161480159061163b5750600a546001600160a01b03838116911614155b801561165057506001600160a01b0382163014155b61169c5760405162461bcd60e51b815260206004820152601260248201527f496e656c696769626c65204164647265737300000000000000000000000000006044820152606401610940565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461170a5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081527327dfbec90eea392446f71638b70193c6f558c0016004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611784573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee69190612fdf565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600154919261181492909161180e9190612337565b90612337565b905090565b60006108f7338484611cba565b601d54601c546000914791839161183c91612ffc565b90508181111561184f5760009250505090565b6118598183612ffc565b9250505090565b611869336123a0565b565b6000546001600160a01b031633146118ae5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b60006118b8611826565b90506000811161190a5760405162461bcd60e51b815260206004820152601260248201527f4e6f20756e616c6c6f63617465642045544800000000000000000000000000006044820152606401610940565b80601c600082825461191c919061300f565b9091555050601b54601f546119319083612e68565b61193b9190612e7f565b601e600082825461194c919061300f565b909155505050565b6000546001600160a01b031633146119975760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b600c97909755600d95909555601093909355600e91909155600f55601155601255601355565b6000546001600160a01b03163314611a005760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b6001600160a01b0382166000908152600860205260409020805460ff19168215801591909117909155611a3c57611a38826000612481565b5050565b611a3882611a5f846001600160a01b031660009081526005602052604090205490565b612481565b6000546001600160a01b03163314611aa75760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b03163314611b565760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b611b5f816125d2565b50565b6001600160a01b038316611bdd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610940565b6001600160a01b038216611c595760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610940565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d365760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610940565b6001600160a01b038216611d8c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610940565b60008111611e025760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610940565b6001600160a01b038316600090815260056020526040902054811115611e6a5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610940565b6001600160a01b03808416600081815260076020526040808220548685168084529190922054600b5460ff9384169591909316939216908114911483158015611eb1575082155b1561205c57600b5474010000000000000000000000000000000000000000900460ff16611f205760405162461bcd60e51b815260206004820152601360248201527f54726164696e67206e6f7420616c6c6f776564000000000000000000000000006044820152606401610940565b81158015611f3957506001600160a01b03861661dead14155b15611fb3576004546001600160a01b038716600090815260056020526040902054611f6590879061300f565b1115611fb35760405162461bcd60e51b815260206004820152601260248201527f45786365656473206d61782077616c6c657400000000000000000000000000006044820152606401610940565b6002548511156120055760405162461bcd60e51b815260206004820152601560248201527f45786365656473206d617820747820616d6f756e7400000000000000000000006044820152606401610940565b8061205c5760035485111561205c5760405162461bcd60e51b815260206004820152601760248201527f45786365656473206d61782073656c6c20616d6f756e740000000000000000006044820152606401610940565b818015612067575083155b15612082576016805490600061207c83612ee9565b91905055505b3060009081526005602052604081205460175490919060ff161580156120aa575060155460ff165b80156120d05750600b5474010000000000000000000000000000000000000000900460ff165b80156120da575085155b80156120e35750835b80156120f25750600260165410155b801561210057506019548710155b801561210e57506018548210155b90508015612127576121216018546125d2565b60006016555b6001600160a01b0389166000908152600560205260408120805489929061214f908490612ffc565b909155506000905086806121605750855b6121745761216f8a8a8a61272b565b612176565b875b6001600160a01b038a166000908152600560205260408120805492935083929091906121a390849061300f565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121ef91815260200190565b60405180910390a36001600160a01b03808b1660009081526008602052604080822054928c16825290205460ff91821615911615818061222c5750805b156122e0578115612292578680156122415750835b156122545761224f8c6123a0565b61226e565b86158015612260575085155b1561226e5761226e8c6123a0565b6001600160a01b038c16600090815260056020526040902054612292908d90612481565b80156122e057861580156122a4575085155b80156122ae575083155b156122bc576122bc8b6123a0565b6001600160a01b038b166000908152600560205260409020546122e0908c90612481565b505050505050505050505050565b600081848411156123125760405162461bcd60e51b81526004016109409190612c1f565b505050900390565b60006108fb601f54610c18601e548561234390919063ffffffff16565b60006109ba8284612ffc565b60006109ba8284612e68565b60006109ba8284612e7f565b6025546001600160a01b03821660009081526022602052604081205490914291612385919061300f565b1080156108fb5750602654612399836109c1565b1192915050565b6001600160a01b0381166000908152602360205260408120906123c2836109c1565b825490915015806123d1575080155b156123db57505050565b80601d60008282546123ed919061300f565b90915550506040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015612428573d6000803e3d6000fd5b506001600160a01b038316600090815260226020526040812042905560028301805483929061245890849061300f565b909155505081546124689061231a565b8260010181905550505050565b60006109ba828461300f565b6000811180156124a757506001600160a01b038216600090815260236020526040902054155b1561252457602080546001600160a01b03841660008181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055612557565b8015801561254957506001600160a01b03821660009081526023602052604090205415155b156125575761255782612819565b6001600160a01b038216600090815260236020526040902054601b5461258891839161258291612337565b90612475565b601b556001600160a01b03821660009081526023602052604090208190556125af8161231a565b6001600160a01b0390921660009081526023602052604090206001019190915550565b6017805460ff19166001179055600e54600f54600d54600092916125f59161300f565b6125ff919061300f565b90504761260b8361297b565b60006126178247612ffc565b905060006126258483612e7f565b90506000600e54826126379190612e68565b905080156126485761264881612b47565b6000600d54836126589190612e68565b905080156126a3576040517327dfbec90eea392446f71638b70193c6f558c0019082156108fc029083906000818181858888f193505050501580156126a1573d6000803e3d6000fd5b505b60006126af828461300f565b905060008186116126c15760006126cb565b6126cb8287612ffc565b9050801561271657604051730f245a7d374388cd76fc8139dd900e9b02bf69d79082156108fc029083906000818181858888f19350505050158015612714573d6000803e3d6000fd5b505b50506017805460ff1916905550505050505050565b6000806127388585612b7e565b111561281257600061275b61274d8686612b7e565b601454610c1290869061234f565b306000908152600560205260409020549091506127789082612475565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906127c99085815260200190565b60405180910390a360105415612800576128003061dead6127fb601054610c126014548961234f90919063ffffffff16565b611cba565b61280a8382612337565b9150506109ba565b5092915050565b6020805461282990600190612ffc565b8154811061283957612839612eba565b60009182526020808320909101546001600160a01b0384811684526021835260409093205482549390911692811061287357612873612eba565b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0394851617905591831681526021808352604082205483549093919291906128d690600190612ffc565b815481106128e6576128e6612eba565b60009182526020808320909101546001600160a01b0316835282810193909352604090910190209190915580548061292057612920613022565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905501905550565b604080516001808252818301909252600091816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161299257505060408051606081018252308152600a5482517ff2428621000000000000000000000000000000000000000000000000000000008152925193945090926020808501936001600160a01b039093169263f242862192600480830193928290030181865afa158015612a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a749190612f21565b6001600160a01b031681526020016000151581525081600081518110612a9c57612a9c612eba565b6020908102919091010152600a54612abf9030906001600160a01b031684611b62565b600a546040517f7af728c80000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690637af728c890612b11908590600090869030904290600401613051565b600060405180830381600087803b158015612b2b57600080fd5b505af1158015612b3f573d6000803e3d6000fd5b505050505050565b601c54612b549082612475565b601c55601b54601f54612b7891612b6f91610c189085612343565b601e5490612475565b601e5550565b6001600160a01b03821660009081526009602052604081205460ff1680612bbd57506001600160a01b03821660009081526009602052604090205460ff165b15612bd757601454612bd0906064612337565b90506108fb565b600b546001600160a01b0390811690831603612bf657506012546108fb565b600b546001600160a01b0390811690841603612c1557506011546108fb565b5060135492915050565b602081526000825180602084015260005b81811015612c4d5760208186018101516040868401015201612c30565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b6001600160a01b0381168114611b5f57600080fd5b60008060408385031215612cb357600080fd5b8235612cbe81612c8b565b946020939093013593505050565b600080600060608486031215612ce157600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612d0d57600080fd5b8335612d1881612c8b565b92506020840135612d2881612c8b565b929592945050506040919091013590565b600060208284031215612d4b57600080fd5b81356109ba81612c8b565b600060208284031215612d6857600080fd5b5035919050565b8015158114611b5f57600080fd5b60008060408385031215612d9057600080fd5b8235612d9b81612c8b565b91506020830135612dab81612d6f565b809150509250929050565b60008060408385031215612dc957600080fd5b8235612dd481612c8b565b91506020830135612dab81612c8b565b600080600080600080600080610100898b031215612e0157600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108fb576108fb612e39565b600082612eb5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f1a57612f1a612e39565b5060010190565b600060208284031215612f3357600080fd5b81516109ba81612c8b565b600081518084526020840193506020830160005b82811015612fa05781516001600160a01b0381511687526001600160a01b03602082015116602088015260408101511515604088015250606086019550602082019150600181019050612f52565b5093949350505050565b848152608060208201526000612fc36080830186612f3e565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215612ff157600080fd5b81516109ba81612d6f565b818103818111156108fb576108fb612e39565b808201808211156108fb576108fb612e39565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b85815284602082015260a06040820152600061307060a0830186612f3e565b6001600160a01b039490941660608301525060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122061fdd3232719ff08838692ef477f917861aab5fe6f7175bbf15391857c40670864736f6c634300081a0033
Deployed Bytecode
0x6080604052600436106102d55760003560e01c80638187f51611610179578063c942435d116100d6578063e2d6f94c1161008a578063f2fde38b11610064578063f2fde38b14610894578063f8e5884b146108b4578063ffd49c84146108d457600080fd5b8063e2d6f94c1461083e578063ef43b02b1461085e578063efca2eed1461087e57600080fd5b8063ce7c2ac2116100bb578063ce7c2ac21461078c578063d84b440a146107e3578063dd62ed3e146107f857600080fd5b8063c942435d1461073e578063ca89b8991461075357600080fd5b806395d89b411161012d578063a8aa1b3111610112578063a8aa1b31146106e9578063a9059cbb14610709578063ad77bd141461072957600080fd5b806395d89b411461068d578063997664d7146106d357600080fd5b80638c41180e1161015e5780638c41180e146106385780638cd4426d146106585780639358928b1461067857600080fd5b80638187f516146105fa578063893d20e81461061a57600080fd5b806334c5d2ce1161023257806344e56680116101e657806360e71962116101c057806360e719621461058e57806370a08231146105a45780637d3dec60146105da57600080fd5b806344e566801461053857806348ff2b8b146105585780634fab0ae81461057857600080fd5b80633f4218e0116102175780633f4218e0146104b85780633f89797e146104e85780634355855a1461050857600080fd5b806334c5d2ce146104825780633a98ef39146104a257600080fd5b806323b872dd11610289578063293230b81161026e578063293230b8146104225780632f54bf6e14610437578063313ce5671461046657600080fd5b806323b872dd146103e257806328fd31981461040257600080fd5b80630ca61cb1116102ba5780630ca61cb11461036957806318160ddd1461038b578063228cb733146103aa57600080fd5b806306fdde03146102e1578063095ea7b31461033957600080fd5b366102dc57005b600080fd5b3480156102ed57600080fd5b5060408051808201909152600881527f446f4e6f7442757900000000000000000000000000000000000000000000000060208201525b6040516103309190612c1f565b60405180910390f35b34801561034557600080fd5b50610359610354366004612ca0565b6108ea565b6040519015158152602001610330565b34801561037557600080fd5b50610389610384366004612ccc565b610901565b005b34801561039757600080fd5b506001545b604051908152602001610330565b3480156103b657600080fd5b50601a546103ca906001600160a01b031681565b6040516001600160a01b039091168152602001610330565b3480156103ee57600080fd5b506103596103fd366004612cf8565b610957565b34801561040e57600080fd5b5061039c61041d366004612d39565b6109c1565b34801561042e57600080fd5b50610389610a4c565b34801561044357600080fd5b50610359610452366004612d39565b6000546001600160a01b0391821691161490565b34801561047257600080fd5b5060405160128152602001610330565b34801561048e57600080fd5b5061038961049d366004612ccc565b610b3b565b3480156104ae57600080fd5b5061039c601b5481565b3480156104c457600080fd5b506103596104d3366004612d39565b60076020526000908152604090205460ff1681565b3480156104f457600080fd5b50610389610503366004612d56565b610cb7565b34801561051457600080fd5b50610359610523366004612d39565b60086020526000908152604090205460ff1681565b34801561054457600080fd5b50610389610553366004612d39565b610da4565b34801561056457600080fd5b50610389610573366004612d7d565b610eeb565b34801561058457600080fd5b5061039c60265481565b34801561059a57600080fd5b5061039c60275481565b3480156105b057600080fd5b5061039c6105bf366004612d39565b6001600160a01b031660009081526005602052604090205490565b3480156105e657600080fd5b506103896105f5366004612d56565b610f59565b34801561060657600080fd5b50610389610615366004612d39565b611148565b34801561062657600080fd5b506000546001600160a01b03166103ca565b34801561064457600080fd5b50610389610653366004612d7d565b6115cc565b34801561066457600080fd5b50610389610673366004612ca0565b6116c7565b34801561068457600080fd5b5061039c6117a8565b34801561069957600080fd5b5060408051808201909152600381527f444e4200000000000000000000000000000000000000000000000000000000006020820152610323565b3480156106df57600080fd5b5061039c601c5481565b3480156106f557600080fd5b50600b546103ca906001600160a01b031681565b34801561071557600080fd5b50610359610724366004612ca0565b611819565b34801561073557600080fd5b5061039c611826565b34801561074a57600080fd5b50610389611860565b34801561075f57600080fd5b5061039c61076e366004612d39565b6001600160a01b031660009081526023602052604090206002015490565b34801561079857600080fd5b506107c86107a7366004612d39565b60236020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610330565b3480156107ef57600080fd5b5061038961186b565b34801561080457600080fd5b5061039c610813366004612db6565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561084a57600080fd5b50610389610859366004612de4565b611954565b34801561086a57600080fd5b50610389610879366004612d7d565b6119bd565b34801561088a57600080fd5b5061039c601d5481565b3480156108a057600080fd5b506103896108af366004612d39565b611a64565b3480156108c057600080fd5b506103896108cf366004612d56565b611b13565b3480156108e057600080fd5b5061039c60255481565b60006108f7338484611b62565b5060015b92915050565b6000546001600160a01b031633146109495760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064015b60405180910390fd5b602592909255602655602755565b6000610964848484611cba565b6109b684336109b18560405180606001604052806028815260200161308e602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906122ee565b611b62565b5060015b9392505050565b6001600160a01b03811660009081526023602052604081205481036109e857506000919050565b6001600160a01b038216600090815260236020526040812054610a0a9061231a565b6001600160a01b038416600090815260236020526040902060010154909150808211610a3a575060009392505050565b610a448282612337565b949350505050565b6000546001600160a01b03163314610a8f5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b600b5474010000000000000000000000000000000000000000900460ff1615610afa5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610940565b600b80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b6000546001600160a01b03163314610b7e5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b600061271084610b8d60015490565b610b979190612e68565b610ba19190612e7f565b9050600061271084610bb260015490565b610bbc9190612e68565b610bc69190612e7f565b9050600061271084610bd760015490565b610be19190612e68565b610beb9190612e7f565b60028490556003839055600481905590506000610c1e6103e8610c186005610c1260015490565b90612343565b9061234f565b9050808410158015610c305750808310155b8015610c3c5750808210155b610cae5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201527f206c657373207468616e202e35250000000000000000000000000000000000006064820152608401610940565b50505050505050565b6020546000819003610cc7575050565b6000805a905060005b8483108015610cde57508381105b15610d9d578360245410610cf25760006024555b610d24602060245481548110610d0a57610d0a612eba565b6000918252602090912001546001600160a01b031661235b565b15610d5b57610d5b602060245481548110610d4157610d41612eba565b6000918252602090912001546001600160a01b03166123a0565b610d70610d695a8490612337565b8490612475565b92505a602480549193506000610d8583612ee9565b91905055508080610d9590612ee9565b915050610cd0565b5050505050565b6000546001600160a01b03163314610de75760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b6000610df1611826565b905060008111610e435760405162461bcd60e51b815260206004820152600d60248201527f4e6f2065786365737320455448000000000000000000000000000000000000006044820152606401610940565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610e90576040519150601f19603f3d011682016040523d82523d6000602084013e610e95565b606091505b5050905080610ee65760405162461bcd60e51b815260206004820152600f60248201527f5472616e73666572206661696c656400000000000000000000000000000000006044820152606401610940565b505050565b6000546001600160a01b03163314610f2e5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f9c5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b604080516001808252818301909252600091816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610fb35750506040805160608101808352600a547ff24286210000000000000000000000000000000000000000000000000000000090915291519293509182916001600160a01b03169063f2428621906064808501916020918187030181865afa158015611069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108d9190612f21565b6001600160a01b039081168252601a541660208201526001604090910152815182906000906110be576110be612eba565b6020908102919091010152600a546040517f76c727510000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906376c7275190849061111b90600090869030904290600401612faa565b6000604051808303818588803b15801561113457600080fd5b505af1158015610cae573d6000803e3d6000fd5b6000546001600160a01b0316331461118b5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b6001600160a01b0381166111e15760405162461bcd60e51b815260206004820152601d60248201527f526f757465722063616e6e6f74206265207a65726f20616464726573730000006044820152606401610940565b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517fc45a0155000000000000000000000000000000000000000000000000000000008152905163c45a0155916004808201926020929091908290030181865afa15801561126b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128f9190612f21565b6001600160a01b0316636801cc3030600a60009054906101000a90046001600160a01b03166001600160a01b031663f24286216040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190612f21565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260006044820152606401602060405180830381865afa15801561137f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a39190612f21565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556115a457600a60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611431573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114559190612f21565b6001600160a01b03166382dfdce430600a60009054906101000a90046001600160a01b03166001600160a01b031663f24286216040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114db9190612f21565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152600060448201526064016020604051808303816000875af1158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190612f21565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790555b50600b546001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b0316331461160f5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b600b546001600160a01b0383811691161480159061163b5750600a546001600160a01b03838116911614155b801561165057506001600160a01b0382163014155b61169c5760405162461bcd60e51b815260206004820152601260248201527f496e656c696769626c65204164647265737300000000000000000000000000006044820152606401610940565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461170a5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081527327dfbec90eea392446f71638b70193c6f558c0016004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611784573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee69190612fdf565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600154919261181492909161180e9190612337565b90612337565b905090565b60006108f7338484611cba565b601d54601c546000914791839161183c91612ffc565b90508181111561184f5760009250505090565b6118598183612ffc565b9250505090565b611869336123a0565b565b6000546001600160a01b031633146118ae5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b60006118b8611826565b90506000811161190a5760405162461bcd60e51b815260206004820152601260248201527f4e6f20756e616c6c6f63617465642045544800000000000000000000000000006044820152606401610940565b80601c600082825461191c919061300f565b9091555050601b54601f546119319083612e68565b61193b9190612e7f565b601e600082825461194c919061300f565b909155505050565b6000546001600160a01b031633146119975760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b600c97909755600d95909555601093909355600e91909155600f55601155601255601355565b6000546001600160a01b03163314611a005760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b6001600160a01b0382166000908152600860205260409020805460ff19168215801591909117909155611a3c57611a38826000612481565b5050565b611a3882611a5f846001600160a01b031660009081526005602052604090205490565b612481565b6000546001600160a01b03163314611aa75760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b03163314611b565760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b6044820152606401610940565b611b5f816125d2565b50565b6001600160a01b038316611bdd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610940565b6001600160a01b038216611c595760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610940565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d365760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610940565b6001600160a01b038216611d8c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610940565b60008111611e025760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610940565b6001600160a01b038316600090815260056020526040902054811115611e6a5760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610940565b6001600160a01b03808416600081815260076020526040808220548685168084529190922054600b5460ff9384169591909316939216908114911483158015611eb1575082155b1561205c57600b5474010000000000000000000000000000000000000000900460ff16611f205760405162461bcd60e51b815260206004820152601360248201527f54726164696e67206e6f7420616c6c6f776564000000000000000000000000006044820152606401610940565b81158015611f3957506001600160a01b03861661dead14155b15611fb3576004546001600160a01b038716600090815260056020526040902054611f6590879061300f565b1115611fb35760405162461bcd60e51b815260206004820152601260248201527f45786365656473206d61782077616c6c657400000000000000000000000000006044820152606401610940565b6002548511156120055760405162461bcd60e51b815260206004820152601560248201527f45786365656473206d617820747820616d6f756e7400000000000000000000006044820152606401610940565b8061205c5760035485111561205c5760405162461bcd60e51b815260206004820152601760248201527f45786365656473206d61782073656c6c20616d6f756e740000000000000000006044820152606401610940565b818015612067575083155b15612082576016805490600061207c83612ee9565b91905055505b3060009081526005602052604081205460175490919060ff161580156120aa575060155460ff165b80156120d05750600b5474010000000000000000000000000000000000000000900460ff165b80156120da575085155b80156120e35750835b80156120f25750600260165410155b801561210057506019548710155b801561210e57506018548210155b90508015612127576121216018546125d2565b60006016555b6001600160a01b0389166000908152600560205260408120805489929061214f908490612ffc565b909155506000905086806121605750855b6121745761216f8a8a8a61272b565b612176565b875b6001600160a01b038a166000908152600560205260408120805492935083929091906121a390849061300f565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121ef91815260200190565b60405180910390a36001600160a01b03808b1660009081526008602052604080822054928c16825290205460ff91821615911615818061222c5750805b156122e0578115612292578680156122415750835b156122545761224f8c6123a0565b61226e565b86158015612260575085155b1561226e5761226e8c6123a0565b6001600160a01b038c16600090815260056020526040902054612292908d90612481565b80156122e057861580156122a4575085155b80156122ae575083155b156122bc576122bc8b6123a0565b6001600160a01b038b166000908152600560205260409020546122e0908c90612481565b505050505050505050505050565b600081848411156123125760405162461bcd60e51b81526004016109409190612c1f565b505050900390565b60006108fb601f54610c18601e548561234390919063ffffffff16565b60006109ba8284612ffc565b60006109ba8284612e68565b60006109ba8284612e7f565b6025546001600160a01b03821660009081526022602052604081205490914291612385919061300f565b1080156108fb5750602654612399836109c1565b1192915050565b6001600160a01b0381166000908152602360205260408120906123c2836109c1565b825490915015806123d1575080155b156123db57505050565b80601d60008282546123ed919061300f565b90915550506040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015612428573d6000803e3d6000fd5b506001600160a01b038316600090815260226020526040812042905560028301805483929061245890849061300f565b909155505081546124689061231a565b8260010181905550505050565b60006109ba828461300f565b6000811180156124a757506001600160a01b038216600090815260236020526040902054155b1561252457602080546001600160a01b03841660008181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055612557565b8015801561254957506001600160a01b03821660009081526023602052604090205415155b156125575761255782612819565b6001600160a01b038216600090815260236020526040902054601b5461258891839161258291612337565b90612475565b601b556001600160a01b03821660009081526023602052604090208190556125af8161231a565b6001600160a01b0390921660009081526023602052604090206001019190915550565b6017805460ff19166001179055600e54600f54600d54600092916125f59161300f565b6125ff919061300f565b90504761260b8361297b565b60006126178247612ffc565b905060006126258483612e7f565b90506000600e54826126379190612e68565b905080156126485761264881612b47565b6000600d54836126589190612e68565b905080156126a3576040517327dfbec90eea392446f71638b70193c6f558c0019082156108fc029083906000818181858888f193505050501580156126a1573d6000803e3d6000fd5b505b60006126af828461300f565b905060008186116126c15760006126cb565b6126cb8287612ffc565b9050801561271657604051730f245a7d374388cd76fc8139dd900e9b02bf69d79082156108fc029083906000818181858888f19350505050158015612714573d6000803e3d6000fd5b505b50506017805460ff1916905550505050505050565b6000806127388585612b7e565b111561281257600061275b61274d8686612b7e565b601454610c1290869061234f565b306000908152600560205260409020549091506127789082612475565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906127c99085815260200190565b60405180910390a360105415612800576128003061dead6127fb601054610c126014548961234f90919063ffffffff16565b611cba565b61280a8382612337565b9150506109ba565b5092915050565b6020805461282990600190612ffc565b8154811061283957612839612eba565b60009182526020808320909101546001600160a01b0384811684526021835260409093205482549390911692811061287357612873612eba565b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0394851617905591831681526021808352604082205483549093919291906128d690600190612ffc565b815481106128e6576128e6612eba565b60009182526020808320909101546001600160a01b0316835282810193909352604090910190209190915580548061292057612920613022565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905501905550565b604080516001808252818301909252600091816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161299257505060408051606081018252308152600a5482517ff2428621000000000000000000000000000000000000000000000000000000008152925193945090926020808501936001600160a01b039093169263f242862192600480830193928290030181865afa158015612a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a749190612f21565b6001600160a01b031681526020016000151581525081600081518110612a9c57612a9c612eba565b6020908102919091010152600a54612abf9030906001600160a01b031684611b62565b600a546040517f7af728c80000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690637af728c890612b11908590600090869030904290600401613051565b600060405180830381600087803b158015612b2b57600080fd5b505af1158015612b3f573d6000803e3d6000fd5b505050505050565b601c54612b549082612475565b601c55601b54601f54612b7891612b6f91610c189085612343565b601e5490612475565b601e5550565b6001600160a01b03821660009081526009602052604081205460ff1680612bbd57506001600160a01b03821660009081526009602052604090205460ff165b15612bd757601454612bd0906064612337565b90506108fb565b600b546001600160a01b0390811690831603612bf657506012546108fb565b600b546001600160a01b0390811690841603612c1557506011546108fb565b5060135492915050565b602081526000825180602084015260005b81811015612c4d5760208186018101516040868401015201612c30565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b6001600160a01b0381168114611b5f57600080fd5b60008060408385031215612cb357600080fd5b8235612cbe81612c8b565b946020939093013593505050565b600080600060608486031215612ce157600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612d0d57600080fd5b8335612d1881612c8b565b92506020840135612d2881612c8b565b929592945050506040919091013590565b600060208284031215612d4b57600080fd5b81356109ba81612c8b565b600060208284031215612d6857600080fd5b5035919050565b8015158114611b5f57600080fd5b60008060408385031215612d9057600080fd5b8235612d9b81612c8b565b91506020830135612dab81612d6f565b809150509250929050565b60008060408385031215612dc957600080fd5b8235612dd481612c8b565b91506020830135612dab81612c8b565b600080600080600080600080610100898b031215612e0157600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176108fb576108fb612e39565b600082612eb5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f1a57612f1a612e39565b5060010190565b600060208284031215612f3357600080fd5b81516109ba81612c8b565b600081518084526020840193506020830160005b82811015612fa05781516001600160a01b0381511687526001600160a01b03602082015116602088015260408101511515604088015250606086019550602082019150600181019050612f52565b5093949350505050565b848152608060208201526000612fc36080830186612f3e565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215612ff157600080fd5b81516109ba81612d6f565b818103818111156108fb576108fb612e39565b808201808211156108fb576108fb612e39565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b85815284602082015260a06040820152600061307060a0830186612f3e565b6001600160a01b039490941660608301525060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122061fdd3232719ff08838692ef477f917861aab5fe6f7175bbf15391857c40670864736f6c634300081a0033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
Token Allocations
ETH
100.00%
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| LINEA | 100.00% | $2,939 | 0.00000004524 | $0.000133 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.