// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
/**
* ██╗ ██╗ █████╗ █████╗ ██████╗ █████╗
* ██║ ██║██╔══██╗██╔══██╗██╔════╝ ██╔══██╗
* ███████║███████║███████║██║ ███╗███████║
* ██╔══██║██╔══██║██╔══██║██║ ██║██╔══██║
* ██║ ██║██║ ██║██║ ██║╚██████╔╝██║ ██║
* ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝
*
* High As A Giraffe's Ass (HAAGA)
* Total Supply: 420,000,000
* Network: Robinhood Chain (Chain ID: 4663)
*
* Features:
* - Separate buy/sell taxes: Burn, Liquidity, Rewards, Marketing
* - Anti-sniper tax: 30% for first 200 blocks → 100% to LP
* - Auto-distributing rewards in a secondary token (proportional to holdings)
* - Auto-liquidity generation (swap & add to pool)
* - Dividend tracker with gas-efficient iteration
* - Full setter/getter functions
* - Auto-verifiable via Blockscout on Robinhood Chain
*/
// ─────────────────────────────────────────────────────────────────────────────
// OpenZeppelin Contracts (inline to avoid import path issues on deployment)
// ─────────────────────────────────────────────────────────────────────────────
abstract contract Context {
function _msgSender() internal view virtual returns (address) { return msg.sender; }
function _msgData() internal view virtual returns (bytes calldata) { return msg.data; }
}
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
abstract contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual override returns (string memory) { return _name; }
function symbol() public view virtual override returns (string memory) { return _symbol; }
function decimals() public view virtual override returns (uint8) { return 18; }
function totalSupply() public view virtual override returns (uint256) { return _totalSupply; }
function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; }
function transfer(address to, uint256 value) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, value);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 value) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, value);
return true;
}
function transferFrom(address from, address to, uint256 value) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, value);
_transfer(from, to, value);
return true;
}
function _transfer(address from, address to, uint256 value) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_update(from, to, value);
}
function _update(address from, address to, uint256 value) internal virtual {
if (from == address(0)) {
_totalSupply += value;
} else {
uint256 fromBalance = _balances[from];
require(fromBalance >= value, "ERC20: transfer amount exceeds balance");
unchecked { _balances[from] = fromBalance - value; }
}
if (to == address(0)) {
unchecked { _totalSupply -= value; }
} else {
unchecked { _balances[to] += value; }
}
emit Transfer(from, to, value);
}
function _mint(address account, uint256 value) internal {
require(account != address(0), "ERC20: mint to the zero address");
_update(address(0), account, value);
}
function _burn(address account, uint256 value) internal {
require(account != address(0), "ERC20: burn from the zero address");
_update(account, address(0), value);
}
function _approve(address owner, address spender, uint256 value) internal {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = value;
emit Approval(owner, spender, value);
}
function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= value, "ERC20: insufficient allowance");
unchecked { _approve(owner, spender, currentAllowance - value); }
}
}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor(address initialOwner) {
require(initialOwner != address(0), "Ownable: owner is the zero address");
_transferOwnership(initialOwner);
}
modifier onlyOwner() {
_checkOwner();
_;
}
function owner() public view virtual returns (address) { return _owner; }
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// ─────────────────────────────────────────────────────────────────────────────
// Uniswap V2 Interfaces
// ─────────────────────────────────────────────────────────────────────────────
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
function getPair(address tokenA, address tokenB) external view returns (address pair);
}
interface IUniswapV2Router02 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
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;
}
// ─────────────────────────────────────────────────────────────────────────────
// Dividend Distributor
// Handles proportional auto-distribution of a secondary reward token
// to all HAAGA holders based on their share of total supply.
// ─────────────────────────────────────────────────────────────────────────────
interface IDividendDistributor {
function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
function setShare(address shareholder, uint256 amount) external;
function deposit() external payable;
function process(uint256 gas) external;
function setRewardToken(address _rewardToken) external;
function claimDividend(address shareholder) external;
function getUnpaidEarnings(address shareholder) external view returns (uint256);
function getTotalDistributed() external view returns (uint256);
function getShareholderInfo(address shareholder) external view returns (uint256 amount, uint256 totalRealised, uint256 unpaid);
}
contract DividendDistributor is IDividendDistributor {
address private _token;
struct Share {
uint256 amount;
uint256 totalExcluded;
uint256 totalRealised;
}
address public rewardToken;
IUniswapV2Router02 public router;
address[] public shareholders;
mapping(address => uint256) public shareholderIndexes;
mapping(address => uint256) public shareholderClaims;
mapping(address => Share) public shares;
uint256 public totalShares;
uint256 public totalDividends;
uint256 public totalDistributed;
uint256 public dividendsPerShare;
uint256 public constant ACCURACY_FACTOR = 10 ** 36;
uint256 public minPeriod = 1 hours;
uint256 public minDistribution = 1 * (10 ** 15); // 0.001 tokens (adjustable)
uint256 private currentIndex;
modifier onlyToken() {
require(msg.sender == _token, "DividendDistributor: caller is not the token");
_;
}
constructor(address _router) {
router = IUniswapV2Router02(_router);
_token = msg.sender;
}
// ── Setters ──────────────────────────────────────────────────────────────
function setRewardToken(address _rewardToken) external override onlyToken {
require(_rewardToken != address(0), "DividendDistributor: zero address");
rewardToken = _rewardToken;
}
function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
minPeriod = _minPeriod;
minDistribution = _minDistribution;
}
function setShare(address shareholder, uint256 amount) external override onlyToken {
if (shares[shareholder].amount > 0) {
distributeDividend(shareholder);
}
if (amount > 0 && shares[shareholder].amount == 0) {
addShareholder(shareholder);
} else if (amount == 0 && shares[shareholder].amount > 0) {
removeShareholder(shareholder);
}
totalShares = totalShares - shares[shareholder].amount + amount;
shares[shareholder].amount = amount;
shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
}
// ── Core Distribution ─────────────────────────────────────────────────────
function deposit() external payable override onlyToken {
require(rewardToken != address(0), "DividendDistributor: reward token not set");
if (totalShares == 0) return;
uint256 balanceBefore = IERC20(rewardToken).balanceOf(address(this));
address[] memory path = new address[](2);
path[0] = router.WETH();
path[1] = rewardToken;
router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
0,
path,
address(this),
block.timestamp
);
uint256 amount = IERC20(rewardToken).balanceOf(address(this)) - balanceBefore;
if (amount == 0) return;
totalDividends += amount;
dividendsPerShare += (amount * ACCURACY_FACTOR / totalShares);
}
function process(uint256 gas) external override onlyToken {
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 += gasLeft - gasleft();
gasLeft = gasleft();
currentIndex++;
iterations++;
}
}
function claimDividend(address shareholder) external override onlyToken {
distributeDividend(shareholder);
}
// ── Internal Helpers ──────────────────────────────────────────────────────
function shouldDistribute(address shareholder) internal view returns (bool) {
return shareholderClaims[shareholder] + minPeriod < block.timestamp
&& getUnpaidEarnings(shareholder) > minDistribution;
}
function distributeDividend(address shareholder) internal {
if (shares[shareholder].amount == 0) return;
uint256 amount = getUnpaidEarnings(shareholder);
if (amount > 0) {
totalDistributed += amount;
IERC20(rewardToken).transfer(shareholder, amount);
shareholderClaims[shareholder] = block.timestamp;
shares[shareholder].totalRealised += amount;
shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
}
}
function getCumulativeDividends(uint256 share) internal view returns (uint256) {
return share * dividendsPerShare / ACCURACY_FACTOR;
}
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();
}
// ── Getters ───────────────────────────────────────────────────────────────
function getUnpaidEarnings(address shareholder) public view override 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 - shareholderTotalExcluded;
}
function getTotalDistributed() external view override returns (uint256) {
return totalDistributed;
}
function getShareholderInfo(address shareholder) external view override returns (
uint256 amount,
uint256 totalRealised,
uint256 unpaid
) {
amount = shares[shareholder].amount;
totalRealised = shares[shareholder].totalRealised;
unpaid = getUnpaidEarnings(shareholder);
}
function getShareholderCount() external view returns (uint256) {
return shareholders.length;
}
}
// ─────────────────────────────────────────────────────────────────────────────
// HAAGA Main Token Contract
// ─────────────────────────────────────────────────────────────────────────────
contract HAAGA is ERC20, Ownable {
// ── Network Constants ─────────────────────────────────────────────────────
// Robinhood Chain (Chain ID: 4663) - Uniswap V2 Router & Factory
address public constant UNISWAP_V2_ROUTER = 0x89e5DB8B5aA49aA85AC63f691524311AEB649eba;
address public constant UNISWAP_V2_FACTORY = 0x8bcEaA40B9AcdfAedF85AdF4FF01F5Ad6517937f;
address public constant DEAD_ADDRESS = 0x000000000000000000000000000000000000dEaD;
// ── Token Constants ───────────────────────────────────────────────────────
uint256 public constant TOTAL_SUPPLY = 420_000_000 * 10 ** 18;
uint256 public constant SNIPER_BLOCKS = 200;
uint256 public constant SNIPER_TAX_BPS = 3000; // 30% in basis points
uint256 public constant MAX_TAX_BPS = 2500; // 25% max normal tax
// ── DEX State ─────────────────────────────────────────────────────────────
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
// ── Dividend Distributor ──────────────────────────────────────────────────
DividendDistributor public dividendDistributor;
address public rewardToken;
uint256 public distributorGas = 500_000;
// ── Wallets ───────────────────────────────────────────────────────────────
address public marketingWallet;
// ── Trading State ─────────────────────────────────────────────────────────
uint256 public startBlock;
bool public tradingActive;
bool private _swapping;
// ── Tax Structures ────────────────────────────────────────────────────────
struct TaxConfig {
uint256 burnBps;
uint256 liquidityBps;
uint256 rewardsBps;
uint256 marketingBps;
}
TaxConfig public buyTax;
TaxConfig public sellTax;
// ── Swap Threshold ────────────────────────────────────────────────────────
uint256 public swapTokensAtAmount;
// ── Mappings ──────────────────────────────────────────────────────────────
mapping(address => bool) public isExcludedFromFees;
mapping(address => bool) public isExcludedFromDividends;
mapping(address => bool) public automatedMarketMakerPairs;
// ── Events ────────────────────────────────────────────────────────────────
event TradingStarted(uint256 blockNumber);
event ExcludeFromFees(address indexed account, bool excluded);
event ExcludeFromDividends(address indexed account, bool excluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool value);
event MarketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
event RewardTokenUpdated(address indexed newToken, address indexed oldToken);
event BuyTaxUpdated(uint256 burn, uint256 liquidity, uint256 rewards, uint256 marketing);
event SellTaxUpdated(uint256 burn, uint256 liquidity, uint256 rewards, uint256 marketing);
event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);
event SniperTaxToLiquidity(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensAdded);
event RewardsSent(uint256 ethAmount);
event SwapThresholdUpdated(uint256 newAmount);
event DistributorGasUpdated(uint256 newGas);
event ManualClaim(address indexed shareholder);
// ─────────────────────────────────────────────────────────────────────────
// Constructor
// ─────────────────────────────────────────────────────────────────────────
bool public initialized;
constructor(
address _marketingWallet,
address _rewardToken
) ERC20("High As A Giraffe's Ass", "HAAGA") Ownable(msg.sender) {
require(_marketingWallet != address(0), "HAAGA: marketing wallet is zero");
require(_rewardToken != address(0), "HAAGA: reward token is zero");
marketingWallet = _marketingWallet;
rewardToken = _rewardToken;
// Default taxes: 7% buy / 7% sell (all in basis points)
// Buy: 1% burn, 2% LP, 2% rewards, 2% marketing
buyTax = TaxConfig(100, 200, 200, 200);
// Sell: 1% burn, 2% LP, 2% rewards, 2% marketing
sellTax = TaxConfig(100, 200, 200, 200);
// Swap threshold: 0.05% of total supply
swapTokensAtAmount = TOTAL_SUPPLY * 5 / 10_000;
// Exclusions (pair added in initialize)
_excludeFromFees(msg.sender, true);
_excludeFromFees(address(this), true);
_excludeFromFees(_marketingWallet, true);
_excludeFromFees(DEAD_ADDRESS, true);
_mint(msg.sender, TOTAL_SUPPLY);
}
/// @notice Must be called once after deployment to set up the DEX pair and dividend distributor.
/// @dev Separated from constructor to avoid createPair revert on some EVM chains.
function initialize() external onlyOwner {
require(!initialized, "HAAGA: already initialized");
initialized = true;
// Set up DEX router and create HAAGA/WETH pair
uniswapV2Router = IUniswapV2Router02(UNISWAP_V2_ROUTER);
uniswapV2Pair = IUniswapV2Factory(UNISWAP_V2_FACTORY)
.createPair(address(this), uniswapV2Router.WETH());
_setAutomatedMarketMakerPair(uniswapV2Pair, true);
// Deploy dividend distributor
dividendDistributor = new DividendDistributor(UNISWAP_V2_ROUTER);
dividendDistributor.setRewardToken(rewardToken);
// Exclude distributor, router, and pair from dividends
_excludeFromDividends(msg.sender, true);
_excludeFromDividends(address(this), true);
_excludeFromDividends(address(dividendDistributor), true);
_excludeFromDividends(UNISWAP_V2_ROUTER, true);
_excludeFromDividends(uniswapV2Pair, true);
_excludeFromDividends(DEAD_ADDRESS, true);
}
receive() external payable {}
// ─────────────────────────────────────────────────────────────────────────
// Owner: Trading Control
// ─────────────────────────────────────────────────────────────────────────
/// @notice Activates trading. Once called, the anti-sniper 200-block period begins.
function startTrading() external onlyOwner {
require(!tradingActive, "HAAGA: trading already active");
tradingActive = true;
startBlock = block.number;
emit TradingStarted(block.number);
}
// ─────────────────────────────────────────────────────────────────────────
// Owner: Tax Setters
// ─────────────────────────────────────────────────────────────────────────
/// @notice Update buy-side taxes. All values in basis points (100 = 1%).
function setBuyTax(
uint256 _burnBps,
uint256 _liquidityBps,
uint256 _rewardsBps,
uint256 _marketingBps
) external onlyOwner {
uint256 total = _burnBps + _liquidityBps + _rewardsBps + _marketingBps;
require(total <= MAX_TAX_BPS, "HAAGA: buy tax exceeds 25%");
buyTax = TaxConfig(_burnBps, _liquidityBps, _rewardsBps, _marketingBps);
emit BuyTaxUpdated(_burnBps, _liquidityBps, _rewardsBps, _marketingBps);
}
/// @notice Update sell-side taxes. All values in basis points (100 = 1%).
function setSellTax(
uint256 _burnBps,
uint256 _liquidityBps,
uint256 _rewardsBps,
uint256 _marketingBps
) external onlyOwner {
uint256 total = _burnBps + _liquidityBps + _rewardsBps + _marketingBps;
require(total <= MAX_TAX_BPS, "HAAGA: sell tax exceeds 25%");
sellTax = TaxConfig(_burnBps, _liquidityBps, _rewardsBps, _marketingBps);
emit SellTaxUpdated(_burnBps, _liquidityBps, _rewardsBps, _marketingBps);
}
// ─────────────────────────────────────────────────────────────────────────
// Owner: Wallet & Token Setters
// ─────────────────────────────────────────────────────────────────────────
function setMarketingWallet(address _newWallet) external onlyOwner {
require(_newWallet != address(0), "HAAGA: zero address");
address old = marketingWallet;
marketingWallet = _newWallet;
_excludeFromFees(_newWallet, true);
emit MarketingWalletUpdated(_newWallet, old);
}
function setRewardToken(address _newRewardToken) external onlyOwner {
require(_newRewardToken != address(0), "HAAGA: zero address");
address old = rewardToken;
rewardToken = _newRewardToken;
dividendDistributor.setRewardToken(_newRewardToken);
emit RewardTokenUpdated(_newRewardToken, old);
}
function setSwapTokensAtAmount(uint256 _amount) external onlyOwner {
require(_amount >= TOTAL_SUPPLY / 100_000, "HAAGA: swap threshold too low");
require(_amount <= TOTAL_SUPPLY / 100, "HAAGA: swap threshold too high");
swapTokensAtAmount = _amount;
emit SwapThresholdUpdated(_amount);
}
function setDistributorGas(uint256 _gas) external onlyOwner {
require(_gas >= 200_000 && _gas <= 1_000_000, "HAAGA: gas out of range");
distributorGas = _gas;
emit DistributorGasUpdated(_gas);
}
function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external onlyOwner {
dividendDistributor.setDistributionCriteria(_minPeriod, _minDistribution);
}
function setExcludeFromFees(address _account, bool _excluded) external onlyOwner {
_excludeFromFees(_account, _excluded);
}
function setExcludeFromDividends(address _account, bool _excluded) external onlyOwner {
_excludeFromDividends(_account, _excluded);
}
function setAutomatedMarketMakerPair(address _pair, bool _value) external onlyOwner {
require(_pair != uniswapV2Pair, "HAAGA: cannot remove primary pair");
_setAutomatedMarketMakerPair(_pair, _value);
}
// ─────────────────────────────────────────────────────────────────────────
// Owner: Emergency Functions
// ─────────────────────────────────────────────────────────────────────────
/// @notice Rescue ETH accidentally sent to the contract.
function rescueETH(uint256 _amount) external onlyOwner {
require(address(this).balance >= _amount, "HAAGA: insufficient ETH");
payable(owner()).transfer(_amount);
}
/// @notice Rescue ERC20 tokens accidentally sent to the contract (not HAAGA itself).
function rescueERC20(address _token, uint256 _amount) external onlyOwner {
require(_token != address(this), "HAAGA: cannot rescue HAAGA");
IERC20(_token).transfer(owner(), _amount);
}
// ─────────────────────────────────────────────────────────────────────────
// Public: Manual Reward Claim
// ─────────────────────────────────────────────────────────────────────────
/// @notice Allows any holder to manually trigger their pending reward claim.
function claimRewards() external {
dividendDistributor.claimDividend(msg.sender);
emit ManualClaim(msg.sender);
}
// ─────────────────────────────────────────────────────────────────────────
// Getters
// ─────────────────────────────────────────────────────────────────────────
function getBuyTax() external view returns (
uint256 burnBps,
uint256 liquidityBps,
uint256 rewardsBps,
uint256 marketingBps,
uint256 totalBps
) {
burnBps = buyTax.burnBps;
liquidityBps = buyTax.liquidityBps;
rewardsBps = buyTax.rewardsBps;
marketingBps = buyTax.marketingBps;
totalBps = burnBps + liquidityBps + rewardsBps + marketingBps;
}
function getSellTax() external view returns (
uint256 burnBps,
uint256 liquidityBps,
uint256 rewardsBps,
uint256 marketingBps,
uint256 totalBps
) {
burnBps = sellTax.burnBps;
liquidityBps = sellTax.liquidityBps;
rewardsBps = sellTax.rewardsBps;
marketingBps = sellTax.marketingBps;
totalBps = burnBps + liquidityBps + rewardsBps + marketingBps;
}
function getUnpaidRewards(address _account) external view returns (uint256) {
return dividendDistributor.getUnpaidEarnings(_account);
}
function getTotalRewardsDistributed() external view returns (uint256) {
return dividendDistributor.getTotalDistributed();
}
function getShareholderInfo(address _account) external view returns (
uint256 shareAmount,
uint256 totalRealised,
uint256 unpaidRewards
) {
return dividendDistributor.getShareholderInfo(_account);
}
function isInSniperPeriod() external view returns (bool) {
if (!tradingActive) return false;
return block.number <= startBlock + SNIPER_BLOCKS;
}
function blocksUntilSniperPeriodEnds() external view returns (uint256) {
if (!tradingActive) return SNIPER_BLOCKS;
if (block.number > startBlock + SNIPER_BLOCKS) return 0;
return (startBlock + SNIPER_BLOCKS) - block.number;
}
function getDividendDistributorAddress() external view returns (address) {
return address(dividendDistributor);
}
function getShareholderCount() external view returns (uint256) {
return dividendDistributor.getShareholderCount();
}
// ─────────────────────────────────────────────────────────────────────────
// Internal: Transfer Override
// ─────────────────────────────────────────────────────────────────────────
function _update(
address from,
address to,
uint256 amount
) internal override {
if (amount == 0) {
super._update(from, to, 0);
return;
}
bool isBuy = automatedMarketMakerPairs[from];
bool isSell = automatedMarketMakerPairs[to];
// Block transfers until trading is active (except owner)
if (!tradingActive && from != owner() && to != owner()) {
revert("HAAGA: trading not yet active");
}
// Swap-back: convert accumulated contract tokens to ETH and distribute
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= swapTokensAtAmount;
if (
canSwap &&
!_swapping &&
!automatedMarketMakerPairs[from] &&
from != owner() &&
to != owner()
) {
_swapping = true;
_swapAndDistribute(contractTokenBalance);
_swapping = false;
}
// Determine whether to apply fees
bool takeFee = !_swapping;
if (isExcludedFromFees[from] || isExcludedFromFees[to]) {
takeFee = false;
}
uint256 fees = 0;
if (takeFee && (isBuy || isSell)) {
if (block.number <= startBlock + SNIPER_BLOCKS) {
// ── Sniper Period: 30% flat tax → all to LP ──────────────────
fees = (amount * SNIPER_TAX_BPS) / 10_000;
super._update(from, address(this), fees);
} else {
// ── Normal Tax Period ────────────────────────────────────────
TaxConfig memory tax = isBuy ? buyTax : sellTax;
uint256 totalBps = tax.burnBps + tax.liquidityBps + tax.rewardsBps + tax.marketingBps;
if (totalBps > 0) {
fees = (amount * totalBps) / 10_000;
// Burn portion goes directly to dead address
if (tax.burnBps > 0) {
uint256 burnAmt = (fees * tax.burnBps) / totalBps;
super._update(from, DEAD_ADDRESS, burnAmt);
fees -= burnAmt;
}
// Remaining fees (LP + rewards + marketing) stay in contract
if (fees > 0) {
super._update(from, address(this), fees);
}
}
}
}
// Transfer net amount to recipient
super._update(from, to, amount - fees);
// Update dividend shares (only when distributor is deployed)
if (address(dividendDistributor) != address(0)) {
if (from != address(0) && !isExcludedFromDividends[from]) {
try dividendDistributor.setShare(from, balanceOf(from)) {} catch {}
}
if (to != address(0) && !isExcludedFromDividends[to]) {
try dividendDistributor.setShare(to, balanceOf(to)) {} catch {}
}
// Process pending dividend distributions
if (takeFee && !_swapping) {
try dividendDistributor.process(distributorGas) {} catch {}
}
}
}
// ─────────────────────────────────────────────────────────────────────────
// Internal: Swap & Distribute
// ─────────────────────────────────────────────────────────────────────────
function _swapAndDistribute(uint256 tokens) private {
// During sniper period, all accumulated tokens go to LP
if (tradingActive && block.number <= startBlock + SNIPER_BLOCKS) {
_swapAndLiquifySniper(tokens);
return;
}
uint256 totalBps = buyTax.liquidityBps + buyTax.rewardsBps + buyTax.marketingBps;
if (totalBps == 0) return;
// Split: half of LP allocation stays as tokens, rest is swapped for ETH
uint256 lpTokenHalf = (tokens * buyTax.liquidityBps) / totalBps / 2;
uint256 tokensToSwap = tokens - lpTokenHalf;
uint256 ethBefore = address(this).balance;
_swapTokensForETH(tokensToSwap);
uint256 ethGained = address(this).balance - ethBefore;
// Proportional ETH allocation
uint256 ethForLP = (ethGained * buyTax.liquidityBps) / (totalBps * 2);
uint256 ethForMarketing = (ethGained * buyTax.marketingBps) / totalBps;
uint256 ethForRewards = ethGained - ethForLP - ethForMarketing;
// Add liquidity
if (lpTokenHalf > 0 && ethForLP > 0) {
_addLiquidity(lpTokenHalf, ethForLP);
emit SwapAndLiquify(lpTokenHalf, ethForLP, lpTokenHalf);
}
// Send to marketing
if (ethForMarketing > 0) {
(bool sent, ) = payable(marketingWallet).call{value: ethForMarketing}("");
require(sent, "HAAGA: marketing transfer failed");
}
// Deposit to dividend distributor for reward token purchase & distribution
if (ethForRewards > 0) {
try dividendDistributor.deposit{value: ethForRewards}() {
emit RewardsSent(ethForRewards);
} catch {}
}
}
function _swapAndLiquifySniper(uint256 tokens) private {
uint256 half = tokens / 2;
uint256 otherHalf = tokens - half;
uint256 ethBefore = address(this).balance;
_swapTokensForETH(half);
uint256 ethGained = address(this).balance - ethBefore;
if (otherHalf > 0 && ethGained > 0) {
_addLiquidity(otherHalf, ethGained);
emit SniperTaxToLiquidity(half, ethGained, otherHalf);
}
}
function _swapTokensForETH(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
}
function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0,
0,
owner(),
block.timestamp
);
}
// ─────────────────────────────────────────────────────────────────────────
// Internal: Exclusion Helpers
// ─────────────────────────────────────────────────────────────────────────
function _excludeFromFees(address account, bool excluded) private {
isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function _excludeFromDividends(address account, bool excluded) private {
isExcludedFromDividends[account] = excluded;
if (address(dividendDistributor) != address(0)) {
if (excluded) {
dividendDistributor.setShare(account, 0);
} else {
dividendDistributor.setShare(account, balanceOf(account));
}
}
emit ExcludeFromDividends(account, excluded);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
automatedMarketMakerPairs[pair] = value;
if (value) {
_excludeFromDividends(pair, true);
}
emit SetAutomatedMarketMakerPair(pair, value);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "_marketingWallet",
"type": "address",
"internalType": "address"
},
{
"name": "_rewardToken",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "Approval",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "BuyTaxUpdated",
"type": "event",
"inputs": [
{
"name": "burn",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "liquidity",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "rewards",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "marketing",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "DistributorGasUpdated",
"type": "event",
"inputs": [
{
"name": "newGas",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ExcludeFromDividends",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "excluded",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "ExcludeFromFees",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "excluded",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "ManualClaim",
"type": "event",
"inputs": [
{
"name": "shareholder",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "MarketingWalletUpdated",
"type": "event",
"inputs": [
{
"name": "newWallet",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "oldWallet",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "RewardTokenUpdated",
"type": "event",
"inputs": [
{
"name": "newToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "oldToken",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "RewardsSent",
"type": "event",
"inputs": [
{
"name": "ethAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "SellTaxUpdated",
"type": "event",
"inputs": [
{
"name": "burn",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "liquidity",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "rewards",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "marketing",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "SetAutomatedMarketMakerPair",
"type": "event",
"inputs": [
{
"name": "pair",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "SniperTaxToLiquidity",
"type": "event",
"inputs": [
{
"name": "tokensSwapped",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "ethReceived",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokensAdded",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "SwapAndLiquify",
"type": "event",
"inputs": [
{
"name": "tokensSwapped",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "ethReceived",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokensIntoLiquidity",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "SwapThresholdUpdated",
"type": "event",
"inputs": [
{
"name": "newAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "TradingStarted",
"type": "event",
"inputs": [
{
"name": "blockNumber",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Transfer",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "DEAD_ADDRESS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "MAX_TAX_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "SNIPER_BLOCKS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "SNIPER_TAX_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "TOTAL_SUPPLY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "UNISWAP_V2_FACTORY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "UNISWAP_V2_ROUTER",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "allowance",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "approve",
"type": "function",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "automatedMarketMakerPairs",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "balanceOf",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "blocksUntilSniperPeriodEnds",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "buyTax",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "burnBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "liquidityBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "rewardsBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "marketingBps",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "claimRewards",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "distributorGas",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "dividendDistributor",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract DividendDistributor"
}
],
"stateMutability": "view"
},
{
"name": "getBuyTax",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "burnBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "liquidityBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "rewardsBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "marketingBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "totalBps",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getDividendDistributorAddress",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "getSellTax",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "burnBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "liquidityBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "rewardsBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "marketingBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "totalBps",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getShareholderCount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getShareholderInfo",
"type": "function",
"inputs": [
{
"name": "_account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "shareAmount",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "totalRealised",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "unpaidRewards",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getTotalRewardsDistributed",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getUnpaidRewards",
"type": "function",
"inputs": [
{
"name": "_account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "initialize",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "initialized",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "isExcludedFromDividends",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "isExcludedFromFees",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "isInSniperPeriod",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "marketingWallet",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "name",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "rescueERC20",
"type": "function",
"inputs": [
{
"name": "_token",
"type": "address",
"internalType": "address"
},
{
"name": "_amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "rescueETH",
"type": "function",
"inputs": [
{
"name": "_amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "rewardToken",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "sellTax",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "burnBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "liquidityBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "rewardsBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "marketingBps",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "setAutomatedMarketMakerPair",
"type": "function",
"inputs": [
{
"name": "_pair",
"type": "address",
"internalType": "address"
},
{
"name": "_value",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setBuyTax",
"type": "function",
"inputs": [
{
"name": "_burnBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_liquidityBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_rewardsBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_marketingBps",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setDistributionCriteria",
"type": "function",
"inputs": [
{
"name": "_minPeriod",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_minDistribution",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setDistributorGas",
"type": "function",
"inputs": [
{
"name": "_gas",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setExcludeFromDividends",
"type": "function",
"inputs": [
{
"name": "_account",
"type": "address",
"internalType": "address"
},
{
"name": "_excluded",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setExcludeFromFees",
"type": "function",
"inputs": [
{
"name": "_account",
"type": "address",
"internalType": "address"
},
{
"name": "_excluded",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMarketingWallet",
"type": "function",
"inputs": [
{
"name": "_newWallet",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setRewardToken",
"type": "function",
"inputs": [
{
"name": "_newRewardToken",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setSellTax",
"type": "function",
"inputs": [
{
"name": "_burnBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_liquidityBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_rewardsBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_marketingBps",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setSwapTokensAtAmount",
"type": "function",
"inputs": [
{
"name": "_amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "startBlock",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "startTrading",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "swapTokensAtAmount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "totalSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "tradingActive",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "transfer",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "transferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "uniswapV2Pair",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "uniswapV2Router",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IUniswapV2Router02"
}
],
"stateMutability": "view"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x60806040526207a120600a553480156200001857600080fd5b5060405162005a0238038062005a028339810160408190526200003b91620011fc565b336040518060400160405280601781526020017f486967682041732041204769726166666527732041737300000000000000000081525060405180604001604052806005815260200164484141474160d81b8152508160039081620000a19190620012d0565b506004620000b08282620012d0565b5050506001600160a01b0381166200011a5760405162461bcd60e51b815260206004820152602260248201527f4f776e61626c653a206f776e657220697320746865207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b6200012581620002ed565b506001600160a01b0382166200017e5760405162461bcd60e51b815260206004820152601f60248201527f48414147413a206d61726b6574696e672077616c6c6574206973207a65726f00604482015260640162000111565b6001600160a01b038116620001d65760405162461bcd60e51b815260206004820152601b60248201527f48414147413a2072657761726420746f6b656e206973207a65726f0000000000604482015260640162000111565b600b80546001600160a01b038085166001600160a01b03199283161790925560098054928416929091169190911790556040805160808082018352606480835260c860208085018290528486018290526060948501829052600e839055600f82905560108290556011829055855193840186528284528301819052938201849052910182905260125560138190556014819055601555612710620002886b015b6a759f4835dc240000006005620013b2565b620002949190620013d2565b601655620002a43360016200033f565b620002b13060016200033f565b620002be8260016200033f565b620002cd61dead60016200033f565b620002e5336b015b6a759f4835dc240000006200039e565b5050620014fe565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620003f65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000111565b620004046000838362000408565b5050565b8060000362000424576200041f8383600062000987565b505050565b6001600160a01b03808416600090815260196020526040808220549285168252902054600d5460ff9283169291821691161580156200047157506005546001600160a01b03868116911614155b80156200048c57506005546001600160a01b03858116911614155b15620004db5760405162461bcd60e51b815260206004820152601d60248201527f48414147413a2074726164696e67206e6f742079657420616374697665000000604482015260640162000111565b3060009081526020819052604090205460165481108015908190620005085750600d54610100900460ff16155b80156200052e57506001600160a01b03871660009081526019602052604090205460ff16155b80156200054957506005546001600160a01b03888116911614155b80156200056457506005546001600160a01b03878116911614155b156200059057600d805461ff001916610100179055620005848262000adf565b600d805461ff00191690555b600d546001600160a01b03881660009081526017602052604090205460ff610100909204821615911680620005dd57506001600160a01b03871660009081526017602052604090205460ff165b15620005e7575060005b6000818015620005fc57508580620005fc5750845b15620007445760c8600c54620006139190620013f5565b43116200064c576127106200062b610bb889620013b2565b620006379190620013d2565b90506200064689308362000987565b62000744565b6000866200065c5760126200065f565b600e5b604080516080810182528254808252600184015460208301819052600285015493830184905260039094015460608301819052919450600093919291620006a691620013f5565b620006b29190620013f5565b620006be9190620013f5565b905080156200074157612710620006d6828b620013b2565b620006e29190620013d2565b8251909350156200072d5781516000908290620007009086620013b2565b6200070c9190620013d2565b90506200071d8c61dead8362000987565b6200072981856200140b565b9350505b82156200074157620007418b308562000987565b50505b6200075c898962000756848b6200140b565b62000987565b6008546001600160a01b0316156200097c576001600160a01b03891615801590620007a057506001600160a01b03891660009081526018602052604090205460ff16155b1562000833576008546001600160a01b03166314b6ca968a620007d8816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156200081f57600080fd5b505af192505050801562000831575060015b505b6001600160a01b038816158015906200086557506001600160a01b03881660009081526018602052604090205460ff16155b15620008f8576008546001600160a01b03166314b6ca96896200089d816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015620008e457600080fd5b505af1925050508015620008f6575060015b505b8180156200090e5750600d54610100900460ff16155b156200097c57600854600a546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916200094d9160040190815260200190565b600060405180830381600087803b1580156200096857600080fd5b505af19250505080156200097a575060015b505b505050505050505050565b6001600160a01b038316620009b6578060026000828254620009aa9190620013f5565b9091555062000a4f9050565b6001600160a01b0383166000908152602081905260409020548181101562000a305760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162000111565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821662000a6d5760028054829003905562000a8c565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ad291815260200190565b60405180910390a3505050565b600d5460ff16801562000b02575060c8600c5462000afe9190620013f5565b4311155b1562000b165762000b138162000dd8565b50565b601154601054600f546000929162000b2e91620013f5565b62000b3a9190620013f5565b90508060000362000b49575050565b6000600282600e600101548562000b619190620013b2565b62000b6d9190620013d2565b62000b799190620013d2565b9050600062000b8982856200140b565b90504762000b978262000e81565b600062000ba582476200140b565b9050600062000bb6866002620013b2565b600f5462000bc59084620013b2565b62000bd19190620013d2565b9050600086600e600301548462000be99190620013b2565b62000bf59190620013d2565b905060008162000c0684866200140b565b62000c1291906200140b565b905060008711801562000c255750600083115b1562000c795762000c37878462000fea565b60408051888152602081018590529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b811562000d2957600b546040516000916001600160a01b03169084908381818185875af1925050503d806000811462000ccf576040519150601f19603f3d011682016040523d82523d6000602084013e62000cd4565b606091505b505090508062000d275760405162461bcd60e51b815260206004820181905260248201527f48414147413a206d61726b6574696e67207472616e73666572206661696c6564604482015260640162000111565b505b80156200097c57600860009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801562000d8157600080fd5b505af19350505050801562000d94575060015b156200097c576040518181527f1e8f03f716bc104bf7d728131967a0c771e85ab54d09c1e2d6ed9e0bc4e2a16c9060200160405180910390a1505050505050505050565b600062000de7600283620013d2565b9050600062000df782846200140b565b90504762000e058362000e81565b600062000e1382476200140b565b905060008311801562000e265750600081115b1562000e7a5762000e38838262000fea565b60408051858152602081018390529081018490527fdb62547f143ec41f5bd7b7adb968138aa43534b9b89ad72b785aa650410edf769060600160405180910390a15b5050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811062000eb95762000eb962001421565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562000f13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f39919062001437565b8160018151811062000f4f5762000f4f62001421565b6001600160a01b03928316602091820292909201015260065462000f779130911684620010be565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479062000fb29085906000908690309042906004016200145c565b600060405180830381600087803b15801562000fcd57600080fd5b505af115801562000fe2573d6000803e3d6000fd5b505050505050565b600654620010049030906001600160a01b031684620010be565b6006546001600160a01b031663f305d7198230856000806200102e6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801562001097573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062000e7a9190620014cf565b6001600160a01b038316620011225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000111565b6001600160a01b038216620011855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000111565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910162000ad2565b80516001600160a01b0381168114620011f757600080fd5b919050565b600080604083850312156200121057600080fd5b6200121b83620011df565b91506200122b60208401620011df565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200125f57607f821691505b6020821081036200128057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200041f57600081815260208120601f850160051c81016020861015620012af5750805b601f850160051c820191505b8181101562000fe257828155600101620012bb565b81516001600160401b03811115620012ec57620012ec62001234565b6200130481620012fd84546200124a565b8462001286565b602080601f8311600181146200133c5760008415620013235750858301515b600019600386901b1c1916600185901b17855562000fe2565b600085815260208120601f198616915b828110156200136d578886015182559484019460019091019084016200134c565b50858210156200138c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620013cc57620013cc6200139c565b92915050565b600082620013f057634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620013cc57620013cc6200139c565b81810381811115620013cc57620013cc6200139c565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156200144a57600080fd5b6200145582620011df565b9392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015620014ae5784516001600160a01b03168352938301939183019160010162001487565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215620014e557600080fd5b8351925060208401519150604084015190509250925092565b6144f4806200150e6000396000f3fe608060405260043610620003cf5760003560e01c80638aee812711620001f7578063b62496f51162000117578063d63cad2211620000ad578063e2f456051162000078578063e2f456051462000bb1578063e7c52d441462000bc9578063f2fde38b1462000be1578063f7c618c11462000c0657600080fd5b8063d63cad221462000b13578063dd62ed3e1462000b38578063dd72f6a61462000b82578063dd7e85231462000b9a57600080fd5b8063c705c56911620000ee578063c705c5691462000a7d578063c92eeca71462000ab1578063cc1776d31462000ad6578063d04687d31462000afb57600080fd5b8063b62496f51462000a0b578063bad3ea6a1462000a3f578063bbc0c7421462000a6157600080fd5b80639e252f00116200018d578063a9059cbb1162000164578063a9059cbb1462000984578063aada9c3814620009a9578063afa4f3b214620009ce578063b0bc85de14620009f357600080fd5b80639e252f001462000910578063a82cfe8b1462000935578063a82ed9ec146200095a57600080fd5b8063902d55a511620001ce578063902d55a5146200088757806395d89b4114620008a957806399d8fae314620008c15780639a7a23d614620008eb57600080fd5b80638aee8127146200081d5780638cd4426d14620008425780638da5cb5b146200086757600080fd5b806348cd4cb111620002ef57806360e71962116200028557806375f0a874116200025057806375f0a87414620007a65780638129fc1c14620007c857806384666b0814620007e0578063860f53df146200080557600080fd5b806360e71962146200071c57806370a082311462000734578063715018a6146200076e5780637262f56f146200078657600080fd5b80634f7041a511620002c65780634f7041a5146200063c5780634fbee19314620006825780635d098b3814620006b65780635e6056bb14620006db57600080fd5b806348cd4cb114620005ea57806349bd5a5e14620006025780634e6fd6c4146200062457600080fd5b8063244ce7db11620003655780632c597de9116200033c5780632c597de914620005775780632d48e896146200058f578063313ce56714620005b4578063372500ab14620005d257600080fd5b8063244ce7db14620004f7578063252d723a146200051e578063293230b8146200055f57600080fd5b8063158ef93e11620003a6578063158ef93e14620004645780631694505e146200048057806318160ddd14620004bb57806323b872dd14620004d257600080fd5b80630497288114620003dc57806306fdde031462000407578063095ea7b3146200042e57600080fd5b36620003d757005b600080fd5b348015620003e957600080fd5b50620003f462000c28565b6040519081526020015b60405180910390f35b3480156200041457600080fd5b506200041f62000c9e565b604051620003fe919062002ee7565b3480156200043b57600080fd5b50620004536200044d36600462002f4d565b62000d38565b6040519015158152602001620003fe565b3480156200047157600080fd5b50601a54620004539060ff1681565b3480156200048d57600080fd5b50600654620004a2906001600160a01b031681565b6040516001600160a01b039091168152602001620003fe565b348015620004c857600080fd5b50600254620003f4565b348015620004df57600080fd5b5062000453620004f136600462002f7c565b62000d54565b3480156200050457600080fd5b506200051c6200051636600462002fc2565b62000d7c565b005b3480156200052b57600080fd5b506200053662000e2b565b604080519586526020860194909452928401919091526060830152608082015260a001620003fe565b3480156200056c57600080fd5b506200051c62000e68565b3480156200058457600080fd5b50620003f46109c481565b3480156200059c57600080fd5b506200051c620005ae36600462002fdc565b62000f17565b348015620005c157600080fd5b5060405160128152602001620003fe565b348015620005df57600080fd5b506200051c62000f8d565b348015620005f757600080fd5b50620003f4600c5481565b3480156200060f57600080fd5b50600754620004a2906001600160a01b031681565b3480156200063157600080fd5b50620004a261dead81565b3480156200064957600080fd5b50600e54600f54601054601154620006619392919084565b604080519485526020850193909352918301526060820152608001620003fe565b3480156200068f57600080fd5b5062000453620006a136600462002fff565b60176020526000908152604090205460ff1681565b348015620006c357600080fd5b506200051c620006d536600462002fff565b62001019565b348015620006e857600080fd5b5062000700620006fa36600462002fff565b620010e1565b60408051938452602084019290925290820152606001620003fe565b3480156200072957600080fd5b50620003f4600a5481565b3480156200074157600080fd5b50620003f46200075336600462002fff565b6001600160a01b031660009081526020819052604090205490565b3480156200077b57600080fd5b506200051c62001166565b3480156200079357600080fd5b506008546001600160a01b0316620004a2565b348015620007b357600080fd5b50600b54620004a2906001600160a01b031681565b348015620007d557600080fd5b506200051c6200117e565b348015620007ed57600080fd5b506200051c620007ff36600462003026565b62001474565b3480156200081257600080fd5b50620004536200157e565b3480156200082a57600080fd5b506200051c6200083c36600462002fff565b620015ab565b3480156200084f57600080fd5b506200051c6200086136600462002f4d565b620016ba565b3480156200087457600080fd5b506005546001600160a01b0316620004a2565b3480156200089457600080fd5b50620003f46b015b6a759f4835dc2400000081565b348015620008b657600080fd5b506200041f620017b9565b348015620008ce57600080fd5b50620004a2738bceaa40b9acdfaedf85adf4ff01f5ad6517937f81565b348015620008f857600080fd5b506200051c6200090a36600462003068565b620017ca565b3480156200091d57600080fd5b506200051c6200092f36600462002fc2565b6200184e565b3480156200094257600080fd5b506200051c6200095436600462003026565b620018e5565b3480156200096757600080fd5b50620004a27389e5db8b5aa49aa85ac63f691524311aeb649eba81565b3480156200099157600080fd5b5062000453620009a336600462002f4d565b620019e5565b348015620009b657600080fd5b50620003f4620009c836600462002fff565b620019f5565b348015620009db57600080fd5b506200051c620009ed36600462002fc2565b62001a67565b34801562000a0057600080fd5b506200053662001b7d565b34801562000a1857600080fd5b506200045362000a2a36600462002fff565b60196020526000908152604090205460ff1681565b34801562000a4c57600080fd5b50600854620004a2906001600160a01b031681565b34801562000a6e57600080fd5b50600d54620004539060ff1681565b34801562000a8a57600080fd5b506200045362000a9c36600462002fff565b60186020526000908152604090205460ff1681565b34801562000abe57600080fd5b506200051c62000ad036600462003068565b62001b99565b34801562000ae357600080fd5b50601254601354601454601554620006619392919084565b34801562000b0857600080fd5b50620003f4610bb881565b34801562000b2057600080fd5b506200051c62000b3236600462003068565b62001baf565b34801562000b4557600080fd5b50620003f462000b57366004620030a6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801562000b8f57600080fd5b50620003f462001bc5565b34801562000ba757600080fd5b50620003f460c881565b34801562000bbe57600080fd5b50620003f460165481565b34801562000bd657600080fd5b50620003f462001c16565b34801562000bee57600080fd5b506200051c62000c0036600462002fff565b62001c61565b34801562000c1357600080fd5b50600954620004a2906001600160a01b031681565b60085460408051630497288160e01b815290516000926001600160a01b03169163049728819160048083019260209291908290030181865afa15801562000c73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c999190620030d9565b905090565b60606003805462000caf90620030f3565b80601f016020809104026020016040519081016040528092919081815260200182805462000cdd90620030f3565b801562000d2e5780601f1062000d025761010080835404028352916020019162000d2e565b820191906000526020600020905b81548152906001019060200180831162000d1057829003601f168201915b5050505050905090565b60003362000d4881858562001ce0565b60019150505b92915050565b60003362000d6485828562001e09565b62000d7185858562001ea0565b506001949350505050565b62000d8662001f77565b62030d40811015801562000d9d5750620f42408111155b62000def5760405162461bcd60e51b815260206004820152601760248201527f48414147413a20676173206f7574206f662072616e676500000000000000000060448201526064015b60405180910390fd5b600a8190556040518181527f5f0cf7d11c1aaf2b53b91892382eaee789338051f9fcecf528ca006d062bfba8906020015b60405180910390a150565b600e54600f546010546011546000818362000e47868862003145565b62000e53919062003145565b62000e5f919062003145565b90509091929394565b62000e7262001f77565b600d5460ff161562000ec75760405162461bcd60e51b815260206004820152601d60248201527f48414147413a2074726164696e6720616c726561647920616374697665000000604482015260640162000de6565b600d805460ff1916600117905543600c8190556040517f681fd8281014ec159aeba3c383293bbbc3db4d68f2c74f894d9f46a401f73fe49162000f0d9190815260200190565b60405180910390a1565b62000f2162001f77565b6008546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801562000f7057600080fd5b505af115801562000f85573d6000803e3d6000fd5b505050505050565b600854604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801562000fd357600080fd5b505af115801562000fe8573d6000803e3d6000fd5b50506040513392507fed7f50f936a5ed7428d20f18e78d6dfe8bc37fd2f4e3cdb348327c76972449289150600090a2565b6200102362001f77565b6001600160a01b038116620010715760405162461bcd60e51b815260206004820152601360248201527248414147413a207a65726f206164647265737360681b604482015260640162000de6565b600b80546001600160a01b038381166001600160a01b0319831617909255166200109d82600162001fd3565b806001600160a01b0316826001600160a01b03167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a35050565b600854604051635e6056bb60e01b81526001600160a01b0383811660048301526000928392839290911690635e6056bb90602401606060405180830381865afa15801562001133573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200115991906200315b565b9250925092509193909250565b6200117062001f77565b6200117c600062002033565b565b6200118862001f77565b601a5460ff1615620011dd5760405162461bcd60e51b815260206004820152601a60248201527f48414147413a20616c726561647920696e697469616c697a6564000000000000604482015260640162000de6565b601a805460ff19166001179055600680546001600160a01b0319167389e5db8b5aa49aa85ac63f691524311aeb649eba908117909155604080516315ab88c960e31b81529051738bceaa40b9acdfaedf85adf4ff01f5ad6517937f9263c9c6539692309263ad5c4648916004808201926020929091908290030181865afa1580156200126d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200129391906200318a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620012e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200130791906200318a565b600780546001600160a01b0319166001600160a01b039290921691821790556200133390600162002085565b7389e5db8b5aa49aa85ac63f691524311aeb649eba604051620013569062002ed9565b6001600160a01b039091168152602001604051809103906000f08015801562001383573d6000803e3d6000fd5b50600880546001600160a01b0319166001600160a01b03928316908117909155600954604051638aee812760e01b81529216600483015290638aee812790602401600060405180830381600087803b158015620013df57600080fd5b505af1158015620013f4573d6000803e3d6000fd5b5050505062001405336001620020fe565b62001412306001620020fe565b6008546200142b906001600160a01b03166001620020fe565b6200144c7389e5db8b5aa49aa85ac63f691524311aeb649eba6001620020fe565b60075462001465906001600160a01b03166001620020fe565b6200117c61dead6001620020fe565b6200147e62001f77565b600081836200148e868862003145565b6200149a919062003145565b620014a6919062003145565b90506109c4811115620014fc5760405162461bcd60e51b815260206004820152601b60248201527f48414147413a2073656c6c207461782065786365656473203235250000000000604482015260640162000de6565b604080516080808201835287825260208083018890528284018790526060928301869052601289905560138890556014879055601586905583518981529081018890529283018690529082018490527fa987db89f31df6351bb1ad3d58f4e5ef54e52c1e3389622f2b38adcf43a086ae91015b60405180910390a15050505050565b600d5460009060ff16620015925750600090565b60c8600c54620015a3919062003145565b431115905090565b620015b562001f77565b6001600160a01b038116620016035760405162461bcd60e51b815260206004820152601360248201527248414147413a207a65726f206164647265737360681b604482015260640162000de6565b600980546001600160a01b038381166001600160a01b031983168117909355600854604051638aee812760e01b8152600481019490945291811692911690638aee812790602401600060405180830381600087803b1580156200166557600080fd5b505af11580156200167a573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507f906ff2422a6ffa134f2d7ccaffd446bc0c583a5cb6615749b4b2836942a5fea890600090a35050565b620016c462001f77565b306001600160a01b038316036200171e5760405162461bcd60e51b815260206004820152601a60248201527f48414147413a2063616e6e6f7420726573637565204841414741000000000000604482015260640162000de6565b816001600160a01b031663a9059cbb620017406005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af11580156200178e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017b49190620031aa565b505050565b60606004805462000caf90620030f3565b620017d462001f77565b6007546001600160a01b03908116908316036200183e5760405162461bcd60e51b815260206004820152602160248201527f48414147413a2063616e6e6f742072656d6f7665207072696d617279207061696044820152603960f91b606482015260840162000de6565b6200184a828262002085565b5050565b6200185862001f77565b80471015620018aa5760405162461bcd60e51b815260206004820152601760248201527f48414147413a20696e73756666696369656e7420455448000000000000000000604482015260640162000de6565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156200184a573d6000803e3d6000fd5b620018ef62001f77565b60008183620018ff868862003145565b6200190b919062003145565b62001917919062003145565b90506109c48111156200196d5760405162461bcd60e51b815260206004820152601a60248201527f48414147413a2062757920746178206578636565647320323525000000000000604482015260640162000de6565b604080516080808201835287825260208083018890528284018790526060928301869052600e899055600f8890556010879055601186905583518981529081018890529283018690529082018490527f39dd28ec6ca271c82451a8ef3e1422d281febc1d63701dd827a8573ed55bd48591016200156f565b60003362000d4881858562001ea0565b60085460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd319890602401602060405180830381865afa15801562001a41573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d4e9190620030d9565b62001a7162001f77565b62001a8c620186a06b015b6a759f4835dc24000000620031ca565b81101562001add5760405162461bcd60e51b815260206004820152601d60248201527f48414147413a2073776170207468726573686f6c6420746f6f206c6f77000000604482015260640162000de6565b62001af660646b015b6a759f4835dc24000000620031ca565b81111562001b475760405162461bcd60e51b815260206004820152601e60248201527f48414147413a2073776170207468726573686f6c6420746f6f20686967680000604482015260640162000de6565b60168190556040518181527f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd064769060200162000e20565b6012546013546014546015546000818362000e47868862003145565b62001ba362001f77565b6200184a8282620020fe565b62001bb962001f77565b6200184a828262001fd3565b600d5460009060ff1662001bd9575060c890565b60c8600c5462001bea919062003145565b43111562001bf85750600090565b4360c8600c5462001c0a919062003145565b62000c999190620031ed565b60085460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa15801562000c73573d6000803e3d6000fd5b62001c6b62001f77565b6001600160a01b03811662001cd25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000de6565b62001cdd8162002033565b50565b6001600160a01b03831662001d445760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000de6565b6001600160a01b03821662001da75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000de6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811462001e9a578181101562001e8b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640162000de6565b62001e9a848484840362001ce0565b50505050565b6001600160a01b03831662001f065760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000de6565b6001600160a01b03821662001f6a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000de6565b620017b483838362002273565b6005546001600160a01b031633146200117c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000de6565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791015b60405180910390a25050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152601960205260409020805460ff19168215801591909117909155620020c057620020c0826001620020fe565b816001600160a01b03167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab8260405162002027911515815260200190565b6001600160a01b038281166000908152601860205260409020805460ff1916831515179055600854161562002235578015620021a257600854604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401600060405180830381600087803b1580156200218357600080fd5b505af115801562002198573d6000803e3d6000fd5b5050505062002235565b6008546001600160a01b03166314b6ca9683620021d4816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156200221b57600080fd5b505af115801562002230573d6000803e3d6000fd5b505050505b816001600160a01b03167fa3c7c11b2e12c4144b09a7813f3393ba646392788638998c97be8da908cf04be8260405162002027911515815260200190565b806000036200228a57620017b483836000620027ed565b6001600160a01b03808416600090815260196020526040808220549285168252902054600d5460ff928316929182169116158015620022d757506005546001600160a01b03868116911614155b8015620022f257506005546001600160a01b03858116911614155b15620023415760405162461bcd60e51b815260206004820152601d60248201527f48414147413a2074726164696e67206e6f742079657420616374697665000000604482015260640162000de6565b30600090815260208190526040902054601654811080159081906200236e5750600d54610100900460ff16155b80156200239457506001600160a01b03871660009081526019602052604090205460ff16155b8015620023af57506005546001600160a01b03888116911614155b8015620023ca57506005546001600160a01b03878116911614155b15620023f657600d805461ff001916610100179055620023ea8262002938565b600d805461ff00191690555b600d546001600160a01b03881660009081526017602052604090205460ff6101009092048216159116806200244357506001600160a01b03871660009081526017602052604090205460ff165b156200244d575060005b60008180156200246257508580620024625750845b15620025aa5760c8600c5462002479919062003145565b4311620024b25761271062002491610bb88962003203565b6200249d9190620031ca565b9050620024ac893083620027ed565b620025aa565b600086620024c2576012620024c5565b600e5b6040805160808101825282548082526001840154602083018190526002850154938301849052600390940154606083018190529194506000939192916200250c9162003145565b62002518919062003145565b62002524919062003145565b90508015620025a7576127106200253c828b62003203565b620025489190620031ca565b82519093501562002593578151600090829062002566908662003203565b620025729190620031ca565b9050620025838c61dead83620027ed565b6200258f8185620031ed565b9350505b8215620025a757620025a78b3085620027ed565b50505b620025c28989620025bc848b620031ed565b620027ed565b6008546001600160a01b031615620027e2576001600160a01b038916158015906200260657506001600160a01b03891660009081526018602052604090205460ff16155b1562002699576008546001600160a01b03166314b6ca968a6200263e816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156200268557600080fd5b505af192505050801562002697575060015b505b6001600160a01b03881615801590620026cb57506001600160a01b03881660009081526018602052604090205460ff16155b156200275e576008546001600160a01b03166314b6ca968962002703816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156200274a57600080fd5b505af19250505080156200275c575060015b505b818015620027745750600d54610100900460ff16155b15620027e257600854600a546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991620027b39160040190815260200190565b600060405180830381600087803b158015620027ce57600080fd5b505af1925050508015620027e0575060015b505b505050505050505050565b6001600160a01b0383166200281c57806002600082825462002810919062003145565b90915550620028b59050565b6001600160a01b03831660009081526020819052604090205481811015620028965760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162000de6565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620028d357600280548290039055620028f2565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162001dfc91815260200190565b600d5460ff1680156200295b575060c8600c5462002957919062003145565b4311155b156200296c5762001cdd8162002c2e565b601154601054600f5460009291620029849162003145565b62002990919062003145565b9050806000036200299f575050565b6000600282600e6001015485620029b7919062003203565b620029c39190620031ca565b620029cf9190620031ca565b90506000620029df8285620031ed565b905047620029ed8262002cd4565b6000620029fb8247620031ed565b9050600062002a0c86600262003203565b600f5462002a1b908462003203565b62002a279190620031ca565b9050600086600e600301548462002a3f919062003203565b62002a4b9190620031ca565b905060008162002a5c8486620031ed565b62002a689190620031ed565b905060008711801562002a7b5750600083115b1562002acf5762002a8d878462002e05565b60408051888152602081018590529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b811562002b7f57600b546040516000916001600160a01b03169084908381818185875af1925050503d806000811462002b25576040519150601f19603f3d011682016040523d82523d6000602084013e62002b2a565b606091505b505090508062002b7d5760405162461bcd60e51b815260206004820181905260248201527f48414147413a206d61726b6574696e67207472616e73666572206661696c6564604482015260640162000de6565b505b8015620027e257600860009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801562002bd757600080fd5b505af19350505050801562002bea575060015b15620027e2576040518181527f1e8f03f716bc104bf7d728131967a0c771e85ab54d09c1e2d6ed9e0bc4e2a16c9060200160405180910390a1505050505050505050565b600062002c3d600283620031ca565b9050600062002c4d8284620031ed565b90504762002c5b8362002cd4565b600062002c698247620031ed565b905060008311801562002c7c5750600081115b1562002ccd5762002c8e838262002e05565b60408051858152602081018390529081018490527fdb62547f143ec41f5bd7b7adb968138aa43534b9b89ad72b785aa650410edf76906060016200156f565b5050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811062002d0c5762002d0c6200321d565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562002d66573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d8c91906200318a565b8160018151811062002da25762002da26200321d565b6001600160a01b03928316602091820292909201015260065462002dca913091168462001ce0565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479062000f5590859060009086903090429060040162003233565b60065462002e1f9030906001600160a01b03168462001ce0565b6006546001600160a01b031663f305d71982308560008062002e496005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801562002eb2573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062002ccd91906200315b565b61121880620032a783390190565b600060208083528351808285015260005b8181101562002f165785810183015185820160400152820162002ef8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811462001cdd57600080fd5b6000806040838503121562002f6157600080fd5b823562002f6e8162002f37565b946020939093013593505050565b60008060006060848603121562002f9257600080fd5b833562002f9f8162002f37565b9250602084013562002fb18162002f37565b929592945050506040919091013590565b60006020828403121562002fd557600080fd5b5035919050565b6000806040838503121562002ff057600080fd5b50508035926020909101359150565b6000602082840312156200301257600080fd5b81356200301f8162002f37565b9392505050565b600080600080608085870312156200303d57600080fd5b5050823594602084013594506040840135936060013592509050565b801515811462001cdd57600080fd5b600080604083850312156200307c57600080fd5b8235620030898162002f37565b915060208301356200309b8162003059565b809150509250929050565b60008060408385031215620030ba57600080fd5b8235620030c78162002f37565b915060208301356200309b8162002f37565b600060208284031215620030ec57600080fd5b5051919050565b600181811c908216806200310857607f821691505b6020821081036200312957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000d4e5762000d4e6200312f565b6000806000606084860312156200317157600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156200319d57600080fd5b81516200301f8162002f37565b600060208284031215620031bd57600080fd5b81516200301f8162003059565b600082620031e857634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111562000d4e5762000d4e6200312f565b808202811582820484141762000d4e5762000d4e6200312f565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015620032855784516001600160a01b0316835293830193918301916001016200325e565b50506001600160a01b0396909616606085015250505060800152939250505056fe6080604052610e10600b5566038d7ea4c68000600c5534801561002157600080fd5b506040516112183803806112188339810160408190526100409161006e565b600280546001600160a01b039092166001600160a01b0319928316179055600080549091163317905561009e565b60006020828403121561008057600080fd5b81516001600160a01b038116811461009757600080fd5b9392505050565b61116b806100ad6000396000f3fe6080604052600436106101405760003560e01c80638aee8127116100b6578063e2d2e2191161006f578063e2d2e21914610396578063efca2eed146103ac578063f7c618c1146103c2578063f887ea40146103e2578063ffb2c47914610402578063ffd49c841461042257600080fd5b80638aee8127146102b7578063997664d7146102d7578063ab377daa146102ed578063ce7c2ac214610325578063d0e30db014610361578063d4fda1f21461036957600080fd5b80633a98ef39116101085780633a98ef39146101eb5780634fab0ae8146102015780635695fa58146102175780635e6056bb1461022c57806366817df5146102675780636a3fce001461029457600080fd5b8063049728811461014557806314b6ca961461016957806315f7e05e1461018b57806328fd3198146101ab5780632d48e896146101cb575b600080fd5b34801561015157600080fd5b506003545b6040519081526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004610ee2565b610438565b005b34801561019757600080fd5b506101896101a6366004610f0e565b6105cc565b3480156101b757600080fd5b506101566101c6366004610f0e565b610602565b3480156101d757600080fd5b506101896101e6366004610f32565b61068d565b3480156101f757600080fd5b5061015660075481565b34801561020d57600080fd5b50610156600c5481565b34801561022357600080fd5b50600954610156565b34801561023857600080fd5b5061024c610247366004610f0e565b6106c2565b60408051938452602084019290925290820152606001610160565b34801561027357600080fd5b50610156610282366004610f0e565b60056020526000908152604090205481565b3480156102a057600080fd5b506101566ec097ce7bc90715b34b9f100000000081565b3480156102c357600080fd5b506101896102d2366004610f0e565b6106f5565b3480156102e357600080fd5b5061015660085481565b3480156102f957600080fd5b5061030d610308366004610f54565b6107a1565b6040516001600160a01b039091168152602001610160565b34801561033157600080fd5b5061024c610340366004610f0e565b60066020526000908152604090208054600182015460029092015490919083565b6101896107cb565b34801561037557600080fd5b50610156610384366004610f0e565b60046020526000908152604090205481565b3480156103a257600080fd5b50610156600a5481565b3480156103b857600080fd5b5061015660095481565b3480156103ce57600080fd5b5060015461030d906001600160a01b031681565b3480156103ee57600080fd5b5060025461030d906001600160a01b031681565b34801561040e57600080fd5b5061018961041d366004610f54565b610b05565b34801561042e57600080fd5b50610156600b5481565b6000546001600160a01b0316331461046b5760405162461bcd60e51b815260040161046290610f6d565b60405180910390fd5b6001600160a01b038216600090815260066020526040902054156104925761049282610c1c565b6000811180156104b857506001600160a01b038216600090815260066020526040902054155b1561051e57600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319169091179055610551565b8015801561054357506001600160a01b03821660009081526006602052604090205415155b156105515761055182610d43565b6001600160a01b038216600090815260066020526040902054600754829161057891610fcf565b6105829190610fe2565b6007556001600160a01b03821660009081526006602052604090208190556105a981610e58565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6000546001600160a01b031633146105f65760405162461bcd60e51b815260040161046290610f6d565b6105ff81610c1c565b50565b6001600160a01b038116600090815260066020526040812054810361062957506000919050565b6001600160a01b03821660009081526006602052604081205461064b90610e58565b6001600160a01b03841660009081526006602052604090206001015490915080821161067b575060009392505050565b6106858183610fcf565b949350505050565b6000546001600160a01b031633146106b75760405162461bcd60e51b815260040161046290610f6d565b600b91909155600c55565b6001600160a01b0381166000908152600660205260408120805460029091015490916106ed84610602565b929491935050565b6000546001600160a01b0316331461071f5760405162461bcd60e51b815260040161046290610f6d565b6001600160a01b03811661077f5760405162461bcd60e51b815260206004820152602160248201527f4469766964656e644469737472696275746f723a207a65726f206164647265736044820152607360f81b6064820152608401610462565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106107b157600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146107f55760405162461bcd60e51b815260040161046290610f6d565b6001546001600160a01b031661085f5760405162461bcd60e51b815260206004820152602960248201527f4469766964656e644469737472696275746f723a2072657761726420746f6b656044820152681b881b9bdd081cd95d60ba1b6064820152608401610462565b60075415610b03576001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d49190610ff5565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610943573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610967919061100e565b8160008151811061097a5761097a61102b565b6001600160a01b03928316602091820292909201015260018054835192169183919081106109aa576109aa61102b565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906109f090600090869030904290600401611041565b6000604051808303818588803b158015610a0957600080fd5b505af1158015610a1d573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094508693506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015610a6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a939190610ff5565b610a9d9190610fcf565b905080600003610aac57505050565b8060086000828254610abe9190610fe2565b9091555050600754610adf6ec097ce7bc90715b34b9f1000000000836110ab565b610ae991906110c2565b600a6000828254610afa9190610fe2565b90915550505050505b565b6000546001600160a01b03163314610b2f5760405162461bcd60e51b815260040161046290610f6d565b6003546000819003610b3f575050565b6000805a905060005b8483108015610b5657508381105b15610c155783600d5410610b6a576000600d555b610b9c6003600d5481548110610b8257610b8261102b565b6000918252602090912001546001600160a01b0316610e88565b15610bd357610bd36003600d5481548110610bb957610bb961102b565b6000918252602090912001546001600160a01b0316610c1c565b5a610bde9083610fcf565b610be89084610fe2565b92505a600d80549193506000610bfd836110e4565b91905055508080610c0d906110e4565b915050610b48565b5050505050565b6001600160a01b0381166000908152600660205260408120549003610c3e5750565b6000610c4982610602565b90508015610d3f578060096000828254610c639190610fe2565b909155505060015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610cbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdf91906110fd565b506001600160a01b0382166000908152600560209081526040808320429055600690915281206002018054839290610d18908490610fe2565b90915550506001600160a01b0382166000908152600660205260409020546105a990610e58565b5050565b60038054610d5390600190610fcf565b81548110610d6357610d6361102b565b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610da157610da161102b565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610ded90600190610fcf565b81548110610dfd57610dfd61102b565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610e3357610e3361111f565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60006ec097ce7bc90715b34b9f1000000000600a5483610e7891906110ab565b610e8291906110c2565b92915050565b600b546001600160a01b03821660009081526005602052604081205490914291610eb29190610fe2565b108015610e825750600c54610ec683610602565b1192915050565b6001600160a01b03811681146105ff57600080fd5b60008060408385031215610ef557600080fd5b8235610f0081610ecd565b946020939093013593505050565b600060208284031215610f2057600080fd5b8135610f2b81610ecd565b9392505050565b60008060408385031215610f4557600080fd5b50508035926020909101359150565b600060208284031215610f6657600080fd5b5035919050565b6020808252602c908201527f4469766964656e644469737472696275746f723a2063616c6c6572206973206e60408201526b37ba103a3432903a37b5b2b760a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e8257610e82610fb9565b80820180821115610e8257610e82610fb9565b60006020828403121561100757600080fd5b5051919050565b60006020828403121561102057600080fd5b8151610f2b81610ecd565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b8181101561108b5784516001600160a01b031683529383019391830191600101611066565b50506001600160a01b039690961660408501525050506060015292915050565b8082028115828204841417610e8257610e82610fb9565b6000826110df57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016110f6576110f6610fb9565b5060010190565b60006020828403121561110f57600080fd5b81518015158114610f2b57600080fd5b634e487b7160e01b600052603160045260246000fdfea26469706673582212204c461ce6a6e4a275a605838c0f657ad807ba31f77462875245a33db2631668ca64736f6c63430008140033a26469706673582212205102a328e5c2bce0ce849d2c4b5bf60401c9c9c6dad33f2c8f917340ad283aff64736f6c63430008140033000000000000000000000000ec1620c27703ebba0f9da5a41711d761ac098ff10000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73
0x608060405260043610620003cf5760003560e01c80638aee812711620001f7578063b62496f51162000117578063d63cad2211620000ad578063e2f456051162000078578063e2f456051462000bb1578063e7c52d441462000bc9578063f2fde38b1462000be1578063f7c618c11462000c0657600080fd5b8063d63cad221462000b13578063dd62ed3e1462000b38578063dd72f6a61462000b82578063dd7e85231462000b9a57600080fd5b8063c705c56911620000ee578063c705c5691462000a7d578063c92eeca71462000ab1578063cc1776d31462000ad6578063d04687d31462000afb57600080fd5b8063b62496f51462000a0b578063bad3ea6a1462000a3f578063bbc0c7421462000a6157600080fd5b80639e252f00116200018d578063a9059cbb1162000164578063a9059cbb1462000984578063aada9c3814620009a9578063afa4f3b214620009ce578063b0bc85de14620009f357600080fd5b80639e252f001462000910578063a82cfe8b1462000935578063a82ed9ec146200095a57600080fd5b8063902d55a511620001ce578063902d55a5146200088757806395d89b4114620008a957806399d8fae314620008c15780639a7a23d614620008eb57600080fd5b80638aee8127146200081d5780638cd4426d14620008425780638da5cb5b146200086757600080fd5b806348cd4cb111620002ef57806360e71962116200028557806375f0a874116200025057806375f0a87414620007a65780638129fc1c14620007c857806384666b0814620007e0578063860f53df146200080557600080fd5b806360e71962146200071c57806370a082311462000734578063715018a6146200076e5780637262f56f146200078657600080fd5b80634f7041a511620002c65780634f7041a5146200063c5780634fbee19314620006825780635d098b3814620006b65780635e6056bb14620006db57600080fd5b806348cd4cb114620005ea57806349bd5a5e14620006025780634e6fd6c4146200062457600080fd5b8063244ce7db11620003655780632c597de9116200033c5780632c597de914620005775780632d48e896146200058f578063313ce56714620005b4578063372500ab14620005d257600080fd5b8063244ce7db14620004f7578063252d723a146200051e578063293230b8146200055f57600080fd5b8063158ef93e11620003a6578063158ef93e14620004645780631694505e146200048057806318160ddd14620004bb57806323b872dd14620004d257600080fd5b80630497288114620003dc57806306fdde031462000407578063095ea7b3146200042e57600080fd5b36620003d757005b600080fd5b348015620003e957600080fd5b50620003f462000c28565b6040519081526020015b60405180910390f35b3480156200041457600080fd5b506200041f62000c9e565b604051620003fe919062002ee7565b3480156200043b57600080fd5b50620004536200044d36600462002f4d565b62000d38565b6040519015158152602001620003fe565b3480156200047157600080fd5b50601a54620004539060ff1681565b3480156200048d57600080fd5b50600654620004a2906001600160a01b031681565b6040516001600160a01b039091168152602001620003fe565b348015620004c857600080fd5b50600254620003f4565b348015620004df57600080fd5b5062000453620004f136600462002f7c565b62000d54565b3480156200050457600080fd5b506200051c6200051636600462002fc2565b62000d7c565b005b3480156200052b57600080fd5b506200053662000e2b565b604080519586526020860194909452928401919091526060830152608082015260a001620003fe565b3480156200056c57600080fd5b506200051c62000e68565b3480156200058457600080fd5b50620003f46109c481565b3480156200059c57600080fd5b506200051c620005ae36600462002fdc565b62000f17565b348015620005c157600080fd5b5060405160128152602001620003fe565b348015620005df57600080fd5b506200051c62000f8d565b348015620005f757600080fd5b50620003f4600c5481565b3480156200060f57600080fd5b50600754620004a2906001600160a01b031681565b3480156200063157600080fd5b50620004a261dead81565b3480156200064957600080fd5b50600e54600f54601054601154620006619392919084565b604080519485526020850193909352918301526060820152608001620003fe565b3480156200068f57600080fd5b5062000453620006a136600462002fff565b60176020526000908152604090205460ff1681565b348015620006c357600080fd5b506200051c620006d536600462002fff565b62001019565b348015620006e857600080fd5b5062000700620006fa36600462002fff565b620010e1565b60408051938452602084019290925290820152606001620003fe565b3480156200072957600080fd5b50620003f4600a5481565b3480156200074157600080fd5b50620003f46200075336600462002fff565b6001600160a01b031660009081526020819052604090205490565b3480156200077b57600080fd5b506200051c62001166565b3480156200079357600080fd5b506008546001600160a01b0316620004a2565b348015620007b357600080fd5b50600b54620004a2906001600160a01b031681565b348015620007d557600080fd5b506200051c6200117e565b348015620007ed57600080fd5b506200051c620007ff36600462003026565b62001474565b3480156200081257600080fd5b50620004536200157e565b3480156200082a57600080fd5b506200051c6200083c36600462002fff565b620015ab565b3480156200084f57600080fd5b506200051c6200086136600462002f4d565b620016ba565b3480156200087457600080fd5b506005546001600160a01b0316620004a2565b3480156200089457600080fd5b50620003f46b015b6a759f4835dc2400000081565b348015620008b657600080fd5b506200041f620017b9565b348015620008ce57600080fd5b50620004a2738bceaa40b9acdfaedf85adf4ff01f5ad6517937f81565b348015620008f857600080fd5b506200051c6200090a36600462003068565b620017ca565b3480156200091d57600080fd5b506200051c6200092f36600462002fc2565b6200184e565b3480156200094257600080fd5b506200051c6200095436600462003026565b620018e5565b3480156200096757600080fd5b50620004a27389e5db8b5aa49aa85ac63f691524311aeb649eba81565b3480156200099157600080fd5b5062000453620009a336600462002f4d565b620019e5565b348015620009b657600080fd5b50620003f4620009c836600462002fff565b620019f5565b348015620009db57600080fd5b506200051c620009ed36600462002fc2565b62001a67565b34801562000a0057600080fd5b506200053662001b7d565b34801562000a1857600080fd5b506200045362000a2a36600462002fff565b60196020526000908152604090205460ff1681565b34801562000a4c57600080fd5b50600854620004a2906001600160a01b031681565b34801562000a6e57600080fd5b50600d54620004539060ff1681565b34801562000a8a57600080fd5b506200045362000a9c36600462002fff565b60186020526000908152604090205460ff1681565b34801562000abe57600080fd5b506200051c62000ad036600462003068565b62001b99565b34801562000ae357600080fd5b50601254601354601454601554620006619392919084565b34801562000b0857600080fd5b50620003f4610bb881565b34801562000b2057600080fd5b506200051c62000b3236600462003068565b62001baf565b34801562000b4557600080fd5b50620003f462000b57366004620030a6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801562000b8f57600080fd5b50620003f462001bc5565b34801562000ba757600080fd5b50620003f460c881565b34801562000bbe57600080fd5b50620003f460165481565b34801562000bd657600080fd5b50620003f462001c16565b34801562000bee57600080fd5b506200051c62000c0036600462002fff565b62001c61565b34801562000c1357600080fd5b50600954620004a2906001600160a01b031681565b60085460408051630497288160e01b815290516000926001600160a01b03169163049728819160048083019260209291908290030181865afa15801562000c73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c999190620030d9565b905090565b60606003805462000caf90620030f3565b80601f016020809104026020016040519081016040528092919081815260200182805462000cdd90620030f3565b801562000d2e5780601f1062000d025761010080835404028352916020019162000d2e565b820191906000526020600020905b81548152906001019060200180831162000d1057829003601f168201915b5050505050905090565b60003362000d4881858562001ce0565b60019150505b92915050565b60003362000d6485828562001e09565b62000d7185858562001ea0565b506001949350505050565b62000d8662001f77565b62030d40811015801562000d9d5750620f42408111155b62000def5760405162461bcd60e51b815260206004820152601760248201527f48414147413a20676173206f7574206f662072616e676500000000000000000060448201526064015b60405180910390fd5b600a8190556040518181527f5f0cf7d11c1aaf2b53b91892382eaee789338051f9fcecf528ca006d062bfba8906020015b60405180910390a150565b600e54600f546010546011546000818362000e47868862003145565b62000e53919062003145565b62000e5f919062003145565b90509091929394565b62000e7262001f77565b600d5460ff161562000ec75760405162461bcd60e51b815260206004820152601d60248201527f48414147413a2074726164696e6720616c726561647920616374697665000000604482015260640162000de6565b600d805460ff1916600117905543600c8190556040517f681fd8281014ec159aeba3c383293bbbc3db4d68f2c74f894d9f46a401f73fe49162000f0d9190815260200190565b60405180910390a1565b62000f2162001f77565b6008546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801562000f7057600080fd5b505af115801562000f85573d6000803e3d6000fd5b505050505050565b600854604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801562000fd357600080fd5b505af115801562000fe8573d6000803e3d6000fd5b50506040513392507fed7f50f936a5ed7428d20f18e78d6dfe8bc37fd2f4e3cdb348327c76972449289150600090a2565b6200102362001f77565b6001600160a01b038116620010715760405162461bcd60e51b815260206004820152601360248201527248414147413a207a65726f206164647265737360681b604482015260640162000de6565b600b80546001600160a01b038381166001600160a01b0319831617909255166200109d82600162001fd3565b806001600160a01b0316826001600160a01b03167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a35050565b600854604051635e6056bb60e01b81526001600160a01b0383811660048301526000928392839290911690635e6056bb90602401606060405180830381865afa15801562001133573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200115991906200315b565b9250925092509193909250565b6200117062001f77565b6200117c600062002033565b565b6200118862001f77565b601a5460ff1615620011dd5760405162461bcd60e51b815260206004820152601a60248201527f48414147413a20616c726561647920696e697469616c697a6564000000000000604482015260640162000de6565b601a805460ff19166001179055600680546001600160a01b0319167389e5db8b5aa49aa85ac63f691524311aeb649eba908117909155604080516315ab88c960e31b81529051738bceaa40b9acdfaedf85adf4ff01f5ad6517937f9263c9c6539692309263ad5c4648916004808201926020929091908290030181865afa1580156200126d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200129391906200318a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620012e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200130791906200318a565b600780546001600160a01b0319166001600160a01b039290921691821790556200133390600162002085565b7389e5db8b5aa49aa85ac63f691524311aeb649eba604051620013569062002ed9565b6001600160a01b039091168152602001604051809103906000f08015801562001383573d6000803e3d6000fd5b50600880546001600160a01b0319166001600160a01b03928316908117909155600954604051638aee812760e01b81529216600483015290638aee812790602401600060405180830381600087803b158015620013df57600080fd5b505af1158015620013f4573d6000803e3d6000fd5b5050505062001405336001620020fe565b62001412306001620020fe565b6008546200142b906001600160a01b03166001620020fe565b6200144c7389e5db8b5aa49aa85ac63f691524311aeb649eba6001620020fe565b60075462001465906001600160a01b03166001620020fe565b6200117c61dead6001620020fe565b6200147e62001f77565b600081836200148e868862003145565b6200149a919062003145565b620014a6919062003145565b90506109c4811115620014fc5760405162461bcd60e51b815260206004820152601b60248201527f48414147413a2073656c6c207461782065786365656473203235250000000000604482015260640162000de6565b604080516080808201835287825260208083018890528284018790526060928301869052601289905560138890556014879055601586905583518981529081018890529283018690529082018490527fa987db89f31df6351bb1ad3d58f4e5ef54e52c1e3389622f2b38adcf43a086ae91015b60405180910390a15050505050565b600d5460009060ff16620015925750600090565b60c8600c54620015a3919062003145565b431115905090565b620015b562001f77565b6001600160a01b038116620016035760405162461bcd60e51b815260206004820152601360248201527248414147413a207a65726f206164647265737360681b604482015260640162000de6565b600980546001600160a01b038381166001600160a01b031983168117909355600854604051638aee812760e01b8152600481019490945291811692911690638aee812790602401600060405180830381600087803b1580156200166557600080fd5b505af11580156200167a573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507f906ff2422a6ffa134f2d7ccaffd446bc0c583a5cb6615749b4b2836942a5fea890600090a35050565b620016c462001f77565b306001600160a01b038316036200171e5760405162461bcd60e51b815260206004820152601a60248201527f48414147413a2063616e6e6f7420726573637565204841414741000000000000604482015260640162000de6565b816001600160a01b031663a9059cbb620017406005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af11580156200178e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017b49190620031aa565b505050565b60606004805462000caf90620030f3565b620017d462001f77565b6007546001600160a01b03908116908316036200183e5760405162461bcd60e51b815260206004820152602160248201527f48414147413a2063616e6e6f742072656d6f7665207072696d617279207061696044820152603960f91b606482015260840162000de6565b6200184a828262002085565b5050565b6200185862001f77565b80471015620018aa5760405162461bcd60e51b815260206004820152601760248201527f48414147413a20696e73756666696369656e7420455448000000000000000000604482015260640162000de6565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156200184a573d6000803e3d6000fd5b620018ef62001f77565b60008183620018ff868862003145565b6200190b919062003145565b62001917919062003145565b90506109c48111156200196d5760405162461bcd60e51b815260206004820152601a60248201527f48414147413a2062757920746178206578636565647320323525000000000000604482015260640162000de6565b604080516080808201835287825260208083018890528284018790526060928301869052600e899055600f8890556010879055601186905583518981529081018890529283018690529082018490527f39dd28ec6ca271c82451a8ef3e1422d281febc1d63701dd827a8573ed55bd48591016200156f565b60003362000d4881858562001ea0565b60085460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd319890602401602060405180830381865afa15801562001a41573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d4e9190620030d9565b62001a7162001f77565b62001a8c620186a06b015b6a759f4835dc24000000620031ca565b81101562001add5760405162461bcd60e51b815260206004820152601d60248201527f48414147413a2073776170207468726573686f6c6420746f6f206c6f77000000604482015260640162000de6565b62001af660646b015b6a759f4835dc24000000620031ca565b81111562001b475760405162461bcd60e51b815260206004820152601e60248201527f48414147413a2073776170207468726573686f6c6420746f6f20686967680000604482015260640162000de6565b60168190556040518181527f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd064769060200162000e20565b6012546013546014546015546000818362000e47868862003145565b62001ba362001f77565b6200184a8282620020fe565b62001bb962001f77565b6200184a828262001fd3565b600d5460009060ff1662001bd9575060c890565b60c8600c5462001bea919062003145565b43111562001bf85750600090565b4360c8600c5462001c0a919062003145565b62000c999190620031ed565b60085460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa15801562000c73573d6000803e3d6000fd5b62001c6b62001f77565b6001600160a01b03811662001cd25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000de6565b62001cdd8162002033565b50565b6001600160a01b03831662001d445760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000de6565b6001600160a01b03821662001da75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000de6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811462001e9a578181101562001e8b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640162000de6565b62001e9a848484840362001ce0565b50505050565b6001600160a01b03831662001f065760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000de6565b6001600160a01b03821662001f6a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000de6565b620017b483838362002273565b6005546001600160a01b031633146200117c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000de6565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791015b60405180910390a25050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152601960205260409020805460ff19168215801591909117909155620020c057620020c0826001620020fe565b816001600160a01b03167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab8260405162002027911515815260200190565b6001600160a01b038281166000908152601860205260409020805460ff1916831515179055600854161562002235578015620021a257600854604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401600060405180830381600087803b1580156200218357600080fd5b505af115801562002198573d6000803e3d6000fd5b5050505062002235565b6008546001600160a01b03166314b6ca9683620021d4816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156200221b57600080fd5b505af115801562002230573d6000803e3d6000fd5b505050505b816001600160a01b03167fa3c7c11b2e12c4144b09a7813f3393ba646392788638998c97be8da908cf04be8260405162002027911515815260200190565b806000036200228a57620017b483836000620027ed565b6001600160a01b03808416600090815260196020526040808220549285168252902054600d5460ff928316929182169116158015620022d757506005546001600160a01b03868116911614155b8015620022f257506005546001600160a01b03858116911614155b15620023415760405162461bcd60e51b815260206004820152601d60248201527f48414147413a2074726164696e67206e6f742079657420616374697665000000604482015260640162000de6565b30600090815260208190526040902054601654811080159081906200236e5750600d54610100900460ff16155b80156200239457506001600160a01b03871660009081526019602052604090205460ff16155b8015620023af57506005546001600160a01b03888116911614155b8015620023ca57506005546001600160a01b03878116911614155b15620023f657600d805461ff001916610100179055620023ea8262002938565b600d805461ff00191690555b600d546001600160a01b03881660009081526017602052604090205460ff6101009092048216159116806200244357506001600160a01b03871660009081526017602052604090205460ff165b156200244d575060005b60008180156200246257508580620024625750845b15620025aa5760c8600c5462002479919062003145565b4311620024b25761271062002491610bb88962003203565b6200249d9190620031ca565b9050620024ac893083620027ed565b620025aa565b600086620024c2576012620024c5565b600e5b6040805160808101825282548082526001840154602083018190526002850154938301849052600390940154606083018190529194506000939192916200250c9162003145565b62002518919062003145565b62002524919062003145565b90508015620025a7576127106200253c828b62003203565b620025489190620031ca565b82519093501562002593578151600090829062002566908662003203565b620025729190620031ca565b9050620025838c61dead83620027ed565b6200258f8185620031ed565b9350505b8215620025a757620025a78b3085620027ed565b50505b620025c28989620025bc848b620031ed565b620027ed565b6008546001600160a01b031615620027e2576001600160a01b038916158015906200260657506001600160a01b03891660009081526018602052604090205460ff16155b1562002699576008546001600160a01b03166314b6ca968a6200263e816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156200268557600080fd5b505af192505050801562002697575060015b505b6001600160a01b03881615801590620026cb57506001600160a01b03881660009081526018602052604090205460ff16155b156200275e576008546001600160a01b03166314b6ca968962002703816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156200274a57600080fd5b505af19250505080156200275c575060015b505b818015620027745750600d54610100900460ff16155b15620027e257600854600a546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991620027b39160040190815260200190565b600060405180830381600087803b158015620027ce57600080fd5b505af1925050508015620027e0575060015b505b505050505050505050565b6001600160a01b0383166200281c57806002600082825462002810919062003145565b90915550620028b59050565b6001600160a01b03831660009081526020819052604090205481811015620028965760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162000de6565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620028d357600280548290039055620028f2565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162001dfc91815260200190565b600d5460ff1680156200295b575060c8600c5462002957919062003145565b4311155b156200296c5762001cdd8162002c2e565b601154601054600f5460009291620029849162003145565b62002990919062003145565b9050806000036200299f575050565b6000600282600e6001015485620029b7919062003203565b620029c39190620031ca565b620029cf9190620031ca565b90506000620029df8285620031ed565b905047620029ed8262002cd4565b6000620029fb8247620031ed565b9050600062002a0c86600262003203565b600f5462002a1b908462003203565b62002a279190620031ca565b9050600086600e600301548462002a3f919062003203565b62002a4b9190620031ca565b905060008162002a5c8486620031ed565b62002a689190620031ed565b905060008711801562002a7b5750600083115b1562002acf5762002a8d878462002e05565b60408051888152602081018590529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b811562002b7f57600b546040516000916001600160a01b03169084908381818185875af1925050503d806000811462002b25576040519150601f19603f3d011682016040523d82523d6000602084013e62002b2a565b606091505b505090508062002b7d5760405162461bcd60e51b815260206004820181905260248201527f48414147413a206d61726b6574696e67207472616e73666572206661696c6564604482015260640162000de6565b505b8015620027e257600860009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801562002bd757600080fd5b505af19350505050801562002bea575060015b15620027e2576040518181527f1e8f03f716bc104bf7d728131967a0c771e85ab54d09c1e2d6ed9e0bc4e2a16c9060200160405180910390a1505050505050505050565b600062002c3d600283620031ca565b9050600062002c4d8284620031ed565b90504762002c5b8362002cd4565b600062002c698247620031ed565b905060008311801562002c7c5750600081115b1562002ccd5762002c8e838262002e05565b60408051858152602081018390529081018490527fdb62547f143ec41f5bd7b7adb968138aa43534b9b89ad72b785aa650410edf76906060016200156f565b5050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811062002d0c5762002d0c6200321d565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562002d66573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d8c91906200318a565b8160018151811062002da25762002da26200321d565b6001600160a01b03928316602091820292909201015260065462002dca913091168462001ce0565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479062000f5590859060009086903090429060040162003233565b60065462002e1f9030906001600160a01b03168462001ce0565b6006546001600160a01b031663f305d71982308560008062002e496005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801562002eb2573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062002ccd91906200315b565b61121880620032a783390190565b600060208083528351808285015260005b8181101562002f165785810183015185820160400152820162002ef8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811462001cdd57600080fd5b6000806040838503121562002f6157600080fd5b823562002f6e8162002f37565b946020939093013593505050565b60008060006060848603121562002f9257600080fd5b833562002f9f8162002f37565b9250602084013562002fb18162002f37565b929592945050506040919091013590565b60006020828403121562002fd557600080fd5b5035919050565b6000806040838503121562002ff057600080fd5b50508035926020909101359150565b6000602082840312156200301257600080fd5b81356200301f8162002f37565b9392505050565b600080600080608085870312156200303d57600080fd5b5050823594602084013594506040840135936060013592509050565b801515811462001cdd57600080fd5b600080604083850312156200307c57600080fd5b8235620030898162002f37565b915060208301356200309b8162003059565b809150509250929050565b60008060408385031215620030ba57600080fd5b8235620030c78162002f37565b915060208301356200309b8162002f37565b600060208284031215620030ec57600080fd5b5051919050565b600181811c908216806200310857607f821691505b6020821081036200312957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000d4e5762000d4e6200312f565b6000806000606084860312156200317157600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156200319d57600080fd5b81516200301f8162002f37565b600060208284031215620031bd57600080fd5b81516200301f8162003059565b600082620031e857634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111562000d4e5762000d4e6200312f565b808202811582820484141762000d4e5762000d4e6200312f565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015620032855784516001600160a01b0316835293830193918301916001016200325e565b50506001600160a01b0396909616606085015250505060800152939250505056fe6080604052610e10600b5566038d7ea4c68000600c5534801561002157600080fd5b506040516112183803806112188339810160408190526100409161006e565b600280546001600160a01b039092166001600160a01b0319928316179055600080549091163317905561009e565b60006020828403121561008057600080fd5b81516001600160a01b038116811461009757600080fd5b9392505050565b61116b806100ad6000396000f3fe6080604052600436106101405760003560e01c80638aee8127116100b6578063e2d2e2191161006f578063e2d2e21914610396578063efca2eed146103ac578063f7c618c1146103c2578063f887ea40146103e2578063ffb2c47914610402578063ffd49c841461042257600080fd5b80638aee8127146102b7578063997664d7146102d7578063ab377daa146102ed578063ce7c2ac214610325578063d0e30db014610361578063d4fda1f21461036957600080fd5b80633a98ef39116101085780633a98ef39146101eb5780634fab0ae8146102015780635695fa58146102175780635e6056bb1461022c57806366817df5146102675780636a3fce001461029457600080fd5b8063049728811461014557806314b6ca961461016957806315f7e05e1461018b57806328fd3198146101ab5780632d48e896146101cb575b600080fd5b34801561015157600080fd5b506003545b6040519081526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004610ee2565b610438565b005b34801561019757600080fd5b506101896101a6366004610f0e565b6105cc565b3480156101b757600080fd5b506101566101c6366004610f0e565b610602565b3480156101d757600080fd5b506101896101e6366004610f32565b61068d565b3480156101f757600080fd5b5061015660075481565b34801561020d57600080fd5b50610156600c5481565b34801561022357600080fd5b50600954610156565b34801561023857600080fd5b5061024c610247366004610f0e565b6106c2565b60408051938452602084019290925290820152606001610160565b34801561027357600080fd5b50610156610282366004610f0e565b60056020526000908152604090205481565b3480156102a057600080fd5b506101566ec097ce7bc90715b34b9f100000000081565b3480156102c357600080fd5b506101896102d2366004610f0e565b6106f5565b3480156102e357600080fd5b5061015660085481565b3480156102f957600080fd5b5061030d610308366004610f54565b6107a1565b6040516001600160a01b039091168152602001610160565b34801561033157600080fd5b5061024c610340366004610f0e565b60066020526000908152604090208054600182015460029092015490919083565b6101896107cb565b34801561037557600080fd5b50610156610384366004610f0e565b60046020526000908152604090205481565b3480156103a257600080fd5b50610156600a5481565b3480156103b857600080fd5b5061015660095481565b3480156103ce57600080fd5b5060015461030d906001600160a01b031681565b3480156103ee57600080fd5b5060025461030d906001600160a01b031681565b34801561040e57600080fd5b5061018961041d366004610f54565b610b05565b34801561042e57600080fd5b50610156600b5481565b6000546001600160a01b0316331461046b5760405162461bcd60e51b815260040161046290610f6d565b60405180910390fd5b6001600160a01b038216600090815260066020526040902054156104925761049282610c1c565b6000811180156104b857506001600160a01b038216600090815260066020526040902054155b1561051e57600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319169091179055610551565b8015801561054357506001600160a01b03821660009081526006602052604090205415155b156105515761055182610d43565b6001600160a01b038216600090815260066020526040902054600754829161057891610fcf565b6105829190610fe2565b6007556001600160a01b03821660009081526006602052604090208190556105a981610e58565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6000546001600160a01b031633146105f65760405162461bcd60e51b815260040161046290610f6d565b6105ff81610c1c565b50565b6001600160a01b038116600090815260066020526040812054810361062957506000919050565b6001600160a01b03821660009081526006602052604081205461064b90610e58565b6001600160a01b03841660009081526006602052604090206001015490915080821161067b575060009392505050565b6106858183610fcf565b949350505050565b6000546001600160a01b031633146106b75760405162461bcd60e51b815260040161046290610f6d565b600b91909155600c55565b6001600160a01b0381166000908152600660205260408120805460029091015490916106ed84610602565b929491935050565b6000546001600160a01b0316331461071f5760405162461bcd60e51b815260040161046290610f6d565b6001600160a01b03811661077f5760405162461bcd60e51b815260206004820152602160248201527f4469766964656e644469737472696275746f723a207a65726f206164647265736044820152607360f81b6064820152608401610462565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600381815481106107b157600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146107f55760405162461bcd60e51b815260040161046290610f6d565b6001546001600160a01b031661085f5760405162461bcd60e51b815260206004820152602960248201527f4469766964656e644469737472696275746f723a2072657761726420746f6b656044820152681b881b9bdd081cd95d60ba1b6064820152608401610462565b60075415610b03576001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d49190610ff5565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610943573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610967919061100e565b8160008151811061097a5761097a61102b565b6001600160a01b03928316602091820292909201015260018054835192169183919081106109aa576109aa61102b565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906109f090600090869030904290600401611041565b6000604051808303818588803b158015610a0957600080fd5b505af1158015610a1d573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094508693506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015610a6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a939190610ff5565b610a9d9190610fcf565b905080600003610aac57505050565b8060086000828254610abe9190610fe2565b9091555050600754610adf6ec097ce7bc90715b34b9f1000000000836110ab565b610ae991906110c2565b600a6000828254610afa9190610fe2565b90915550505050505b565b6000546001600160a01b03163314610b2f5760405162461bcd60e51b815260040161046290610f6d565b6003546000819003610b3f575050565b6000805a905060005b8483108015610b5657508381105b15610c155783600d5410610b6a576000600d555b610b9c6003600d5481548110610b8257610b8261102b565b6000918252602090912001546001600160a01b0316610e88565b15610bd357610bd36003600d5481548110610bb957610bb961102b565b6000918252602090912001546001600160a01b0316610c1c565b5a610bde9083610fcf565b610be89084610fe2565b92505a600d80549193506000610bfd836110e4565b91905055508080610c0d906110e4565b915050610b48565b5050505050565b6001600160a01b0381166000908152600660205260408120549003610c3e5750565b6000610c4982610602565b90508015610d3f578060096000828254610c639190610fe2565b909155505060015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610cbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdf91906110fd565b506001600160a01b0382166000908152600560209081526040808320429055600690915281206002018054839290610d18908490610fe2565b90915550506001600160a01b0382166000908152600660205260409020546105a990610e58565b5050565b60038054610d5390600190610fcf565b81548110610d6357610d6361102b565b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610da157610da161102b565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610ded90600190610fcf565b81548110610dfd57610dfd61102b565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610e3357610e3361111f565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60006ec097ce7bc90715b34b9f1000000000600a5483610e7891906110ab565b610e8291906110c2565b92915050565b600b546001600160a01b03821660009081526005602052604081205490914291610eb29190610fe2565b108015610e825750600c54610ec683610602565b1192915050565b6001600160a01b03811681146105ff57600080fd5b60008060408385031215610ef557600080fd5b8235610f0081610ecd565b946020939093013593505050565b600060208284031215610f2057600080fd5b8135610f2b81610ecd565b9392505050565b60008060408385031215610f4557600080fd5b50508035926020909101359150565b600060208284031215610f6657600080fd5b5035919050565b6020808252602c908201527f4469766964656e644469737472696275746f723a2063616c6c6572206973206e60408201526b37ba103a3432903a37b5b2b760a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e8257610e82610fb9565b80820180821115610e8257610e82610fb9565b60006020828403121561100757600080fd5b5051919050565b60006020828403121561102057600080fd5b8151610f2b81610ecd565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b8181101561108b5784516001600160a01b031683529383019391830191600101611066565b50506001600160a01b039690961660408501525050506060015292915050565b8082028115828204841417610e8257610e82610fb9565b6000826110df57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016110f6576110f6610fb9565b5060010190565b60006020828403121561110f57600080fd5b81518015158114610f2b57600080fd5b634e487b7160e01b600052603160045260246000fdfea26469706673582212204c461ce6a6e4a275a605838c0f657ad807ba31f77462875245a33db2631668ca64736f6c63430008140033a26469706673582212205102a328e5c2bce0ce849d2c4b5bf60401c9c9c6dad33f2c8f917340ad283aff64736f6c63430008140033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| High As A Giraffe's Ass (HAAGA) | HAAGA | 204.911860 | — | — |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x524825…3b767d | 5 days agoMon, 10 Aug 2026 19:40:38 UTC | Transfer | [0] 0x000000000000…9b0437c5 [1] 0x000000000000…f1629249 data: 0x000000000000000000…aa9b0000 |
| 0x524825…3b767d | 5 days agoMon, 10 Aug 2026 19:40:38 UTC | Transfer | [0] 0x000000000000…9b0437c5 [1] 0x000000000000…0017a524 data: 0x000000000000000000…a5d50000 |
| 0x39f165…9f6d84 | 8 days agoFri, 07 Aug 2026 19:44:28 UTC | Approval | [0] 0x000000000000…a83aea4f [1] 0x000000000000…a9f8e4bf data: 0xffffffffffffffffff…ffffffff |
| 0xe9bf79…6af318 | 8 days agoFri, 07 Aug 2026 19:42:15 UTC | Transfer | [0] 0x000000000000…bb523fae [1] 0x000000000000…f1629249 data: 0x000000000000000000…d31bf555 |
| 0xe9bf79…6af318 | 8 days agoFri, 07 Aug 2026 19:42:15 UTC | Transfer | [0] 0x000000000000…bb523fae [1] 0x000000000000…a83aea4f data: 0x000000000000000000…a3cfdfff |
| 0xb44c56…a058f6 | 8 days agoFri, 07 Aug 2026 13:51:41 UTC | Transfer | [0] 0x000000000000…973d90b3 [1] 0x000000000000…ddb8124f data: 0x000000000000000000…6261f855 |
| 0xaac8ab…5a20f2 | 8 days agoFri, 07 Aug 2026 13:51:21 UTC | Approval | [0] 0x000000000000…973d90b3 [1] 0x000000000000…3ac78ba3 data: 0xffffffffffffffffff…ffffffff |
| 0xa82caf…37ff36 | 9 days agoThu, 06 Aug 2026 05:15:22 UTC | Transfer | [0] 0x000000000000…8668a689 [1] 0x000000000000…f1629249 data: 0x000000000000000000…44f40001 |
| 0xa82caf…37ff36 | 9 days agoThu, 06 Aug 2026 05:15:22 UTC | Transfer | [0] 0x000000000000…8668a689 [1] 0x000000000000…b5f9e057 data: 0x000000000000000000…888eaaaa |
| 0xa82caf…37ff36 | 9 days agoThu, 06 Aug 2026 05:15:22 UTC | Transfer | [0] 0x000000000000…8668a689 [1] 0x000000000000…525fa08f data: 0x000000000000000000…888eaaaa |
| 0xa82caf…37ff36 | 9 days agoThu, 06 Aug 2026 05:15:22 UTC | Transfer | [0] 0x000000000000…8668a689 [1] 0x000000000000…8d9cb16d data: 0x000000000000000000…888eaaaa |
| 0xe8e521…6d0ba5 | 10 days agoWed, 05 Aug 2026 08:54:05 UTC | Transfer | [0] 0x000000000000…a0885e9f [1] 0x000000000000…f1629249 data: 0x000000000000000000…48140006 |
| 0xe8e521…6d0ba5 | 10 days agoWed, 05 Aug 2026 08:54:05 UTC | Transfer | [0] 0x000000000000…a0885e9f [1] 0x000000000000…8d20b06c data: 0x000000000000000000…95215554 |
| 0xe8e521…6d0ba5 | 10 days agoWed, 05 Aug 2026 08:54:05 UTC | Transfer | [0] 0x000000000000…a0885e9f [1] 0x000000000000…c8d69e49 data: 0x000000000000000000…95215554 |
| 0xe8e521…6d0ba5 | 10 days agoWed, 05 Aug 2026 08:54:05 UTC | Transfer | [0] 0x000000000000…a0885e9f [1] 0x000000000000…3802c1a1 data: 0x000000000000000000…95215554 |
| 0xe8e521…6d0ba5 | 10 days agoWed, 05 Aug 2026 08:54:05 UTC | Transfer | [0] 0x000000000000…a0885e9f [1] 0x000000000000…2c65829a data: 0x000000000000000000…95215554 |
| 0xe8e521…6d0ba5 | 10 days agoWed, 05 Aug 2026 08:54:05 UTC | Transfer | [0] 0x000000000000…a0885e9f [1] 0x000000000000…c7d78753 data: 0x000000000000000000…95215554 |
| 0xe8e521…6d0ba5 | 10 days agoWed, 05 Aug 2026 08:54:05 UTC | Transfer | [0] 0x000000000000…a0885e9f [1] 0x000000000000…5d7f2f40 data: 0x000000000000000000…95215554 |
| 0xe8e521…6d0ba5 | 10 days agoWed, 05 Aug 2026 08:54:05 UTC | Transfer | [0] 0x000000000000…a0885e9f [1] 0x000000000000…8668a689 data: 0x000000000000000000…95215554 |
| 0xe8e521…6d0ba5 | 10 days agoWed, 05 Aug 2026 08:54:05 UTC | Transfer | [0] 0x000000000000…a0885e9f [1] 0x000000000000…bb523fae data: 0x000000000000000000…95215554 |
| 0xe8e521…6d0ba5 | 10 days agoWed, 05 Aug 2026 08:54:05 UTC | Transfer | [0] 0x000000000000…a0885e9f [1] 0x000000000000…9b0437c5 data: 0x000000000000000000…95215554 |
| 0xf11181…51055b | 15 days agoFri, 31 Jul 2026 13:53:58 UTC | Transfer | [0] 0x000000000000…3802c1a1 [1] 0x000000000000…f1629249 data: 0x000000000000000000…c34e0000 |
| 0xf11181…51055b | 15 days agoFri, 31 Jul 2026 13:53:58 UTC | Transfer | [0] 0x000000000000…3802c1a1 [1] 0x000000000000…bb523fae data: 0x000000000000000000…e1ca8000 |
| 0xf11181…51055b | 15 days agoFri, 31 Jul 2026 13:53:58 UTC | Transfer | [0] 0x000000000000…3802c1a1 [1] 0x000000000000…c8d69e49 data: 0x000000000000000000…e1ca8000 |
| 0xf11181…51055b | 15 days agoFri, 31 Jul 2026 13:53:58 UTC | Transfer | [0] 0x000000000000…3802c1a1 [1] 0x000000000000…9b0437c5 data: 0x000000000000000000…e1ca8000 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xc1f16a66…6cea67 | Transfer | 22,096,468 | 17 days agoWed, 29 Jul 2026 02:30:56 UTC | 0x8a5b…29ef | OUT | 0x1644…124f | 656,814.850412 HAAGA | High As A Giraffe's Ass (HAAGA) | |
| 0xc1f16a66…6cea67 | Transfer | 22,096,468 | 17 days agoWed, 29 Jul 2026 02:30:56 UTC | 0x8a5b…29ef | OUT | 0x1644…124f | 657,019.762273 HAAGA | High As A Giraffe's Ass (HAAGA) | |
| 0x5fb54bd5…288a84 | Transfer | 22,095,427 | 17 days agoWed, 29 Jul 2026 02:29:11 UTC | 0x1644…124f | IN | 0x8a5b…29ef | 43,100.589986 HAAGA | High As A Giraffe's Ass (HAAGA) | |
| 0x6b27a8dc…fdb12f | Transfer | 22,095,254 | 17 days agoWed, 29 Jul 2026 02:28:54 UTC | 0x1644…124f | IN | 0x8a5b…29ef | 17,245.225228 HAAGA | High As A Giraffe's Ass (HAAGA) | |
| 0x09b41cb7…748a3a | Transfer | 22,095,139 | 17 days agoWed, 29 Jul 2026 02:28:42 UTC | 0x1644…124f | IN | 0x8a5b…29ef | 347.605692 HAAGA | High As A Giraffe's Ass (HAAGA) | |
| 0x21eb993e…bd7204 | Transfer | 22,083,174 | 17 days agoWed, 29 Jul 2026 02:08:43 UTC | 0x1644…124f | IN | 0x8a5b…29ef | 1,253,346.103638 HAAGA | High As A Giraffe's Ass (HAAGA) |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x39f165…9f6d84 | Approve | 30,472,209 | 8 days agoFri, 07 Aug 2026 19:44:28 UTC | 0xd66b…ea4f | IN | High As A Giraffe's Ass | $0.000 ETH | 0.00000140 | |
| 0xaac8ab…5a20f2 | Approve | 30,260,692 | 8 days agoFri, 07 Aug 2026 13:51:21 UTC | 0x695c…90b3 | IN | High As A Giraffe's Ass | $0.000 ETH | 0.00000137 | |
| 0xfd8fa0…9078d8 | Approve | 23,067,603 | 16 days agoThu, 30 Jul 2026 05:34:01 UTC | 0x695c…90b3 | IN | High As A Giraffe's Ass | $0.000 ETH | 0.00000094 | |
| 0x5f8743…8e98d2 | Transfer | 23,045,598 | 16 days agoThu, 30 Jul 2026 04:57:10 UTC | 0x695c…90b3 | IN | High As A Giraffe's Ass | $0.000 ETH | 0.00000320 | |
| 0xbef5b2…cf7136 | Transfer | 22,342,134 | 17 days agoWed, 29 Jul 2026 09:21:59 UTC | 0x695c…90b3 | IN | High As A Giraffe's Ass | $0.000 ETH | 0.00000384 | |
| 0xee17b3…0cd2c8 | Approve | 22,096,237 | 17 days agoWed, 29 Jul 2026 02:30:33 UTC | 0x673e…6767 | IN | High As A Giraffe's Ass | $0.000 ETH | 0.00000129 | |
| 0x2ac7f5…8e852a | Approve | 22,083,180 | 17 days agoWed, 29 Jul 2026 02:08:44 UTC | 0xcce6…e6e6 | IN | High As A Giraffe's Ass | $0.000 ETH | 0.00000129 | |
| 0xdf28eb…b2c134 | startTrading | 22,080,264 | 17 days agoWed, 29 Jul 2026 02:03:52 UTC | 0x695c…90b3 | IN | High As A Giraffe's Ass | $0.000 ETH | 0.00000192 | |
| 0xd76292…0fb3f5 | setSellTax | 21,998,181 | 18 days agoTue, 28 Jul 2026 23:46:55 UTC | 0x695c…90b3 | IN | High As A Giraffe's Ass | $0.000 ETH | 0.00000130 | |
| 0xff2287…96fef2 | setBuyTax | 21,994,458 | 18 days agoTue, 28 Jul 2026 23:40:42 UTC | 0x695c…90b3 | IN | High As A Giraffe's Ass | $0.000 ETH | 0.00000131 | |
| 0xf7c83e…a2160b | Transfer | 21,992,759 | 18 days agoTue, 28 Jul 2026 23:37:54 UTC | 0x695c…90b3 | IN | High As A Giraffe's Ass | $0.000 ETH | 0.00000227 | |
| 0x4c2ba8…8a79ea | Transfer | 21,990,464 | 18 days agoTue, 28 Jul 2026 23:34:03 UTC | 0x695c…90b3 | IN | High As A Giraffe's Ass | $0.000 ETH | 0.00000457 | |
| 0xeb46ec…b95944 | Transfer | 21,989,064 | 18 days agoTue, 28 Jul 2026 23:31:45 UTC | 0x695c…90b3 | IN | High As A Giraffe's Ass | $0.000 ETH | 0.00000497 | |
| 0x489459…45d8f2 | Approve | 21,985,014 | 18 days agoTue, 28 Jul 2026 23:25:00 UTC | 0x695c…90b3 | IN | High As A Giraffe's Ass | $0.000 ETH | 0.00000130 | |
| 0xdf64d2…0254fb | initialize | 21,850,938 | 18 days agoTue, 28 Jul 2026 19:41:14 UTC | 0x695c…90b3 | IN | High As A Giraffe's Ass | $0.000 ETH | 0.00010846 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 22,096,468 | 17 days agoWed, 29 Jul 2026 02:30:56 UTC | 0xc1f16a…6cea67 | CALL | multicall | 0x8a5b…29ef | OUT | 0x89e5…9eba | 0.00000 ETH |
| 22,096,468 | 17 days agoWed, 29 Jul 2026 02:30:56 UTC | 0xc1f16a…6cea67 | CALL | multicall | 0x89e5…9eba | IN | 0x8a5b…29ef | 0.00000 ETH |
| 21,850,938 | 18 days agoTue, 28 Jul 2026 19:41:14 UTC | 0xdf64d2…0254fb | CREATE | initialize | 0x8a5b…29ef | OUT | 0xe570…67b3 | 0 ETH |