// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;
interface IUniswapV2Router {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
/// @title HoodToken — parametrized ERC-20 launched by the DeployHood bot (Robinhood Chain).
/// Every token the bot deploys is this EXACT source; only constructor args change,
/// so verification is uniform and buyers can diff nothing.
/// Honeypot-safe by construction:
/// - no mint, no blacklist, no pause, no transfer hooks
/// - buy/sell fee hard-capped at 10% (MAX_FEE_BPS) forever
/// - maxTx/maxWallet: either disabled (0) or >= 0.5% of supply, raise-only after,
/// and optionally AUTO-LIFTING to full supply over liftSeconds (no owner needed)
/// - sniper shield: an optional whitelist window (wlSeconds, max 1h) right after
/// launch that gates BUYS ONLY — sells are NEVER blocked, the list can only
/// grow, and the window expires forever on its own (immutable)
/// - feeBurnBps: an optional share of every fee is burned to 0x…dEaD in the same
/// transaction — verifiable on every trade
/// - the fee->ETH swapback is wrapped in try/catch: a failing swap can never block a sell
contract HoodToken {
struct Config {
string name;
string symbol;
uint256 supplyTokens; // whole tokens; 18 decimals are added here
uint256 maxTxBps; // 0 = no limit; else 50-10000
uint256 maxWalletBps; // 0 = no limit; else 50-10000
uint256 buyFeeBps; // <= 1000 (10%)
uint256 sellFeeBps; // <= 1000 (10%)
address feeReceiver; // gets the non-burned fees AS ETH; address(0) = deployer
uint256 burnBps; // % of supply sent to 0x…dEaD at deploy, <= 9000
uint256 feeBurnBps; // share OF EACH FEE burned to 0x…dEaD, 0-10000
uint256 wlSeconds; // sniper shield: WL-only BUYS for this long after launch, <= 3600
uint256 liftSeconds; // limits auto-lift to full supply over this window, <= 86400
}
string public name;
string public symbol;
uint8 public constant decimals = 18;
uint256 public immutable totalSupply;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
address public owner;
address public pair;
address public feeReceiver; // receives the non-burned fee AS ETH (via swapback)
uint256 public launchTime; // set once in setPair — anchors the WL window and the auto-lift
// Robinhood Chain V2 infra (the same DEX the bot adds liquidity to)
address public constant ROUTER = 0x89e5DB8B5aA49aA85AC63f691524311AEB649eba;
address public constant WETH = 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73;
bool public limitsActive;
uint256 public maxTx;
uint256 public maxWallet;
uint256 public constant LIMIT_FLOOR_BPS = 50; // limits can never start below 0.5% of supply
uint256 public constant MAX_FEE_BPS = 1000; // 10% hard cap — fees can never exceed this
uint256 public constant MAX_BURN_BPS = 9000; // can't burn more than 90% at launch
uint256 public constant MAX_WL_SECONDS = 3600; // sniper shield can't outlive 1h
uint256 public constant MAX_LIFT_SECONDS = 86400; // auto-lift finishes within 24h
uint256 public buyFeeBps;
uint256 public sellFeeBps;
uint256 public feeBurnBps; // share of each fee burned; owner-adjustable, capped 100%
uint256 public immutable wlSeconds;
uint256 public immutable liftSeconds;
// fee -> ETH swapback
bool public swapEnabled = true;
uint256 public swapThreshold; // min collected tokens to trigger a swap
bool private inSwap;
mapping(address => bool) public excludedFromLimits;
mapping(address => bool) public excludedFromFees;
mapping(address => bool) public whitelisted; // add-only, only matters during the WL window
address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed holder, address indexed spender, uint256 value);
event OwnershipTransferred(address indexed prev, address indexed next);
event LimitsRaised(uint256 maxTx, uint256 maxWallet);
event LimitsRemoved();
event PairSet(address pair);
event FeesSet(uint256 buyFeeBps, uint256 sellFeeBps);
event FeeBurnSet(uint256 feeBurnBps);
event FeeReceiverSet(address receiver);
event SwapSettings(bool enabled, uint256 threshold);
event ExcludedFromLimits(address indexed account, bool excluded);
event ExcludedFromFees(address indexed account, bool excluded);
event Whitelisted(address indexed account);
modifier onlyOwner() {
require(msg.sender == owner, "not owner");
_;
}
modifier swapping() {
inSwap = true;
_;
inSwap = false;
}
constructor(Config memory c) {
require(bytes(c.name).length >= 1 && bytes(c.name).length <= 64, "bad name");
require(bytes(c.symbol).length >= 1 && bytes(c.symbol).length <= 16, "bad symbol");
require(c.supplyTokens >= 1 && c.supplyTokens <= 1e15, "bad supply");
require(c.buyFeeBps <= MAX_FEE_BPS && c.sellFeeBps <= MAX_FEE_BPS, "fee > 10%");
require(c.maxTxBps == 0 || (c.maxTxBps >= LIMIT_FLOOR_BPS && c.maxTxBps <= 10000), "bad maxTx");
require(
c.maxWalletBps == 0 || (c.maxWalletBps >= LIMIT_FLOOR_BPS && c.maxWalletBps <= 10000),
"bad maxWallet"
);
require(c.burnBps <= MAX_BURN_BPS, "burn > 90%");
require(c.feeBurnBps <= 10000, "bad feeBurn");
require(c.wlSeconds <= MAX_WL_SECONDS, "wl > 1h");
require(c.liftSeconds <= MAX_LIFT_SECONDS, "lift > 24h");
owner = msg.sender;
name = c.name;
symbol = c.symbol;
uint256 supply = c.supplyTokens * 1e18;
totalSupply = supply;
feeReceiver = c.feeReceiver == address(0) ? msg.sender : c.feeReceiver;
buyFeeBps = c.buyFeeBps;
sellFeeBps = c.sellFeeBps;
feeBurnBps = c.feeBurnBps;
wlSeconds = c.wlSeconds;
liftSeconds = c.liftSeconds;
limitsActive = c.maxTxBps > 0 || c.maxWalletBps > 0;
maxTx = c.maxTxBps == 0 ? supply : (supply * c.maxTxBps) / 10000;
maxWallet = c.maxWalletBps == 0 ? supply : (supply * c.maxWalletBps) / 10000;
swapThreshold = supply / 1000; // 0.1%
excludedFromLimits[msg.sender] = true;
excludedFromLimits[address(this)] = true;
excludedFromLimits[DEAD] = true;
excludedFromLimits[ROUTER] = true;
excludedFromLimits[feeReceiver] = true;
excludedFromFees[msg.sender] = true;
excludedFromFees[address(this)] = true;
excludedFromFees[DEAD] = true;
excludedFromFees[feeReceiver] = true;
whitelisted[msg.sender] = true;
whitelisted[feeReceiver] = true;
whitelisted[ROUTER] = true;
// pre-approve the router so the contract can swap its collected fees to ETH
allowance[address(this)][ROUTER] = type(uint256).max;
uint256 burnAmt = (supply * c.burnBps) / 10000;
if (burnAmt > 0) {
balanceOf[DEAD] = burnAmt;
emit Transfer(address(0), DEAD, burnAmt);
}
balanceOf[msg.sender] = supply - burnAmt;
emit Transfer(address(0), msg.sender, supply - burnAmt);
}
receive() external payable {}
// ------------------------------------------------------------------ admin
function setPair(address p) external onlyOwner {
require(pair == address(0), "pair already set");
require(p != address(0), "zero pair");
pair = p;
launchTime = block.timestamp; // ancla la ventana WL y el auto-lift
emit PairSet(p);
}
/// Sniper shield: add buyers to the launch whitelist. ADD-ONLY by design —
/// there is no removal, so the list can never be used to trap anyone.
function addWhitelist(address[] calldata accts) external onlyOwner {
for (uint256 i = 0; i < accts.length; i++) {
whitelisted[accts[i]] = true;
emit Whitelisted(accts[i]);
}
}
function setExcludedFromLimits(address a, bool e) external onlyOwner {
excludedFromLimits[a] = e;
emit ExcludedFromLimits(a, e);
}
function setExcludedFromFees(address a, bool e) external onlyOwner {
excludedFromFees[a] = e;
emit ExcludedFromFees(a, e);
}
function raiseLimits(uint256 newMaxTx, uint256 newMaxWallet) external onlyOwner {
require(newMaxTx >= maxTx && newMaxWallet >= maxWallet, "raise only");
maxTx = newMaxTx;
maxWallet = newMaxWallet;
emit LimitsRaised(newMaxTx, newMaxWallet);
}
function removeLimits() external onlyOwner {
limitsActive = false;
emit LimitsRemoved();
}
/// Effective limits right now, accounting for the auto-lift.
function currentLimits() public view returns (uint256 mTx, uint256 mW) {
if (!limitsActive) return (totalSupply, totalSupply);
mTx = maxTx;
mW = maxWallet;
if (liftSeconds > 0 && launchTime > 0) {
uint256 el = block.timestamp - launchTime;
if (el >= liftSeconds) return (totalSupply, totalSupply);
mTx += ((totalSupply - mTx) * el) / liftSeconds;
mW += ((totalSupply - mW) * el) / liftSeconds;
}
}
function setFees(uint256 newBuyBps, uint256 newSellBps) external onlyOwner {
require(newBuyBps <= MAX_FEE_BPS && newSellBps <= MAX_FEE_BPS, "fee > 10%");
buyFeeBps = newBuyBps;
sellFeeBps = newSellBps;
emit FeesSet(newBuyBps, newSellBps);
}
/// Adjust how much of each fee is burned to 0x…dEaD (vs swapped to ETH for the dev).
function setFeeBurn(uint256 bps) external onlyOwner {
require(bps <= 10000, "bad feeBurn");
feeBurnBps = bps;
emit FeeBurnSet(bps);
}
function setFeeReceiver(address r) external onlyOwner {
require(r != address(0), "zero receiver");
feeReceiver = r;
excludedFromLimits[r] = true;
excludedFromFees[r] = true;
emit FeeReceiverSet(r);
}
function setSwapSettings(bool enabled, uint256 threshold) external onlyOwner {
require(threshold > 0, "threshold 0");
swapEnabled = enabled;
swapThreshold = threshold;
emit SwapSettings(enabled, threshold);
}
/// Manually convert the fees sitting in the contract to ETH -> feeReceiver.
function manualSwap() external onlyOwner {
_swapBack();
}
/// Sweep any ETH that ends up in the contract to the feeReceiver.
function rescueETH() external onlyOwner {
(bool ok, ) = feeReceiver.call{value: address(this).balance}("");
require(ok, "eth send failed");
}
/// Last resort: if the auto-swap ever became permanently impossible, pull the
/// fee tokens sitting in the contract out to the feeReceiver to sell by hand.
/// Only ever touches the contract's own collected fees, never a holder's balance.
function rescueTokens() external onlyOwner {
uint256 amt = balanceOf[address(this)];
if (amt == 0) return;
balanceOf[address(this)] -= amt;
balanceOf[feeReceiver] += amt;
emit Transfer(address(this), feeReceiver, amt);
}
function transferOwnership(address next) external onlyOwner {
require(next != address(0), "zero owner");
emit OwnershipTransferred(owner, next);
owner = next;
excludedFromLimits[next] = true;
excludedFromFees[next] = true;
whitelisted[next] = true;
}
function renounceOwnership() external onlyOwner {
emit OwnershipTransferred(owner, address(0));
owner = address(0);
}
// ------------------------------------------------------------------ erc20
function transfer(address to, uint256 value) external returns (bool) {
_transfer(msg.sender, to, value);
return true;
}
function approve(address spender, uint256 value) external returns (bool) {
allowance[msg.sender][spender] = value;
emit Approval(msg.sender, spender, value);
return true;
}
function transferFrom(address from, address to, uint256 value) external returns (bool) {
uint256 allowed = allowance[from][msg.sender];
require(allowed >= value, "insufficient allowance");
if (allowed != type(uint256).max) {
allowance[from][msg.sender] = allowed - value;
}
_transfer(from, to, value);
return true;
}
// ------------------------------------------------------------------ core
function _transfer(address from, address to, uint256 value) internal {
require(to != address(0), "transfer to zero");
require(balanceOf[from] >= value, "insufficient balance");
// during the contract's own fee->ETH swap, move tokens plainly (no fee/limits/recursion)
if (inSwap) {
_basic(from, to, value);
return;
}
// sniper shield: during the WL window only whitelisted addresses can BUY.
// Sells (to == pair) are deliberately untouched — no honeypot possible.
if (wlSeconds > 0 && from == pair && launchTime > 0
&& block.timestamp < launchTime + wlSeconds) {
require(whitelisted[to], "whitelist phase");
}
if (limitsActive && !excludedFromLimits[from] && !excludedFromLimits[to]) {
(uint256 mTx, uint256 mW) = currentLimits();
require(value <= mTx, "over maxTx");
if (to != pair && to != DEAD) {
require(balanceOf[to] + value <= mW, "over maxWallet");
}
}
// on a sell, convert the fees collected so far into ETH for the feeReceiver
if (swapEnabled && pair != address(0) && to == pair && !excludedFromFees[from]
&& balanceOf[address(this)] >= swapThreshold) {
_swapBack();
}
uint256 fee = 0;
if (pair != address(0)) {
if (from == pair && !excludedFromFees[to]) {
fee = (value * buyFeeBps) / 10000;
} else if (to == pair && !excludedFromFees[from]) {
fee = (value * sellFeeBps) / 10000;
}
}
balanceOf[from] -= value;
if (fee > 0) {
uint256 fb = (fee * feeBurnBps) / 10000;
if (fb > 0) {
balanceOf[DEAD] += fb; // parte del fee se QUEMA en la misma tx
emit Transfer(from, DEAD, fb);
}
uint256 rest = fee - fb;
if (rest > 0) {
balanceOf[address(this)] += rest; // el resto espera el swap a ETH
emit Transfer(from, address(this), rest);
}
}
balanceOf[to] += value - fee;
emit Transfer(from, to, value - fee);
}
function _basic(address from, address to, uint256 value) private {
balanceOf[from] -= value;
balanceOf[to] += value;
emit Transfer(from, to, value);
}
/// Swaps up to a capped chunk of collected fee tokens to ETH, sent to feeReceiver.
/// try/catch: a failed swap never blocks the user's transfer (no honeypot).
function _swapBack() private swapping {
uint256 amt = balanceOf[address(this)];
uint256 cap = swapThreshold * 15;
if (amt > cap) amt = cap;
if (amt == 0) return;
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = WETH;
try IUniswapV2Router(ROUTER).swapExactTokensForETHSupportingFeeOnTransferTokens(
amt, 0, path, feeReceiver, block.timestamp
) {} catch {}
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "c",
"type": "tuple",
"components": [
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"internalType": "string"
},
{
"name": "supplyTokens",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "maxTxBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "maxWalletBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "buyFeeBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "sellFeeBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "feeReceiver",
"type": "address",
"internalType": "address"
},
{
"name": "burnBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "feeBurnBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "wlSeconds",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "liftSeconds",
"type": "uint256",
"internalType": "uint256"
}
],
"internalType": "struct HoodToken.Config"
}
],
"stateMutability": "nonpayable"
},
{
"name": "Approval",
"type": "event",
"inputs": [
{
"name": "holder",
"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": "ExcludedFromFees",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "excluded",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "ExcludedFromLimits",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "excluded",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "FeeBurnSet",
"type": "event",
"inputs": [
{
"name": "feeBurnBps",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FeeReceiverSet",
"type": "event",
"inputs": [
{
"name": "receiver",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "FeesSet",
"type": "event",
"inputs": [
{
"name": "buyFeeBps",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "sellFeeBps",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "LimitsRaised",
"type": "event",
"inputs": [
{
"name": "maxTx",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "maxWallet",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "LimitsRemoved",
"type": "event",
"inputs": [],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "prev",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "next",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "PairSet",
"type": "event",
"inputs": [
{
"name": "pair",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "SwapSettings",
"type": "event",
"inputs": [
{
"name": "enabled",
"type": "bool",
"indexed": false,
"internalType": "bool"
},
{
"name": "threshold",
"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": "Whitelisted",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "LIMIT_FLOOR_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MAX_BURN_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MAX_FEE_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MAX_LIFT_SECONDS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MAX_WL_SECONDS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "ROUTER",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "WETH",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "addWhitelist",
"type": "function",
"inputs": [
{
"name": "accts",
"type": "address[]",
"internalType": "address[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "allowance",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"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": "balanceOf",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "buyFeeBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "currentLimits",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "mTx",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "mW",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "excludedFromFees",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "excludedFromLimits",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "feeBurnBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "feeReceiver",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "launchTime",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "liftSeconds",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "limitsActive",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "manualSwap",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "maxTx",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "maxWallet",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"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": "pair",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "raiseLimits",
"type": "function",
"inputs": [
{
"name": "newMaxTx",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "newMaxWallet",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "removeLimits",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "rescueETH",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "rescueTokens",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "sellFeeBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "setExcludedFromFees",
"type": "function",
"inputs": [
{
"name": "a",
"type": "address",
"internalType": "address"
},
{
"name": "e",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setExcludedFromLimits",
"type": "function",
"inputs": [
{
"name": "a",
"type": "address",
"internalType": "address"
},
{
"name": "e",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setFeeBurn",
"type": "function",
"inputs": [
{
"name": "bps",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setFeeReceiver",
"type": "function",
"inputs": [
{
"name": "r",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setFees",
"type": "function",
"inputs": [
{
"name": "newBuyBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "newSellBps",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setPair",
"type": "function",
"inputs": [
{
"name": "p",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setSwapSettings",
"type": "function",
"inputs": [
{
"name": "enabled",
"type": "bool",
"internalType": "bool"
},
{
"name": "threshold",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "swapEnabled",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "swapThreshold",
"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": "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": "next",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "whitelisted",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "wlSeconds",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x60e0604052600e805460ff191660011790553480156200001d575f80fd5b5060405162002da438038062002da4833981016040819052620000409162000845565b805151600111801590620000575750805151604010155b620000945760405162461bcd60e51b8152602060048201526008602482015267626164206e616d6560c01b60448201526064015b60405180910390fd5b600181602001515110158015620000b15750601081602001515111155b620000ec5760405162461bcd60e51b815260206004820152600a602482015269189859081cde5b589bdb60b21b60448201526064016200008b565b60018160400151101580156200010d575066038d7ea4c68000816040015111155b620001485760405162461bcd60e51b815260206004820152600a60248201526962616420737570706c7960b01b60448201526064016200008b565b6103e88160a00151111580156200016557506103e88160c0015111155b6200019f5760405162461bcd60e51b8152602060048201526009602482015268666565203e2031302560b81b60448201526064016200008b565b60608101511580620001c857506032816060015110158015620001c85750612710816060015111155b620002025760405162461bcd60e51b81526020600482015260096024820152680c4c2c840dac2f0a8f60bb1b60448201526064016200008b565b608081015115806200022b575060328160800151101580156200022b5750612710816080015111155b620002695760405162461bcd60e51b815260206004820152600d60248201526c189859081b585e15d85b1b195d609a1b60448201526064016200008b565b6123288161010001511115620002af5760405162461bcd60e51b815260206004820152600a6024820152696275726e203e2039302560b01b60448201526064016200008b565b6127108161012001511115620002f65760405162461bcd60e51b815260206004820152600b60248201526a3130b2103332b2a13ab93760a91b60448201526064016200008b565b610e108161014001511115620003395760405162461bcd60e51b81526020600482015260076024820152660eed8407c4062d60cb1b60448201526064016200008b565b620151808161016001511115620003805760405162461bcd60e51b815260206004820152600a6024820152690d8d2cce8407c406468d60b31b60448201526064016200008b565b600480546001600160a01b0319163317905580515f90620003a29082620009d8565b506020810151600190620003b79082620009d8565b505f8160400151670de0b6b3a7640000620003d3919062000ab8565b608081905260e08301519091506001600160a01b031615620003fa578160e00151620003fc565b335b600680546001600160a01b0319166001600160a01b039290921691909117905560a082810151600b5560c080840151600c55610120840151600d55610140840151909152610160830151905260608201511515806200045e57505f8260800151115b6008805460ff1916911515919091179055606082015115620004a1576127108260600151826200048f919062000ab8565b6200049b919062000ad8565b620004a3565b805b600955608082015115620004d857612710826080015182620004c6919062000ab8565b620004d2919062000ad8565b620004da565b805b600a55620004eb6103e88262000ad8565b600f55335f8181526011602090815260408083208054600160ff1991821681179092553080865283862080548316841790557f97847ee99463795296047093514439c3127772df3715e628aa85601cf854171680548316841790557f8efc92767ab0f9ec46fb80e3cdf4ec106f42342370af5d316fa5c340013a6ef28054831684179055600680546001600160a01b039081168852858820805485168617905588885260128752858820805485168617905582885285882080548516861790557f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f78054851686179055815481168852858820805485168617905597875260138652848720805484168517905554909616855282852080548216831790557fbf5fb7ec61b24b565d101f0922a09e94df7187574a9b3f6d16d4b31df4a1b44280549091169091179055928252600381528282207389e5db8b5aa49aa85ac63f691524311aeb649eba835290529081205f1990556101008301516127109062000673908462000ab8565b6200067f919062000ad8565b90508015620006da5761dead5f818152600260209081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc8490556040518481525f8051602062002d84833981519152910160405180910390a35b620006e6818362000af8565b335f81815260026020526040812092909255905f8051602062002d8483398151915262000714848662000af8565b60405190815260200160405180910390a350505062000b0e565b634e487b7160e01b5f52604160045260245ffd5b60405161018081016001600160401b03811182821017156200076857620007686200072e565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200079957620007996200072e565b604052919050565b5f82601f830112620007b1575f80fd5b81516001600160401b03811115620007cd57620007cd6200072e565b6020620007e3601f8301601f191682016200076e565b8281528582848701011115620007f7575f80fd5b5f5b8381101562000816578581018301518282018401528201620007f9565b505f928101909101919091529392505050565b80516001600160a01b038116811462000840575f80fd5b919050565b5f6020828403121562000856575f80fd5b81516001600160401b03808211156200086d575f80fd5b90830190610180828603121562000882575f80fd5b6200088c62000742565b8251828111156200089b575f80fd5b620008a987828601620007a1565b825250602083015182811115620008be575f80fd5b620008cc87828601620007a1565b60208301525060408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c08201526200091260e0840162000829565b60e08201526101008381015190820152610120808401519082015261014080840151908201526101609283015192810192909252509392505050565b600181811c908216806200096357607f821691505b6020821081036200098257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620009d357805f5260205f20601f840160051c81016020851015620009af5750805b601f840160051c820191505b81811015620009d0575f8155600101620009bb565b50505b505050565b81516001600160401b03811115620009f457620009f46200072e565b62000a0c8162000a0584546200094e565b8462000988565b602080601f83116001811462000a42575f841562000a2a5750858301515b5f19600386901b1c1916600185901b17855562000a9c565b5f85815260208120601f198616915b8281101562000a725788860151825594840194600190910190840162000a51565b508582101562000a9057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141762000ad25762000ad262000aa4565b92915050565b5f8262000af357634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111562000ad25762000ad262000aa4565b60805160a05160c05161220562000b7f5f395f818161066301528181610ed801528181610f1e01528181610f6f0152610fdb01525f81816105240152818161176701526117b601525f818161035d01528181610ea901528181610f4601528181610f95015261100101526122055ff3fe6080604052600436106102a8575f3560e01c806377d2300e1161016f578063b3f00674116100d8578063dd8c2e0f11610092578063edac985b1161006d578063edac985b14610856578063efdcd97414610875578063f2fde38b14610894578063f8b45b05146108b3575f80fd5b8063dd8c2e0f14610817578063e4786a5e1461082b578063ed55ab7214610840575f80fd5b8063b3f0067414610732578063d0e1032614610751578063d55be8c614610770578063d936547e14610785578063dbe66ca0146107b3578063dd62ed3e146107e1575f80fd5b80638da5cb5b116101295780638da5cb5b1461068557806395d89b41146106a4578063a8aa1b31146106b8578063a9059cbb146106d7578063a9d3a8ee146106f6578063ad5c46481461070b575f80fd5b806377d2300e146105c7578063790ca413146105dc5780637b812b41146105f15780638187f5161461061f57806381c83b7d1461063e5780638c81e65414610652575f80fd5b806332fe7b2611610211578063671f2ea3116101cb578063671f2ea3146105135780636ddd17131461054657806370a082311461055f578063715018a61461058a5780637437681e1461059e578063751039fc146105b3575f80fd5b806332fe7b261461043a57806336fddb041461047957806351bc3c85146104985780635838dd87146104ac578063590ffdce146104cb5780635eef9e5a146104ea575f80fd5b80631d5514f7116102625780631d5514f71461039857806320800a00146103ad578063215bdfce146103c157806323b872dd146103e057806323cbe1f3146103ff578063313ce56714610414575f80fd5b80630445b667146102b357806306fdde03146102db578063095ea7b3146102fc5780630b78f9c01461032b57806318160ddd1461034c5780631cce34ee1461037f575f80fd5b366102af57005b5f80fd5b3480156102be575f80fd5b506102c8600f5481565b6040519081526020015b60405180910390f35b3480156102e6575f80fd5b506102ef6108c8565b6040516102d29190611e4f565b348015610307575f80fd5b5061031b610316366004611eb6565b610953565b60405190151581526020016102d2565b348015610336575f80fd5b5061034a610345366004611ede565b6109bf565b005b348015610357575f80fd5b506102c87f000000000000000000000000000000000000000000000000000000000000000081565b34801561038a575f80fd5b5060085461031b9060ff1681565b3480156103a3575f80fd5b506102c8600d5481565b3480156103b8575f80fd5b5061034a610a86565b3480156103cc575f80fd5b5061034a6103db366004611ede565b610b45565b3480156103eb575f80fd5b5061031b6103fa366004611efe565b610bfc565b34801561040a575f80fd5b506102c8600c5481565b34801561041f575f80fd5b50610428601281565b60405160ff90911681526020016102d2565b348015610445575f80fd5b506104617389e5db8b5aa49aa85ac63f691524311aeb649eba81565b6040516001600160a01b0390911681526020016102d2565b348015610484575f80fd5b5061034a610493366004611f46565b610cb4565b3480156104a3575f80fd5b5061034a610d3d565b3480156104b7575f80fd5b5061034a6104c6366004611f77565b610d71565b3480156104d6575f80fd5b5061034a6104e5366004611f46565b610e17565b3480156104f5575f80fd5b506104fe610e98565b604080519283526020830191909152016102d2565b34801561051e575f80fd5b506102c87f000000000000000000000000000000000000000000000000000000000000000081565b348015610551575f80fd5b50600e5461031b9060ff1681565b34801561056a575f80fd5b506102c8610579366004611f8e565b60026020525f908152604090205481565b348015610595575f80fd5b5061034a61104b565b3480156105a9575f80fd5b506102c860095481565b3480156105be575f80fd5b5061034a6110be565b3480156105d2575f80fd5b506102c8600b5481565b3480156105e7575f80fd5b506102c860075481565b3480156105fc575f80fd5b5061031b61060b366004611f8e565b60116020525f908152604090205460ff1681565b34801561062a575f80fd5b5061034a610639366004611f8e565b61111c565b348015610649575f80fd5b506102c8603281565b34801561065d575f80fd5b506102c87f000000000000000000000000000000000000000000000000000000000000000081565b348015610690575f80fd5b50600454610461906001600160a01b031681565b3480156106af575f80fd5b506102ef611226565b3480156106c3575f80fd5b50600554610461906001600160a01b031681565b3480156106e2575f80fd5b5061031b6106f1366004611eb6565b611233565b348015610701575f80fd5b506102c8610e1081565b348015610716575f80fd5b50610461730bd7d308f8e1639fab988df18a8011f41eacad7381565b34801561073d575f80fd5b50600654610461906001600160a01b031681565b34801561075c575f80fd5b5061034a61076b366004611fae565b611248565b34801561077b575f80fd5b506102c86103e881565b348015610790575f80fd5b5061031b61079f366004611f8e565b60136020525f908152604090205460ff1681565b3480156107be575f80fd5b5061031b6107cd366004611f8e565b60126020525f908152604090205460ff1681565b3480156107ec575f80fd5b506102c86107fb366004611fc8565b600360209081525f928352604080842090915290825290205481565b348015610822575f80fd5b5061034a6112fb565b348015610836575f80fd5b506102c861232881565b34801561084b575f80fd5b506102c86201518081565b348015610861575f80fd5b5061034a610870366004611ff0565b6113c4565b348015610880575f80fd5b5061034a61088f366004611f8e565b6114b4565b34801561089f575f80fd5b5061034a6108ae366004611f8e565b6115a0565b3480156108be575f80fd5b506102c8600a5481565b5f80546108d49061205f565b80601f01602080910402602001604051908101604052809291908181526020018280546109009061205f565b801561094b5780601f106109225761010080835404028352916020019161094b565b820191905f5260205f20905b81548152906001019060200180831161092e57829003601f168201915b505050505081565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109ad9086815260200190565b60405180910390a35060015b92915050565b6004546001600160a01b031633146109f25760405162461bcd60e51b81526004016109e990612097565b60405180910390fd5b6103e88211158015610a0657506103e88111155b610a3e5760405162461bcd60e51b8152602060048201526009602482015268666565203e2031302560b81b60448201526064016109e9565b600b829055600c81905560408051838152602081018390527f93525d3c7f4fafe56faedbca6d501a13c63f47857d8b30d8282ec2dd806259a791015b60405180910390a15050565b6004546001600160a01b03163314610ab05760405162461bcd60e51b81526004016109e990612097565b6006546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610afa576040519150601f19603f3d011682016040523d82523d5f602084013e610aff565b606091505b5050905080610b425760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b60448201526064016109e9565b50565b6004546001600160a01b03163314610b6f5760405162461bcd60e51b81526004016109e990612097565b6009548210158015610b835750600a548110155b610bbc5760405162461bcd60e51b815260206004820152600a6024820152697261697365206f6e6c7960b01b60448201526064016109e9565b6009829055600a81905560408051838152602081018390527f5e8958387a7cfa1a22c2b5c90e23d3aa4c13aac67a9b2439e69dfa67b3c569769101610a7a565b6001600160a01b0383165f90815260036020908152604080832033845290915281205482811015610c685760405162461bcd60e51b8152602060048201526016602482015275696e73756666696369656e7420616c6c6f77616e636560501b60448201526064016109e9565b5f198114610c9e57610c7a83826120ce565b6001600160a01b0386165f9081526003602090815260408083203384529091529020555b610ca98585856116a7565b506001949350505050565b6004546001600160a01b03163314610cde5760405162461bcd60e51b81526004016109e990612097565b6001600160a01b0382165f81815260116020908152604091829020805460ff191685151590811790915591519182527f74392251b09500cc108c71712e5e7e0392be9075a74a24f1494551cfa8e0687091015b60405180910390a25050565b6004546001600160a01b03163314610d675760405162461bcd60e51b81526004016109e990612097565b610d6f611c61565b565b6004546001600160a01b03163314610d9b5760405162461bcd60e51b81526004016109e990612097565b612710811115610ddb5760405162461bcd60e51b815260206004820152600b60248201526a3130b2103332b2a13ab93760a91b60448201526064016109e9565b600d8190556040518181527f66dfcd4a1f8d7c50dece689cebfef7e8378cda70dc6569fbfbaa50d050865fc3906020015b60405180910390a150565b6004546001600160a01b03163314610e415760405162461bcd60e51b81526004016109e990612097565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb9101610d31565b6008545f90819060ff16610ece57507f000000000000000000000000000000000000000000000000000000000000000091829150565b5050600954600a547f000000000000000000000000000000000000000000000000000000000000000015801590610f0657505f600754115b15611047575f60075442610f1a91906120ce565b90507f00000000000000000000000000000000000000000000000000000000000000008110610f6d57507f0000000000000000000000000000000000000000000000000000000000000000928392509050565b7f000000000000000000000000000000000000000000000000000000000000000081610fb9857f00000000000000000000000000000000000000000000000000000000000000006120ce565b610fc391906120e1565b610fcd91906120f8565b610fd79084612117565b92507f000000000000000000000000000000000000000000000000000000000000000081611025847f00000000000000000000000000000000000000000000000000000000000000006120ce565b61102f91906120e1565b61103991906120f8565b6110439083612117565b9150505b9091565b6004546001600160a01b031633146110755760405162461bcd60e51b81526004016109e990612097565b6004546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b6004546001600160a01b031633146110e85760405162461bcd60e51b81526004016109e990612097565b6008805460ff191690556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef905f90a1565b6004546001600160a01b031633146111465760405162461bcd60e51b81526004016109e990612097565b6005546001600160a01b0316156111925760405162461bcd60e51b815260206004820152601060248201526f1c185a5c88185b1c9958591e481cd95d60821b60448201526064016109e9565b6001600160a01b0381166111d45760405162461bcd60e51b81526020600482015260096024820152683d32b937903830b4b960b91b60448201526064016109e9565b600580546001600160a01b0319166001600160a01b038316908117909155426007556040519081527fc4a4ea6abc08bd7f8df3db8a1c998f19b3e0c348176f93732cd54db1a4b5013690602001610e0c565b600180546108d49061205f565b5f61123f3384846116a7565b50600192915050565b6004546001600160a01b031633146112725760405162461bcd60e51b81526004016109e990612097565b5f81116112af5760405162461bcd60e51b815260206004820152600b60248201526a07468726573686f6c6420360ac1b60448201526064016109e9565b600e805460ff1916831515908117909155600f82905560408051918252602082018390527f87ae8da42b41aff9dfe6568e1cf0ed00309aeb969f770e681e33bd628dccf8ee9101610a7a565b6004546001600160a01b031633146113255760405162461bcd60e51b81526004016109e990612097565b305f908152600260205260408120549081900361133f5750565b305f908152600260205260408120805483929061135d9084906120ce565b90915550506006546001600160a01b03165f908152600260205260408120805483929061138b908490612117565b90915550506006546040518281526001600160a01b039091169030905f805160206121b08339815191529060200160405180910390a350565b6004546001600160a01b031633146113ee5760405162461bcd60e51b81526004016109e990612097565b5f5b818110156114af57600160135f85858581811061140f5761140f61212a565b90506020020160208101906114249190611f8e565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905582828281811061145d5761145d61212a565b90506020020160208101906114729190611f8e565b6001600160a01b03167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a26001016113f0565b505050565b6004546001600160a01b031633146114de5760405162461bcd60e51b81526004016109e990612097565b6001600160a01b0381166115245760405162461bcd60e51b815260206004820152600d60248201526c3d32b937903932b1b2b4bb32b960991b60448201526064016109e9565b600680546001600160a01b0319166001600160a01b0383169081179091555f818152601160209081526040808320805460ff199081166001908117909255601284529382902080549094161790925590519182527fbdf37c276f641820b141429d245add2552b4118c0866e5a78638e3de5ef18d9d9101610e0c565b6004546001600160a01b031633146115ca5760405162461bcd60e51b81526004016109e990612097565b6001600160a01b03811661160d5760405162461bcd60e51b815260206004820152600a6024820152693d32b9379037bbb732b960b11b60448201526064016109e9565b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600480546001600160a01b039092166001600160a01b0319909216821790555f908152601160209081526040808320805460ff1990811660019081179092556012845282852080548216831790556013909352922080549091169091179055565b6001600160a01b0382166116f05760405162461bcd60e51b815260206004820152601060248201526f7472616e7366657220746f207a65726f60801b60448201526064016109e9565b6001600160a01b0383165f9081526002602052604090205481111561174e5760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b60448201526064016109e9565b60105460ff1615611764576114af838383611db6565b5f7f00000000000000000000000000000000000000000000000000000000000000001180156117a057506005546001600160a01b038481169116145b80156117ad57505f600754115b80156117e557507f00000000000000000000000000000000000000000000000000000000000000006007546117e29190612117565b42105b15611843576001600160a01b0382165f9081526013602052604090205460ff166118435760405162461bcd60e51b815260206004820152600f60248201526e77686974656c69737420706861736560881b60448201526064016109e9565b60085460ff16801561186d57506001600160a01b0383165f9081526011602052604090205460ff16155b801561189157506001600160a01b0382165f9081526011602052604090205460ff16155b15611976575f806118a0610e98565b91509150818311156118e15760405162461bcd60e51b815260206004820152600a6024820152690deeccae440dac2f0a8f60b31b60448201526064016109e9565b6005546001600160a01b0385811691161480159061190a57506001600160a01b03841661dead14155b15611973576001600160a01b0384165f908152600260205260409020548190611934908590612117565b11156119735760405162461bcd60e51b815260206004820152600e60248201526d1bdd995c881b585e15d85b1b195d60921b60448201526064016109e9565b50505b600e5460ff16801561199257506005546001600160a01b031615155b80156119ab57506005546001600160a01b038381169116145b80156119cf57506001600160a01b0383165f9081526012602052604090205460ff16155b80156119eb5750600f54305f9081526002602052604090205410155b156119f8576119f8611c61565b6005545f906001600160a01b031615611abf576005546001600160a01b038581169116148015611a4057506001600160a01b0383165f9081526012602052604090205460ff16155b15611a6757612710600b5483611a5691906120e1565b611a6091906120f8565b9050611abf565b6005546001600160a01b038481169116148015611a9c57506001600160a01b0384165f9081526012602052604090205460ff16155b15611abf57612710600c5483611ab291906120e1565b611abc91906120f8565b90505b6001600160a01b0384165f9081526002602052604081208054849290611ae69084906120ce565b90915550508015611bee575f612710600d5483611b0391906120e1565b611b0d91906120f8565b90508015611b875761dead5f90815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc8054839290611b52908490612117565b909155505060405181815261dead906001600160a01b038716905f805160206121b08339815191529060200160405180910390a35b5f611b9282846120ce565b90508015611beb57305f9081526002602052604081208054839290611bb8908490612117565b909155505060405181815230906001600160a01b038816905f805160206121b08339815191529060200160405180910390a35b50505b611bf881836120ce565b6001600160a01b0384165f9081526002602052604081208054909190611c1f908490612117565b90915550506001600160a01b038084169085165f805160206121b0833981519152611c4a84866120ce565b60405190815260200160405180910390a350505050565b6010805460ff19166001179055305f90815260026020526040812054600f8054919291611c8d916120e1565b905080821115611c9b578091505b815f03611ca9575050611daa565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611cdc57611cdc61212a565b60200260200101906001600160a01b031690816001600160a01b031681525050730bd7d308f8e1639fab988df18a8011f41eacad7381600181518110611d2457611d2461212a565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b81527389e5db8b5aa49aa85ac63f691524311aeb649eba9263791ac94792611d7d9288925f928892911690429060040161213e565b5f604051808303815f87803b158015611d94575f80fd5b505af1925050508015611da5575060015b505050505b6010805460ff19169055565b6001600160a01b0383165f9081526002602052604081208054839290611ddd9084906120ce565b90915550506001600160a01b0382165f9081526002602052604081208054839290611e09908490612117565b92505081905550816001600160a01b0316836001600160a01b03165f805160206121b083398151915283604051611e4291815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b81811015611e7b57858101830151858201604001528201611e5f565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611eb1575f80fd5b919050565b5f8060408385031215611ec7575f80fd5b611ed083611e9b565b946020939093013593505050565b5f8060408385031215611eef575f80fd5b50508035926020909101359150565b5f805f60608486031215611f10575f80fd5b611f1984611e9b565b9250611f2760208501611e9b565b9150604084013590509250925092565b80358015158114611eb1575f80fd5b5f8060408385031215611f57575f80fd5b611f6083611e9b565b9150611f6e60208401611f37565b90509250929050565b5f60208284031215611f87575f80fd5b5035919050565b5f60208284031215611f9e575f80fd5b611fa782611e9b565b9392505050565b5f8060408385031215611fbf575f80fd5b611ed083611f37565b5f8060408385031215611fd9575f80fd5b611fe283611e9b565b9150611f6e60208401611e9b565b5f8060208385031215612001575f80fd5b823567ffffffffffffffff80821115612018575f80fd5b818501915085601f83011261202b575f80fd5b813581811115612039575f80fd5b8660208260051b850101111561204d575f80fd5b60209290920196919550909350505050565b600181811c9082168061207357607f821691505b60208210810361209157634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156109b9576109b96120ba565b80820281158282048414176109b9576109b96120ba565b5f8261211257634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156109b9576109b96120ba565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561218e5784516001600160a01b031683529383019391830191600101612169565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e36cb9e9eb9b4e5d8f313cfbd09b0fecd5bffa35660e11932ebe74af23468dbe64736f6c63430008180033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000812ce64545607408c704269475cf529c50ec0cf700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009566572794d6963726f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054d4943524f000000000000000000000000000000000000000000000000000000
0x6080604052600436106102a8575f3560e01c806377d2300e1161016f578063b3f00674116100d8578063dd8c2e0f11610092578063edac985b1161006d578063edac985b14610856578063efdcd97414610875578063f2fde38b14610894578063f8b45b05146108b3575f80fd5b8063dd8c2e0f14610817578063e4786a5e1461082b578063ed55ab7214610840575f80fd5b8063b3f0067414610732578063d0e1032614610751578063d55be8c614610770578063d936547e14610785578063dbe66ca0146107b3578063dd62ed3e146107e1575f80fd5b80638da5cb5b116101295780638da5cb5b1461068557806395d89b41146106a4578063a8aa1b31146106b8578063a9059cbb146106d7578063a9d3a8ee146106f6578063ad5c46481461070b575f80fd5b806377d2300e146105c7578063790ca413146105dc5780637b812b41146105f15780638187f5161461061f57806381c83b7d1461063e5780638c81e65414610652575f80fd5b806332fe7b2611610211578063671f2ea3116101cb578063671f2ea3146105135780636ddd17131461054657806370a082311461055f578063715018a61461058a5780637437681e1461059e578063751039fc146105b3575f80fd5b806332fe7b261461043a57806336fddb041461047957806351bc3c85146104985780635838dd87146104ac578063590ffdce146104cb5780635eef9e5a146104ea575f80fd5b80631d5514f7116102625780631d5514f71461039857806320800a00146103ad578063215bdfce146103c157806323b872dd146103e057806323cbe1f3146103ff578063313ce56714610414575f80fd5b80630445b667146102b357806306fdde03146102db578063095ea7b3146102fc5780630b78f9c01461032b57806318160ddd1461034c5780631cce34ee1461037f575f80fd5b366102af57005b5f80fd5b3480156102be575f80fd5b506102c8600f5481565b6040519081526020015b60405180910390f35b3480156102e6575f80fd5b506102ef6108c8565b6040516102d29190611e4f565b348015610307575f80fd5b5061031b610316366004611eb6565b610953565b60405190151581526020016102d2565b348015610336575f80fd5b5061034a610345366004611ede565b6109bf565b005b348015610357575f80fd5b506102c87f00000000000000000000000000000000000000000000d3c21bcecceda100000081565b34801561038a575f80fd5b5060085461031b9060ff1681565b3480156103a3575f80fd5b506102c8600d5481565b3480156103b8575f80fd5b5061034a610a86565b3480156103cc575f80fd5b5061034a6103db366004611ede565b610b45565b3480156103eb575f80fd5b5061031b6103fa366004611efe565b610bfc565b34801561040a575f80fd5b506102c8600c5481565b34801561041f575f80fd5b50610428601281565b60405160ff90911681526020016102d2565b348015610445575f80fd5b506104617389e5db8b5aa49aa85ac63f691524311aeb649eba81565b6040516001600160a01b0390911681526020016102d2565b348015610484575f80fd5b5061034a610493366004611f46565b610cb4565b3480156104a3575f80fd5b5061034a610d3d565b3480156104b7575f80fd5b5061034a6104c6366004611f77565b610d71565b3480156104d6575f80fd5b5061034a6104e5366004611f46565b610e17565b3480156104f5575f80fd5b506104fe610e98565b604080519283526020830191909152016102d2565b34801561051e575f80fd5b506102c87f000000000000000000000000000000000000000000000000000000000000000081565b348015610551575f80fd5b50600e5461031b9060ff1681565b34801561056a575f80fd5b506102c8610579366004611f8e565b60026020525f908152604090205481565b348015610595575f80fd5b5061034a61104b565b3480156105a9575f80fd5b506102c860095481565b3480156105be575f80fd5b5061034a6110be565b3480156105d2575f80fd5b506102c8600b5481565b3480156105e7575f80fd5b506102c860075481565b3480156105fc575f80fd5b5061031b61060b366004611f8e565b60116020525f908152604090205460ff1681565b34801561062a575f80fd5b5061034a610639366004611f8e565b61111c565b348015610649575f80fd5b506102c8603281565b34801561065d575f80fd5b506102c87f000000000000000000000000000000000000000000000000000000000000000081565b348015610690575f80fd5b50600454610461906001600160a01b031681565b3480156106af575f80fd5b506102ef611226565b3480156106c3575f80fd5b50600554610461906001600160a01b031681565b3480156106e2575f80fd5b5061031b6106f1366004611eb6565b611233565b348015610701575f80fd5b506102c8610e1081565b348015610716575f80fd5b50610461730bd7d308f8e1639fab988df18a8011f41eacad7381565b34801561073d575f80fd5b50600654610461906001600160a01b031681565b34801561075c575f80fd5b5061034a61076b366004611fae565b611248565b34801561077b575f80fd5b506102c86103e881565b348015610790575f80fd5b5061031b61079f366004611f8e565b60136020525f908152604090205460ff1681565b3480156107be575f80fd5b5061031b6107cd366004611f8e565b60126020525f908152604090205460ff1681565b3480156107ec575f80fd5b506102c86107fb366004611fc8565b600360209081525f928352604080842090915290825290205481565b348015610822575f80fd5b5061034a6112fb565b348015610836575f80fd5b506102c861232881565b34801561084b575f80fd5b506102c86201518081565b348015610861575f80fd5b5061034a610870366004611ff0565b6113c4565b348015610880575f80fd5b5061034a61088f366004611f8e565b6114b4565b34801561089f575f80fd5b5061034a6108ae366004611f8e565b6115a0565b3480156108be575f80fd5b506102c8600a5481565b5f80546108d49061205f565b80601f01602080910402602001604051908101604052809291908181526020018280546109009061205f565b801561094b5780601f106109225761010080835404028352916020019161094b565b820191905f5260205f20905b81548152906001019060200180831161092e57829003601f168201915b505050505081565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109ad9086815260200190565b60405180910390a35060015b92915050565b6004546001600160a01b031633146109f25760405162461bcd60e51b81526004016109e990612097565b60405180910390fd5b6103e88211158015610a0657506103e88111155b610a3e5760405162461bcd60e51b8152602060048201526009602482015268666565203e2031302560b81b60448201526064016109e9565b600b829055600c81905560408051838152602081018390527f93525d3c7f4fafe56faedbca6d501a13c63f47857d8b30d8282ec2dd806259a791015b60405180910390a15050565b6004546001600160a01b03163314610ab05760405162461bcd60e51b81526004016109e990612097565b6006546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610afa576040519150601f19603f3d011682016040523d82523d5f602084013e610aff565b606091505b5050905080610b425760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b60448201526064016109e9565b50565b6004546001600160a01b03163314610b6f5760405162461bcd60e51b81526004016109e990612097565b6009548210158015610b835750600a548110155b610bbc5760405162461bcd60e51b815260206004820152600a6024820152697261697365206f6e6c7960b01b60448201526064016109e9565b6009829055600a81905560408051838152602081018390527f5e8958387a7cfa1a22c2b5c90e23d3aa4c13aac67a9b2439e69dfa67b3c569769101610a7a565b6001600160a01b0383165f90815260036020908152604080832033845290915281205482811015610c685760405162461bcd60e51b8152602060048201526016602482015275696e73756666696369656e7420616c6c6f77616e636560501b60448201526064016109e9565b5f198114610c9e57610c7a83826120ce565b6001600160a01b0386165f9081526003602090815260408083203384529091529020555b610ca98585856116a7565b506001949350505050565b6004546001600160a01b03163314610cde5760405162461bcd60e51b81526004016109e990612097565b6001600160a01b0382165f81815260116020908152604091829020805460ff191685151590811790915591519182527f74392251b09500cc108c71712e5e7e0392be9075a74a24f1494551cfa8e0687091015b60405180910390a25050565b6004546001600160a01b03163314610d675760405162461bcd60e51b81526004016109e990612097565b610d6f611c61565b565b6004546001600160a01b03163314610d9b5760405162461bcd60e51b81526004016109e990612097565b612710811115610ddb5760405162461bcd60e51b815260206004820152600b60248201526a3130b2103332b2a13ab93760a91b60448201526064016109e9565b600d8190556040518181527f66dfcd4a1f8d7c50dece689cebfef7e8378cda70dc6569fbfbaa50d050865fc3906020015b60405180910390a150565b6004546001600160a01b03163314610e415760405162461bcd60e51b81526004016109e990612097565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb9101610d31565b6008545f90819060ff16610ece57507f00000000000000000000000000000000000000000000d3c21bcecceda100000091829150565b5050600954600a547f000000000000000000000000000000000000000000000000000000000000000015801590610f0657505f600754115b15611047575f60075442610f1a91906120ce565b90507f00000000000000000000000000000000000000000000000000000000000000008110610f6d57507f00000000000000000000000000000000000000000000d3c21bcecceda1000000928392509050565b7f000000000000000000000000000000000000000000000000000000000000000081610fb9857f00000000000000000000000000000000000000000000d3c21bcecceda10000006120ce565b610fc391906120e1565b610fcd91906120f8565b610fd79084612117565b92507f000000000000000000000000000000000000000000000000000000000000000081611025847f00000000000000000000000000000000000000000000d3c21bcecceda10000006120ce565b61102f91906120e1565b61103991906120f8565b6110439083612117565b9150505b9091565b6004546001600160a01b031633146110755760405162461bcd60e51b81526004016109e990612097565b6004546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b6004546001600160a01b031633146110e85760405162461bcd60e51b81526004016109e990612097565b6008805460ff191690556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef905f90a1565b6004546001600160a01b031633146111465760405162461bcd60e51b81526004016109e990612097565b6005546001600160a01b0316156111925760405162461bcd60e51b815260206004820152601060248201526f1c185a5c88185b1c9958591e481cd95d60821b60448201526064016109e9565b6001600160a01b0381166111d45760405162461bcd60e51b81526020600482015260096024820152683d32b937903830b4b960b91b60448201526064016109e9565b600580546001600160a01b0319166001600160a01b038316908117909155426007556040519081527fc4a4ea6abc08bd7f8df3db8a1c998f19b3e0c348176f93732cd54db1a4b5013690602001610e0c565b600180546108d49061205f565b5f61123f3384846116a7565b50600192915050565b6004546001600160a01b031633146112725760405162461bcd60e51b81526004016109e990612097565b5f81116112af5760405162461bcd60e51b815260206004820152600b60248201526a07468726573686f6c6420360ac1b60448201526064016109e9565b600e805460ff1916831515908117909155600f82905560408051918252602082018390527f87ae8da42b41aff9dfe6568e1cf0ed00309aeb969f770e681e33bd628dccf8ee9101610a7a565b6004546001600160a01b031633146113255760405162461bcd60e51b81526004016109e990612097565b305f908152600260205260408120549081900361133f5750565b305f908152600260205260408120805483929061135d9084906120ce565b90915550506006546001600160a01b03165f908152600260205260408120805483929061138b908490612117565b90915550506006546040518281526001600160a01b039091169030905f805160206121b08339815191529060200160405180910390a350565b6004546001600160a01b031633146113ee5760405162461bcd60e51b81526004016109e990612097565b5f5b818110156114af57600160135f85858581811061140f5761140f61212a565b90506020020160208101906114249190611f8e565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905582828281811061145d5761145d61212a565b90506020020160208101906114729190611f8e565b6001600160a01b03167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a26001016113f0565b505050565b6004546001600160a01b031633146114de5760405162461bcd60e51b81526004016109e990612097565b6001600160a01b0381166115245760405162461bcd60e51b815260206004820152600d60248201526c3d32b937903932b1b2b4bb32b960991b60448201526064016109e9565b600680546001600160a01b0319166001600160a01b0383169081179091555f818152601160209081526040808320805460ff199081166001908117909255601284529382902080549094161790925590519182527fbdf37c276f641820b141429d245add2552b4118c0866e5a78638e3de5ef18d9d9101610e0c565b6004546001600160a01b031633146115ca5760405162461bcd60e51b81526004016109e990612097565b6001600160a01b03811661160d5760405162461bcd60e51b815260206004820152600a6024820152693d32b9379037bbb732b960b11b60448201526064016109e9565b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600480546001600160a01b039092166001600160a01b0319909216821790555f908152601160209081526040808320805460ff1990811660019081179092556012845282852080548216831790556013909352922080549091169091179055565b6001600160a01b0382166116f05760405162461bcd60e51b815260206004820152601060248201526f7472616e7366657220746f207a65726f60801b60448201526064016109e9565b6001600160a01b0383165f9081526002602052604090205481111561174e5760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b60448201526064016109e9565b60105460ff1615611764576114af838383611db6565b5f7f00000000000000000000000000000000000000000000000000000000000000001180156117a057506005546001600160a01b038481169116145b80156117ad57505f600754115b80156117e557507f00000000000000000000000000000000000000000000000000000000000000006007546117e29190612117565b42105b15611843576001600160a01b0382165f9081526013602052604090205460ff166118435760405162461bcd60e51b815260206004820152600f60248201526e77686974656c69737420706861736560881b60448201526064016109e9565b60085460ff16801561186d57506001600160a01b0383165f9081526011602052604090205460ff16155b801561189157506001600160a01b0382165f9081526011602052604090205460ff16155b15611976575f806118a0610e98565b91509150818311156118e15760405162461bcd60e51b815260206004820152600a6024820152690deeccae440dac2f0a8f60b31b60448201526064016109e9565b6005546001600160a01b0385811691161480159061190a57506001600160a01b03841661dead14155b15611973576001600160a01b0384165f908152600260205260409020548190611934908590612117565b11156119735760405162461bcd60e51b815260206004820152600e60248201526d1bdd995c881b585e15d85b1b195d60921b60448201526064016109e9565b50505b600e5460ff16801561199257506005546001600160a01b031615155b80156119ab57506005546001600160a01b038381169116145b80156119cf57506001600160a01b0383165f9081526012602052604090205460ff16155b80156119eb5750600f54305f9081526002602052604090205410155b156119f8576119f8611c61565b6005545f906001600160a01b031615611abf576005546001600160a01b038581169116148015611a4057506001600160a01b0383165f9081526012602052604090205460ff16155b15611a6757612710600b5483611a5691906120e1565b611a6091906120f8565b9050611abf565b6005546001600160a01b038481169116148015611a9c57506001600160a01b0384165f9081526012602052604090205460ff16155b15611abf57612710600c5483611ab291906120e1565b611abc91906120f8565b90505b6001600160a01b0384165f9081526002602052604081208054849290611ae69084906120ce565b90915550508015611bee575f612710600d5483611b0391906120e1565b611b0d91906120f8565b90508015611b875761dead5f90815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc8054839290611b52908490612117565b909155505060405181815261dead906001600160a01b038716905f805160206121b08339815191529060200160405180910390a35b5f611b9282846120ce565b90508015611beb57305f9081526002602052604081208054839290611bb8908490612117565b909155505060405181815230906001600160a01b038816905f805160206121b08339815191529060200160405180910390a35b50505b611bf881836120ce565b6001600160a01b0384165f9081526002602052604081208054909190611c1f908490612117565b90915550506001600160a01b038084169085165f805160206121b0833981519152611c4a84866120ce565b60405190815260200160405180910390a350505050565b6010805460ff19166001179055305f90815260026020526040812054600f8054919291611c8d916120e1565b905080821115611c9b578091505b815f03611ca9575050611daa565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611cdc57611cdc61212a565b60200260200101906001600160a01b031690816001600160a01b031681525050730bd7d308f8e1639fab988df18a8011f41eacad7381600181518110611d2457611d2461212a565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b81527389e5db8b5aa49aa85ac63f691524311aeb649eba9263791ac94792611d7d9288925f928892911690429060040161213e565b5f604051808303815f87803b158015611d94575f80fd5b505af1925050508015611da5575060015b505050505b6010805460ff19169055565b6001600160a01b0383165f9081526002602052604081208054839290611ddd9084906120ce565b90915550506001600160a01b0382165f9081526002602052604081208054839290611e09908490612117565b92505081905550816001600160a01b0316836001600160a01b03165f805160206121b083398151915283604051611e4291815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b81811015611e7b57858101830151858201604001528201611e5f565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611eb1575f80fd5b919050565b5f8060408385031215611ec7575f80fd5b611ed083611e9b565b946020939093013593505050565b5f8060408385031215611eef575f80fd5b50508035926020909101359150565b5f805f60608486031215611f10575f80fd5b611f1984611e9b565b9250611f2760208501611e9b565b9150604084013590509250925092565b80358015158114611eb1575f80fd5b5f8060408385031215611f57575f80fd5b611f6083611e9b565b9150611f6e60208401611f37565b90509250929050565b5f60208284031215611f87575f80fd5b5035919050565b5f60208284031215611f9e575f80fd5b611fa782611e9b565b9392505050565b5f8060408385031215611fbf575f80fd5b611ed083611f37565b5f8060408385031215611fd9575f80fd5b611fe283611e9b565b9150611f6e60208401611e9b565b5f8060208385031215612001575f80fd5b823567ffffffffffffffff80821115612018575f80fd5b818501915085601f83011261202b575f80fd5b813581811115612039575f80fd5b8660208260051b850101111561204d575f80fd5b60209290920196919550909350505050565b600181811c9082168061207357607f821691505b60208210810361209157634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156109b9576109b96120ba565b80820281158282048414176109b9576109b96120ba565b5f8261211257634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156109b9576109b96120ba565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561218e5784516001600160a01b031683529383019391830191600101612169565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e36cb9e9eb9b4e5d8f313cfbd09b0fecd5bffa35660e11932ebe74af23468dbe64736f6c63430008180033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| DIH | 1 | $0.0000123 | $0 |
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xd5185b…a01c24 | 7 days agoSat, 08 Aug 2026 15:00:23 UTC | 0xbdf37c…8d9d | data: 0x000000000000000000…040222f3 |
| 0x6fcf82…94778e | 26 days agoMon, 20 Jul 2026 07:51:40 UTC | Transfer | [0] 0x000000000000…eb649eba [1] 0x000000000000…4be9f4d4 data: 0x000000000000000000…a808d490 |
| 0x6fcf82…94778e | 26 days agoMon, 20 Jul 2026 07:51:40 UTC | Transfer | [0] 0x000000000000…74518c0d [1] 0x000000000000…eb649eba data: 0x000000000000000000…a808d490 |
| 0xb27307…eca68d | 26 days agoMon, 20 Jul 2026 07:51:37 UTC | 0x3499bf…2efb | [0] 0x000000000000…eb649eba data: 0x000000000000000000…00000001 |
| 0x0ea6ea…7435e0 | 27 days agoSun, 19 Jul 2026 18:18:40 UTC | 0x7bfa7b…47ef | |
| 0x1da748…0358ec | 27 days agoSun, 19 Jul 2026 18:16:25 UTC | 0x7bfa7b…47ef | |
| 0xab2b8d…7b14d5 | 27 days agoSun, 19 Jul 2026 03:03:26 UTC | Transfer | [0] 0x000000000000…74518c0d [1] 0x000000000000…4be9f4d4 data: 0x000000000000000000…f81f61d0 |
| 0xb57525…5ca856 | 27 days agoSun, 19 Jul 2026 02:50:02 UTC | Transfer | [0] 0x000000000000…4be9f4d4 [1] 0x000000000000…74518c0d data: 0x000000000000000000…d6c1028e |
| 0x87c685…2fe1b7 | 27 days agoSun, 19 Jul 2026 02:49:52 UTC | Approval | [0] 0x000000000000…4be9f4d4 [1] 0x000000000000…3ac78ba3 data: 0xffffffffffffffffff…ffffffff |
| 0x9d6c7e…c8ee9c | 27 days agoSun, 19 Jul 2026 02:49:33 UTC | Transfer | [0] 0x000000000000…14b89482 [1] 0x000000000000…74518c0d data: 0x000000000000000000…64b605d0 |
| 0x3e56d4…292fae | 27 days agoSun, 19 Jul 2026 02:48:47 UTC | Approval | [0] 0x000000000000…14b89482 [1] 0x000000000000…3ac78ba3 data: 0xffffffffffffffffff…ffffffff |
| 0x1667a6…d58d42 | 27 days agoSun, 19 Jul 2026 02:47:06 UTC | Transfer | [0] 0x000000000000…74518c0d [1] 0x000000000000…14b89482 data: 0x000000000000000000…1a13ad2f |
| 0xe22193…f7e5b9 | 27 days agoSun, 19 Jul 2026 02:46:24 UTC | Transfer | [0] 0x000000000000…74518c0d [1] 0x000000000000…14b89482 data: 0x000000000000000000…230f6b2d |
| 0xebd5ef…a1e76e | 27 days agoSun, 19 Jul 2026 02:44:45 UTC | Transfer | [0] 0x000000000000…74518c0d [1] 0x000000000000…14b89482 data: 0x000000000000000000…e4af1aee |
| 0xdeba97…b94cbc | 27 days agoSun, 19 Jul 2026 02:43:52 UTC | Transfer | [0] 0x000000000000…74518c0d [1] 0x000000000000…4be9f4d4 data: 0x000000000000000000…0ee2ea08 |
| 0x4c8d4d…4ceb77 | 27 days agoSun, 19 Jul 2026 02:42:57 UTC | Transfer | [0] 0x000000000000…74518c0d [1] 0x000000000000…14b89482 data: 0x000000000000000000…42e3d286 |
| 0xf33dcd…64d0af | 27 days agoSun, 19 Jul 2026 02:42:09 UTC | Transfer | [0] 0x000000000000…74518c0d [1] 0x000000000000…4be9f4d4 data: 0x000000000000000000…68af21cd |
| 0xbb028f…b6e3d0 | 27 days agoSun, 19 Jul 2026 02:41:39 UTC | Transfer | [0] 0x000000000000…74518c0d [1] 0x000000000000…4be9f4d4 data: 0x000000000000000000…f71bf7b5 |
| 0xb32f00…6897ae | 27 days agoSun, 19 Jul 2026 02:41:18 UTC | Transfer | [0] 0x000000000000…74518c0d [1] 0x000000000000…4be9f4d4 data: 0x000000000000000000…6812ff04 |
| 0x25cfdc…7f35cb | 27 days agoSun, 19 Jul 2026 02:40:14 UTC | Transfer | [0] 0x000000000000…50ec0cf7 [1] 0x000000000000…74518c0d data: 0x000000000000000000…a1000000 |
| 0x37b3c6…d75cd2 | 27 days agoSun, 19 Jul 2026 02:40:13 UTC | Approval | [0] 0x000000000000…50ec0cf7 [1] 0x000000000000…eb649eba data: 0x000000000000000000…a1000000 |
| 0xb05c6a…75165f | 27 days agoSun, 19 Jul 2026 02:40:11 UTC | 0xc4a4ea…0136 | data: 0x000000000000000000…74518c0d |
| 0x8c4c89…bdeb98 | 27 days agoSun, 19 Jul 2026 02:40:07 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…50ec0cf7 data: 0x000000000000000000…a1000000 |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xa750ce46…d81218 | Transfer | 19,747,103 | 20 days agoSun, 26 Jul 2026 09:01:47 UTC | 0xcaf7…5d11 | IN | 0xdbb3…447f | $0.001 DIH |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xf97e53…ac1e0e | rescueETH | 31,164,430 | 7 days agoSat, 08 Aug 2026 15:00:24 UTC | 0x812c…0cf7 | IN | VeryMicro | $0.000 ETH | 0.00000098 | |
| 0xd5185b…a01c24 | setFeeReceiver | 31,164,421 | 7 days agoSat, 08 Aug 2026 15:00:23 UTC | 0x812c…0cf7 | IN | VeryMicro | $0.000 ETH | 0.00000209 | |
| 0xb27307…eca68d | setExcludedFromFees | 14,535,667 | 26 days agoMon, 20 Jul 2026 07:51:37 UTC | 0x812c…0cf7 | IN | VeryMicro | $0.000 ETH | 0.00000252 | |
| 0xd9eb86…4264d9 | Transfer | 14,528,779 | 26 days agoMon, 20 Jul 2026 07:40:06 UTC | 0x1916…66a3 | IN | VeryMicro | $0.750.00039 ETH | 0.00000110 | |
| 0x34a01c…7b5aa4 | Transfer | 14,528,232 | 26 days agoMon, 20 Jul 2026 07:39:11 UTC | 0x6861…9482 | IN | VeryMicro | $0.400.00021 ETH | 0.00000111 | |
| 0x0ea6ea…7435e0 | removeLimits | 14,050,024 | 27 days agoSun, 19 Jul 2026 18:18:40 UTC | 0x812c…0cf7 | IN | VeryMicro | $0.000 ETH | 0.00000150 | |
| 0x1da748…0358ec | removeLimits | 14,048,666 | 27 days agoSun, 19 Jul 2026 18:16:25 UTC | 0x812c…0cf7 | IN | VeryMicro | $0.000 ETH | 0.00000148 | |
| 0x87c685…2fe1b7 | Approve | 13,495,283 | 27 days agoSun, 19 Jul 2026 02:49:52 UTC | 0x2bfe…f4d4 | IN | VeryMicro | $0.000 ETH | 0.00000295 | |
| 0x3e56d4…292fae | Approve | 13,494,636 | 27 days agoSun, 19 Jul 2026 02:48:47 UTC | 0x6861…9482 | IN | VeryMicro | $0.000 ETH | 0.00000295 | |
| 0x37b3c6…d75cd2 | Approve | 13,489,522 | 27 days agoSun, 19 Jul 2026 02:40:13 UTC | 0x812c…0cf7 | IN | VeryMicro | $0.000 ETH | 0.00000291 | |
| 0xb05c6a…75165f | setPair | 13,489,504 | 27 days agoSun, 19 Jul 2026 02:40:11 UTC | 0x812c…0cf7 | IN | VeryMicro | $0.000 ETH | 0.00000439 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 31,164,430 | 7 days agoSat, 08 Aug 2026 15:00:24 UTC | 0xf97e53…ac1e0e | CALL | rescueETH | 0xdbb3…447f | OUT | 0x785b…22f3 | 0.00060 ETH |