// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
interface AggregatorV3Interface {
function decimals() external view returns (uint8);
function latestRoundData()
external
view
returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);
}
/// @title Sale
/// @notice USD-pegged token sale. The unit price is fixed in dollars and the
/// ETH amount owed is derived from an ETH/USD oracle at purchase time.
/// @dev Oracle failure modes are handled defensively: reads revert on
/// stale data, answers outside a sanity range, or (optionally) a down
/// L2 sequencer. Buyers pass `minOut` to bound slippage themselves.
contract Sale is Ownable, ReentrancyGuard {
using SafeERC20 for IERC20;
/* -------------------------- immutables --------------------------- */
IERC20 public immutable token;
AggregatorV3Interface public immutable ethUsdFeed;
uint256 public immutable feedScale; // 10 ** feed.decimals()
/// After `saleEnd + FINALIZE_GRACE`, finalizing becomes permissionless.
uint256 public constant FINALIZE_GRACE = 7 days;
/// Tokens sold per one US dollar.
uint256 public tokensPerUsd = 10_000;
/// Reference bundle size used by the ethForUnits() helper quote.
uint256 public unitQuote = 10_000e18;
/// Maximum tokens this contract may sell.
uint256 public saleCap;
/// Emergency stop for purchases; schedule is unaffected.
bool public halted;
address public treasury;
/// Optional revenue split: a share of purchase ETH forwarded elsewhere.
address public splitTarget;
uint16 public splitBps; // 0 - 10000
/* ----------------------- oracle bounds --------------------------- */
/// Oldest acceptable oracle answer. The chain's feed publishes on price
/// deviation rather than a fixed heartbeat, so this is deliberately
/// loose; tighten with setQuoteBounds() once cadence is known.
uint256 public quoteMaxAge = 6 hours;
uint256 public minUsdPrice = 100;
uint256 public maxUsdPrice = 100_000;
AggregatorV3Interface public sequencerFeed;
uint256 public sequencerGrace = 1 hours;
/* ----------------------------- state ------------------------------ */
uint256 public tokensSold;
uint256 public saleStart;
uint256 public saleEnd;
bool public finalized;
/// Per-address purchase ceiling, sized above the most expensive intended
/// downstream use so the limit never blocks a legitimate buyer.
uint256 public walletCap = 175_000e18;
/// Reject purchases below this wei value.
uint256 public minSpend = 0.00002 ether;
mapping(address => uint256) public purchased;
/* ---------------------------- events ------------------------------ */
event SalePeriodSet(uint256 start, uint256 end);
event Purchased(address indexed buyer, uint256 ethPaid, uint256 received, uint256 ethUsd);
event Refunded(address indexed buyer, uint256 amount);
event SplitPaid(address indexed splitTarget, uint256 amount);
event SaleClosed(uint256 tokensSold, uint256 returnedToTreasury);
event QuoteBoundsSet(uint256 maxAge, uint256 minPrice, uint256 maxPrice);
event ConfigChanged(string indexed what, uint256 a, uint256 b);
constructor(address _token, address _ethUsdFeed, address _treasury, uint256 _saleCap)
Ownable(msg.sender)
{
require(_token != address(0) && _ethUsdFeed != address(0), "zero addr");
require(_treasury != address(0), "zero treasury");
require(_saleCap > 0, "zero saleCap");
token = IERC20(_token);
ethUsdFeed = AggregatorV3Interface(_ethUsdFeed);
feedScale = 10 ** uint256(AggregatorV3Interface(_ethUsdFeed).decimals());
treasury = _treasury;
saleCap = _saleCap;
}
/* --------------------------- pricing ------------------------------ */
/// @notice ETH/USD at the feed's native scale; reverts on any suspect read.
function ethUsd() public view returns (uint256) {
_checkSequencer();
(, int256 answer,, uint256 updatedAt,) = ethUsdFeed.latestRoundData();
require(answer > 0, "bad feed answer");
require(updatedAt != 0, "incomplete round");
require(block.timestamp - updatedAt <= quoteMaxAge, "stale feed");
uint256 price = uint256(answer);
uint256 whole = price / feedScale;
require(whole >= minUsdPrice && whole <= maxUsdPrice, "quote out of range");
return price;
}
function _checkSequencer() internal view {
if (address(sequencerFeed) == address(0)) return;
(, int256 up, uint256 startedAt,,) = sequencerFeed.latestRoundData();
require(up == 0, "sequencer down");
// startedAt == 0 marks an unfinished round; without this check the
// grace comparison below would wrongly pass on garbage data.
require(startedAt != 0, "incomplete sequencer round");
require(block.timestamp - startedAt > sequencerGrace, "sequencer grace");
}
/// @notice Tokens received for `ethIn` wei at the current quote.
function tokensFor(uint256 ethIn) public view returns (uint256) {
return (ethIn * ethUsd() * tokensPerUsd) / feedScale;
}
/// @notice ETH needed for `n` reference bundles, rounded up so the quote
/// always covers the intended purchase.
function ethForUnits(uint256 n) external view returns (uint256) {
uint256 amount = n * unitQuote;
uint256 denom = ethUsd() * tokensPerUsd;
return (amount * feedScale + denom - 1) / denom;
}
/* -------------------------- scheduling ---------------------------- */
/// @notice Set or move the sale period; usable until finalization.
function openSale(uint256 _start, uint256 _end) external onlyOwner {
require(!finalized, "finalized");
require(_end > _start, "bad period");
require(token.balanceOf(address(this)) >= saleCap, "unfunded");
require(ethUsd() > 0, "feed not live"); // surface feed problems now
saleStart = _start;
saleEnd = _end;
emit SalePeriodSet(_start, _end);
}
function saleOpen() public view returns (bool) {
return saleStart != 0 && block.timestamp >= saleStart && block.timestamp < saleEnd && !finalized && !halted
&& tokensSold < saleCap;
}
function remaining() public view returns (uint256) {
return saleCap - tokensSold;
}
/* ---------------------------- buying ------------------------------ */
/// @notice Swap ETH for tokens at the oracle quote.
/// @param minOut floor on tokens received; guards quote movement between
/// the front-end estimate and inclusion.
function buy(uint256 minOut) external payable nonReentrant {
require(saleOpen(), "sale closed");
require(msg.value >= minSpend, "too small");
uint256 price = ethUsd();
uint256 out = (msg.value * price * tokensPerUsd) / feedScale;
require(out > 0, "zero out");
uint256 spend = msg.value;
uint256 left = saleCap - tokensSold;
if (out > left) {
spend = (spend * left) / out;
out = left;
}
uint256 walletLeft = walletCap - purchased[msg.sender];
require(walletLeft > 0, "wallet limit reached");
if (out > walletLeft) {
spend = (spend * walletLeft) / out;
out = walletLeft;
}
require(out >= minOut, "below minOut");
require(spend > 0, "zero spend");
tokensSold += out;
purchased[msg.sender] += out;
token.safeTransfer(msg.sender, out);
uint256 toSplit;
if (splitTarget != address(0) && splitBps > 0) {
toSplit = (spend * splitBps) / 10_000;
if (toSplit > 0) {
(bool okS,) = splitTarget.call{value: toSplit}("");
require(okS, "split transfer failed");
emit SplitPaid(splitTarget, toSplit);
}
}
(bool okT,) = treasury.call{value: spend - toSplit}("");
require(okT, "treasury transfer failed");
uint256 refund = msg.value - spend;
if (refund > 0) {
(bool okR,) = msg.sender.call{value: refund}("");
require(okR, "refund failed");
emit Refunded(msg.sender, refund);
}
emit Purchased(msg.sender, spend, out, price);
}
/* -------------------------- finalizing ---------------------------- */
/// @notice Finalize and sweep unsold inventory back to the treasury.
/// @dev Owner-only at first; anyone may call once the grace period
/// after `saleEnd` has passed, so leftovers cannot be stranded by
/// an absent owner — while an early permissionless close cannot
/// be used to grief an owner who still wants to extend.
function closeSale() external nonReentrant {
require(!finalized, "already finalized");
require((saleEnd != 0 && block.timestamp >= saleEnd) || tokensSold == saleCap, "sale still open");
require(
msg.sender == owner() || (saleEnd != 0 && block.timestamp >= saleEnd + FINALIZE_GRACE),
"owner first"
);
finalized = true;
uint256 leftover = token.balanceOf(address(this));
if (leftover > 0) token.safeTransfer(treasury, leftover);
emit SaleClosed(tokensSold, leftover);
}
/* ---------------------------- admin -------------------------------- */
/// @notice Adjust the per-wallet ceiling and the minimum spend.
function setLimits(uint256 _maxPerWallet, uint256 _minSpend) external onlyOwner {
require(_maxPerWallet > 0, "zero cap");
walletCap = _maxPerWallet;
minSpend = _minSpend;
emit ConfigChanged("caps", _maxPerWallet, _minSpend);
}
/// @notice Reprice: tokens sold per US dollar.
function setTokensPerUsd(uint256 v) external onlyOwner {
require(v > 0, "zero price");
tokensPerUsd = v;
emit ConfigChanged("tokensPerUsd", v, 0);
}
/// @notice Update the helper-quote bundle size.
function setUnitQuote(uint256 v) external onlyOwner {
require(v > 0, "zero cost");
unitQuote = v;
emit ConfigChanged("unitQuote", v, 0);
}
/// @notice Resize the sale within what the contract can actually deliver.
function setSaleCap(uint256 v) external onlyOwner {
require(v >= tokensSold, "below tokensSold");
require(v - tokensSold <= token.balanceOf(address(this)), "unfunded");
saleCap = v;
emit ConfigChanged("saleCap", v, 0);
}
function setHalt(bool v) external onlyOwner {
halted = v;
emit ConfigChanged("halted", v ? 1 : 0, 0);
}
function setTreasury(address t) external onlyOwner {
require(t != address(0), "zero addr");
treasury = t;
}
/// @notice Configure the optional revenue split.
function setSplit(address _target, uint16 _bps) external onlyOwner {
require(_bps <= 10_000, "bps > 100%");
splitTarget = _target;
splitBps = _bps;
}
function setSequencerFeed(address feed, uint256 grace) external onlyOwner {
sequencerFeed = AggregatorV3Interface(feed);
sequencerGrace = grace;
}
/// @dev Bounds stay editable mid-sale on purpose: a real move past the
/// range would otherwise wedge the sale shut for good.
function setQuoteBounds(uint256 _maxAge, uint256 _minUsd, uint256 _maxUsd) external onlyOwner {
require(_maxAge > 0 && _minUsd > 0 && _maxUsd > _minUsd, "bad bounds");
quoteMaxAge = _maxAge;
minUsdPrice = _minUsd;
maxUsdPrice = _maxUsd;
emit QuoteBoundsSet(_maxAge, _minUsd, _maxUsd);
}
function sweep(address erc20, uint256 amount) external onlyOwner {
require(erc20 != address(token) || finalized, "sale not finalized");
IERC20(erc20).safeTransfer(treasury, amount);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "_token",
"type": "address",
"internalType": "address"
},
{
"name": "_ethUsdFeed",
"type": "address",
"internalType": "address"
},
{
"name": "_treasury",
"type": "address",
"internalType": "address"
},
{
"name": "_saleCap",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "OwnableInvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ReentrancyGuardReentrantCall",
"type": "error",
"inputs": []
},
{
"name": "SafeERC20FailedOperation",
"type": "error",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ConfigChanged",
"type": "event",
"inputs": [
{
"name": "what",
"type": "string",
"indexed": true,
"internalType": "string"
},
{
"name": "a",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "b",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"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": "Purchased",
"type": "event",
"inputs": [
{
"name": "buyer",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "ethPaid",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "received",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "ethUsd",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "QuoteBoundsSet",
"type": "event",
"inputs": [
{
"name": "maxAge",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "minPrice",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "maxPrice",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Refunded",
"type": "event",
"inputs": [
{
"name": "buyer",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "SaleClosed",
"type": "event",
"inputs": [
{
"name": "tokensSold",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "returnedToTreasury",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "SalePeriodSet",
"type": "event",
"inputs": [
{
"name": "start",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "end",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "SplitPaid",
"type": "event",
"inputs": [
{
"name": "splitTarget",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FINALIZE_GRACE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "buy",
"type": "function",
"inputs": [
{
"name": "minOut",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"name": "closeSale",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "ethForUnits",
"type": "function",
"inputs": [
{
"name": "n",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "ethUsd",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "ethUsdFeed",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract AggregatorV3Interface"
}
],
"stateMutability": "view"
},
{
"name": "feedScale",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "finalized",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "halted",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "maxUsdPrice",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "minSpend",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "minUsdPrice",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "openSale",
"type": "function",
"inputs": [
{
"name": "_start",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_end",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "purchased",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "quoteMaxAge",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "remaining",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "saleCap",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "saleEnd",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "saleOpen",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "saleStart",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "sequencerFeed",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract AggregatorV3Interface"
}
],
"stateMutability": "view"
},
{
"name": "sequencerGrace",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "setHalt",
"type": "function",
"inputs": [
{
"name": "v",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setLimits",
"type": "function",
"inputs": [
{
"name": "_maxPerWallet",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_minSpend",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setQuoteBounds",
"type": "function",
"inputs": [
{
"name": "_maxAge",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_minUsd",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_maxUsd",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setSaleCap",
"type": "function",
"inputs": [
{
"name": "v",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setSequencerFeed",
"type": "function",
"inputs": [
{
"name": "feed",
"type": "address",
"internalType": "address"
},
{
"name": "grace",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setSplit",
"type": "function",
"inputs": [
{
"name": "_target",
"type": "address",
"internalType": "address"
},
{
"name": "_bps",
"type": "uint16",
"internalType": "uint16"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setTokensPerUsd",
"type": "function",
"inputs": [
{
"name": "v",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setTreasury",
"type": "function",
"inputs": [
{
"name": "t",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setUnitQuote",
"type": "function",
"inputs": [
{
"name": "v",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "splitBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "splitTarget",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "sweep",
"type": "function",
"inputs": [
{
"name": "erc20",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "token",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IERC20"
}
],
"stateMutability": "view"
},
{
"name": "tokensFor",
"type": "function",
"inputs": [
{
"name": "ethIn",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "tokensPerUsd",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "tokensSold",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "treasury",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "unitQuote",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "walletCap",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
}
]0x60e0604090808252346200024057608081620020a480380380916200002582856200030e565b83398101031262000240576200003b8162000346565b9060206200004b81830162000346565b9260606200005b86850162000346565b930151933315620002f7575f8054336001600160a01b031982168117835588516001600160a01b0395909386939192918416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36001805561271060025569021e19e0c9bab24000006003556154606007556064600855620186a0600955610e10600b5569250ec4ddca432f6000006010556512309ce54000601155169081151580620002eb575b15620002bd5750828516156200028957851562000256576080521660a0819052845163313ce56760e01b815291908190839060049082905afa9081156200024c575f9162000208575b5060ff915016604d8111620001f457600a0a60c05260058054610100600160a81b03191660089290921b610100600160a81b031691909117905560045551611d4890816200035c82396080518181816102170152818161046d015281816107ff01528181610c330152818161117b0152611306015260a05181818161106c0152611870015260c05181818161075a015281816111270152818161160a01526118cf0152f35b634e487b7160e01b5f52601160045260245ffd5b905081813d831162000244575b6200022181836200030e565b8101031262000240575160ff81168103620002405760ff905f6200014f565b5f80fd5b503d62000215565b85513d5f823e3d90fd5b865162461bcd60e51b815260048101859052600c60248201526b07a65726f2073616c654361760a41b6044820152606490fd5b865162461bcd60e51b815260048101859052600d60248201526c7a65726f20747265617375727960981b6044820152606490fd5b62461bcd60e51b81526004810185905260096024820152683d32b9379030b2323960b91b6044820152606490fd5b50838316151562000106565b8551631e4fbdf760e01b81525f6004820152602490fd5b601f909101601f19168101906001600160401b038211908210176200033257604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b0382168203620002405756fe6080604090808252600480361015610015575f80fd5b5f3560e01c918263048d372c146116ec57508163078fd9ea146116d0578163123e04db146116a85781631dabe830146116605781632e627adb146115d457816337dd150f146115b75781633b521cb61461158f57816348b19e5e146114c157816348dddca8146114a3578163518ab2a814611485578163522fe98e1461144e578163526b347e146112c257816355234ec0146112a157816358950c22146112835781635a9602161461126757816361d027b31461123b5781636721eb97146112075781636ea056a91461114a5781636f6f6da314611110578163715018a6146110b95781637d3e9cdc1461109b5781638009b7bd146110585781638da5cb5b1461103157816399288dbb1461100c578163a320c14b14610fee578163ab0bcc4114610fd0578163b11fdd2514610f26578163b3f05b9714610f03578163b944a66314610ee5578163b9b8af0b14610ec2578163c10b935814610ea4578163c4590d3f14610e04578163c739009914610de6578163ce5deb8914610d40578163d3d37a3114610be8578163d45690ed14610bca578163d96a094a14610709578163d9ecab351461066d578163ec0eb11c1461064f578163ee55efee146103f0578163f0f442601461036b578163f2fde38b146102de578163f49543871461024a575063fc0c546a14610204575f80fd5b34610246575f36600319011261024657517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b90503461024657602036600319011261024657359081151590818303610246577fb9320a6cb8f1f86ed03448e2974911e66e2cc38162c2c5121b809a6614a50592925f80516020611cf3833981519152926102a3611ad1565b60ff8019600554169116176005555f146102d85760015b651a185b1d195960d21b82515260ff8251911681525f6020820152a2005b5f6102ba565b905034610246576020366003190112610246576102f961170d565b90610302611ad1565b6001600160a01b039182169283156103555750505f54826bffffffffffffffffffffffff60a01b8216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b9050346102465760203660031901126102465761038661170d565b9161038f611ad1565b6001600160a01b038316156103c15760058054610100600160a81b031916600885901b610100600160a81b0316179055005b906020606492519162461bcd60e51b835282015260096024820152683d32b9379030b2323960b91b6044820152fd5b8234610246575f36600319011261024657610409611ccf565b600f549160ff831661061957600e548015159390848061060f575b8015610603575b156105ce5760018060a01b0394855f54163314918215610592575b5050156105615760ff1916600117600f5581516370a0823160e01b815230918101919091527f0000000000000000000000000000000000000000000000000000000000000000926020826024818488165afa918215610557575f92610501575b50817f4615bd5a2ca656ac950059df2c91c70e4cba47a5825a82f93bfa3ef447cc4eec94816104e8575b505050600c549082519182526020820152a160018055005b6104f99260055460081c1690611c3b565b8381816104d0565b9391506020843d60201161054f575b8161051d60209383611798565b81010312610246577f4615bd5a2ca656ac950059df2c91c70e4cba47a5825a82f93bfa3ef447cc4eec935191936104a6565b3d9150610510565b83513d5f823e3d90fd5b506020606492519162461bcd60e51b8352820152600b60248201526a1bdddb995c88199a5c9cdd60aa1b6044820152fd5b909150816105a3575b508580610446565b905062093a8081018091116105bb574210158561059b565b601183634e487b7160e01b5f525260245ffd5b835162461bcd60e51b8152602081850152600f60248201526e39b0b6329039ba34b6361037b832b760891b6044820152606490fd5b50600c5483541461042b565b5080421015610424565b6020606492519162461bcd60e51b83528201526011602482015270185b1c9958591e48199a5b985b1a5e9959607a1b6044820152fd5b8234610246575f366003190112610246576020906003549051908152f35b823461024657806003193601126102465761068661170d565b916024359161ffff831680840361024657612710906106a3611ad1565b116106d9575050600680546001600160b01b0319166001600160a01b039093169290921760a09190911b61ffff60a01b16179055005b906020606492519162461bcd60e51b8352820152600a602482015269627073203e203130302560b01b6044820152fd5b602091503660031901821361024657610720611ccf565b610728611a2f565b15610b9b576011543410610b6e5761073e611851565b9061077f61075861074f8434611739565b60025490611739565b7f00000000000000000000000000000000000000000000000000000000000000009061177a565b908115610b405734938154610797600c54809261176d565b808511610b27575b506107b7601054335f5260128452885f20549061176d565b8015610aed57808511610ad0575b5082358410610a9e578515610a6e57836107de91611760565b600c55335f5260128152855f206107f6848254611760565b905561082383337f0000000000000000000000000000000000000000000000000000000000000000611c3b565b6006545f906001600160a01b03908181169081151580610a5e575b6109a6575b50505f80809361085c829460055460081c16918b61176d565b905af1610867611a92565b501561096457610877853461176d565b91826108c3575b50509351928352602083015260408201523391507f2bdd59583c8e5cc64165e86af2482dbe93e85c98b355b788aa592465b3f6920e9080606081015b0390a260018055005b5f80808086335af16108d3611a92565b50156109335750946108ba917fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d06517f2bdd59583c8e5cc64165e86af2482dbe93e85c98b355b788aa592465b3f6920e969783519283523392a294935f61087e565b60649187519162461bcd60e51b8352820152600d60248201526c1c99599d5b990819985a5b1959609a1b6044820152fd5b855162461bcd60e51b815291820152601860248201527f7472656173757279207472616e73666572206661696c65640000000000000000604482015260649150fd5b61271091935061ffff6109bd9160a01c1689611739565b0491826109cb575b80610843565b5f80808581945af16109db611a92565b5015610a23575f80809361085c848c7f82cfe579a63656b3b14dcf40589d4ab3b6d5a4207801393c871ebe44ed835b14898698600654169251868152a29450509350506109c5565b875162461bcd60e51b815280850184905260156024820152741cdc1b1a5d081d1c985b9cd9995c8819985a5b1959605a1b6044820152606490fd5b5061ffff8160a01c16151561083e565b865162461bcd60e51b8152808401839052600a6024820152691e995c9bc81cdc195b9960b21b6044820152606490fd5b865162461bcd60e51b8152808401839052600c60248201526b18995b1bddc81b5a5b93dd5d60a21b6044820152606490fd5b9593610ae087610ae59396611739565b61177a565b94925f6107c5565b875162461bcd60e51b815280850184905260146024820152731dd85b1b195d081b1a5b5a5d081c995858da195960621b6044820152606490fd5b955092610b3890610ae08734611739565b94925f61079f565b845162461bcd60e51b815290810184905260086024820152671e995c9bc81bdd5d60c21b6044820152606490fd5b915162461bcd60e51b81529182015260096024820152681d1bdbc81cdb585b1b60ba1b6044820152606490fd5b915162461bcd60e51b815291820152600b60248201526a1cd85b194818db1bdcd95960aa1b6044820152606490fd5b8234610246575f366003190112610246576020906007549051908152f35b82346102465760208060031936011261024657823592610c06611ad1565b600c54808510610d0b57610c1a908561176d565b83516370a0823160e01b815230838201529083826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215610d01575f92610cc6575b7f1019566e07556ac8d9ae15d820f9bb184a4d033c4f06fafdfc4e8b15e3ec50275f80516020611cf383398151915287895f89828a610cac8b8b11156117ce565b5566073616c654361760cc1b8451528351928352820152a2005b9150949193928082813d8311610cfa575b610ce18183611798565b8101031261024657905191949293909290919085610c6b565b503d610cd7565b85513d5f823e3d90fd5b50915162461bcd60e51b815291820152601060248201526f18995b1bddc81d1bdad95b9cd4dbdb1960821b6044820152606490fd5b90503461024657602036600319011261024657803590610d5e611ad1565b8115610db7577fe22d038bf2be2b627db18861a266800fdfc048394f39ed577527b5a839fae2cd5f80516020611cf383398151915284848060035568756e697451756f746560b81b82515281519081525f6020820152a2005b606490602084519162461bcd60e51b835282015260096024820152681e995c9bc818dbdcdd60ba1b6044820152fd5b8234610246575f366003190112610246576020906008549051908152f35b90503461024657610e1436611723565b9091610e1e611ad1565b8215610e76577fed50cfd309742b232758f6fd020ab8fe6f527ff8e28e77b90916195cf48db7535f80516020611cf38339815191528585858160105580601155636361707360e01b83515282519182526020820152a2005b606490602085519162461bcd60e51b8352820152600860248201526707a65726f206361760c41b6044820152fd5b8234610246575f36600319011261024657602090600e549051908152f35b8234610246575f3660031901126102465760209060ff6005541690519015158152f35b8234610246575f366003190112610246576020906002549051908152f35b8234610246575f3660031901126102465760209060ff600f541690519015158152f35b90503461024657602036600319011261024657803590610f44611ad1565b8115610fa0577f3b886ef171a8bb3b023c257ae1e1177c4ae1f59cc7b28d84c079a5be330de0ce5f80516020611cf38339815191528484806002556b1d1bdad95b9cd4195c955cd960a21b82515281519081525f6020820152a2005b606490602084519162461bcd60e51b8352820152600a6024820152697a65726f20707269636560b01b6044820152fd5b8234610246575f36600319011261024657602090600d549051908152f35b8234610246575f366003190112610246576020906009549051908152f35b8234610246575f36600319011261024657602090611028611a2f565b90519015158152f35b8234610246575f366003190112610246575f5490516001600160a01b039091168152602090f35b8234610246575f36600319011261024657517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b8234610246575f36600319011261024657602090600b549051908152f35b34610246575f366003190112610246576110d1611ad1565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b8234610246575f36600319011261024657602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b90503461024657816003193601126102465761116461170d565b9061116d611ad1565b6001600160a01b03918216907f0000000000000000000000000000000000000000000000000000000000000000831682148015906111fb575b156111c3576111c183836024359160055460081c1690611c3b565b005b606490602085519162461bcd60e51b835282015260126024820152711cd85b19481b9bdd08199a5b985b1a5e995960721b6044820152fd5b5060ff600f54166111a6565b82346102465760203660031901126102465761123461075861074f60209461122d611851565b9035611739565b9051908152f35b8234610246575f36600319011261024657600554905160089190911c6001600160a01b03168152602090f35b8234610246575f36600319011261024657602090611234611851565b8234610246575f366003190112610246576020906010549051908152f35b8234610246575f3660031901126102465761123460209254600c549061176d565b8234610246576112d136611723565b6112d9611ad1565b60ff600f541661141f57818111156113ef5782516370a0823160e01b8152308582015260209081816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610d01575f906113c0575b61134b9150865411156117ce565b611353611851565b1561138e577f2f4eda849ef83165191a700f2d897d93e1c925a34a2a47b663642030c271d9e7945082600d5581600e558351928352820152a1005b8460649185519162461bcd60e51b8352820152600d60248201526c66656564206e6f74206c69766560981b6044820152fd5b508181813d83116113e8575b6113d68183611798565b810103126102465761134b905161133d565b503d6113cc565b825162461bcd60e51b8152602081860152600a602482015269189859081c195c9a5bd960b21b6044820152606490fd5b825162461bcd60e51b81526020818601526009602482015268199a5b985b1a5e995960ba1b6044820152606490fd5b8234610246576020366003190112610246576020906001600160a01b0361147361170d565b165f5260128252805f20549051908152f35b8234610246575f36600319011261024657602090600c549051908152f35b8234610246575f366003190112610246576020906011549051908152f35b90503461024657606036600319011261024657803560243591604435906114e6611ad1565b82151580611586575b8061157d575b1561154d5750611548907f6fd6b8f0d01d2a93cf2a7a0faaa35c0a5580391621661f7d6ea593287eb575cb9483600755846008558160095551938493846040919493926060820195825260208201520152565b0390a1005b606490602086519162461bcd60e51b8352820152600a60248201526962616420626f756e647360b01b6044820152fd5b508382116114f5565b508315156114ef565b8234610246575f36600319011261024657600a5490516001600160a01b039091168152602090f35b8234610246575f366003190112610246576020905162093a808152f35b82346102465760203660031901126102465761162f916116346115fa6003548335611739565b61160561074f611851565b9485917f000000000000000000000000000000000000000000000000000000000000000090611739565b611760565b5f1981019190821161164d57506020926112349161177a565b601190634e487b7160e01b5f525260245ffd5b8234610246573660031901126102465761167861170d565b611680611ad1565b600a80546001600160a01b0319166001600160a01b0392909216919091179055602435600b55005b8234610246575f3660031901126102465760065490516001600160a01b039091168152602090f35b8234610246575f36600319011261024657602091549051908152f35b34610246575f3660031901126102465760209061ffff60065460a01c168152f35b600435906001600160a01b038216820361024657565b6040906003190112610246576004359060243590565b8181029291811591840414171561174c57565b634e487b7160e01b5f52601160045260245ffd5b9190820180921161174c57565b9190820391821161174c57565b8115611784570490565b634e487b7160e01b5f52601260045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176117ba57604052565b634e487b7160e01b5f52604160045260245ffd5b156117d557565b60405162461bcd60e51b81526020600482015260086024820152671d5b999d5b99195960c21b6044820152606490fd5b519069ffffffffffffffffffff8216820361024657565b908160a09103126102465761183081611805565b9160208201519160408101519161184e608060608401519301611805565b90565b611859611afc565b60408051633fabe5a360e21b81529060a0826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015611a25575f925f916119ed575b505f8313156119b7578015611980576118c2904261176d565b60075410611950576118f47f00000000000000000000000000000000000000000000000000000000000000008361177a565b6008548110159081611943575b501561190b575090565b5162461bcd60e51b815260206004820152601260248201527171756f7465206f7574206f662072616e676560701b6044820152606490fd5b905060095410155f611901565b5162461bcd60e51b815260206004820152600a6024820152691cdd185b19481999595960b21b6044820152606490fd5b815162461bcd60e51b815260206004820152601060248201526f1a5b98dbdb5c1b195d19481c9bdd5b9960821b6044820152606490fd5b815162461bcd60e51b815260206004820152600f60248201526e3130b2103332b2b21030b739bbb2b960891b6044820152606490fd5b9050611a1291925060a03d60a011611a1e575b611a0a8183611798565b81019061181c565b5093925050915f6118a9565b503d611a00565b50513d5f823e3d90fd5b600d548015159081611a87575b5080611a7c575b80611a6f575b80611a62575b80611a575790565b50600c546004541190565b5060ff6005541615611a4f565b5060ff600f541615611a49565b50600e544210611a43565b90504210155f611a3c565b3d15611acc573d9067ffffffffffffffff82116117ba5760405191611ac1601f8201601f191660200184611798565b82523d5f602084013e565b606090565b5f546001600160a01b03163303611ae457565b60405163118cdaa760e01b8152336004820152602490fd5b600a546001600160a01b03168015611c385760a060049160405192838092633fabe5a360e21b82525afa908115611c2d575f905f92611c08575b50611bd2578015611b8d57611b4b904261176d565b600b541015611b5657565b60405162461bcd60e51b815260206004820152600f60248201526e73657175656e63657220677261636560881b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f696e636f6d706c6574652073657175656e63657220726f756e640000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d39b2b8bab2b731b2b9103237bbb760911b6044820152606490fd5b9050611c23915060a03d60a011611a1e57611a0a8183611798565b505091505f611b36565b6040513d5f823e3d90fd5b50565b60405163a9059cbb60e01b602082019081526001600160a01b0393841660248301526044808301959095529381529092608082019067ffffffffffffffff8211838310176117ba576020925f92604052519082865af115611c2d575f513d611cc657508082163b155b611cac575050565b604051635274afe760e01b81529116600482015260249150fd5b60011415611ca4565b600260015414611ce0576002600155565b604051633ee5aeb560e01b8152600490fdfeb12d6e8f8d18df97d5f13abced381e0d1f1a2cdb53a3270b338178dca2de1521a2646970667358221220f31d80bcf3ae97918fe85566db0f68d508870fe2e2ad344ad4cb8e1c407f34be64736f6c63430008180033000000000000000000000000bae323af6d43c40b4bcb1025b4e8683cc067b9de00000000000000000000000078f3556b67e17df817d51ef5a990cdaf09e8d3a900000000000000000000000082e22b662dedacd15fa56043bccce7c882b7db8e00000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
0x6080604090808252600480361015610015575f80fd5b5f3560e01c918263048d372c146116ec57508163078fd9ea146116d0578163123e04db146116a85781631dabe830146116605781632e627adb146115d457816337dd150f146115b75781633b521cb61461158f57816348b19e5e146114c157816348dddca8146114a3578163518ab2a814611485578163522fe98e1461144e578163526b347e146112c257816355234ec0146112a157816358950c22146112835781635a9602161461126757816361d027b31461123b5781636721eb97146112075781636ea056a91461114a5781636f6f6da314611110578163715018a6146110b95781637d3e9cdc1461109b5781638009b7bd146110585781638da5cb5b1461103157816399288dbb1461100c578163a320c14b14610fee578163ab0bcc4114610fd0578163b11fdd2514610f26578163b3f05b9714610f03578163b944a66314610ee5578163b9b8af0b14610ec2578163c10b935814610ea4578163c4590d3f14610e04578163c739009914610de6578163ce5deb8914610d40578163d3d37a3114610be8578163d45690ed14610bca578163d96a094a14610709578163d9ecab351461066d578163ec0eb11c1461064f578163ee55efee146103f0578163f0f442601461036b578163f2fde38b146102de578163f49543871461024a575063fc0c546a14610204575f80fd5b34610246575f36600319011261024657517f000000000000000000000000bae323af6d43c40b4bcb1025b4e8683cc067b9de6001600160a01b03168152602090f35b5f80fd5b90503461024657602036600319011261024657359081151590818303610246577fb9320a6cb8f1f86ed03448e2974911e66e2cc38162c2c5121b809a6614a50592925f80516020611cf3833981519152926102a3611ad1565b60ff8019600554169116176005555f146102d85760015b651a185b1d195960d21b82515260ff8251911681525f6020820152a2005b5f6102ba565b905034610246576020366003190112610246576102f961170d565b90610302611ad1565b6001600160a01b039182169283156103555750505f54826bffffffffffffffffffffffff60a01b8216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b9050346102465760203660031901126102465761038661170d565b9161038f611ad1565b6001600160a01b038316156103c15760058054610100600160a81b031916600885901b610100600160a81b0316179055005b906020606492519162461bcd60e51b835282015260096024820152683d32b9379030b2323960b91b6044820152fd5b8234610246575f36600319011261024657610409611ccf565b600f549160ff831661061957600e548015159390848061060f575b8015610603575b156105ce5760018060a01b0394855f54163314918215610592575b5050156105615760ff1916600117600f5581516370a0823160e01b815230918101919091527f000000000000000000000000bae323af6d43c40b4bcb1025b4e8683cc067b9de926020826024818488165afa918215610557575f92610501575b50817f4615bd5a2ca656ac950059df2c91c70e4cba47a5825a82f93bfa3ef447cc4eec94816104e8575b505050600c549082519182526020820152a160018055005b6104f99260055460081c1690611c3b565b8381816104d0565b9391506020843d60201161054f575b8161051d60209383611798565b81010312610246577f4615bd5a2ca656ac950059df2c91c70e4cba47a5825a82f93bfa3ef447cc4eec935191936104a6565b3d9150610510565b83513d5f823e3d90fd5b506020606492519162461bcd60e51b8352820152600b60248201526a1bdddb995c88199a5c9cdd60aa1b6044820152fd5b909150816105a3575b508580610446565b905062093a8081018091116105bb574210158561059b565b601183634e487b7160e01b5f525260245ffd5b835162461bcd60e51b8152602081850152600f60248201526e39b0b6329039ba34b6361037b832b760891b6044820152606490fd5b50600c5483541461042b565b5080421015610424565b6020606492519162461bcd60e51b83528201526011602482015270185b1c9958591e48199a5b985b1a5e9959607a1b6044820152fd5b8234610246575f366003190112610246576020906003549051908152f35b823461024657806003193601126102465761068661170d565b916024359161ffff831680840361024657612710906106a3611ad1565b116106d9575050600680546001600160b01b0319166001600160a01b039093169290921760a09190911b61ffff60a01b16179055005b906020606492519162461bcd60e51b8352820152600a602482015269627073203e203130302560b01b6044820152fd5b602091503660031901821361024657610720611ccf565b610728611a2f565b15610b9b576011543410610b6e5761073e611851565b9061077f61075861074f8434611739565b60025490611739565b7f0000000000000000000000000000000000000000000000000000000005f5e1009061177a565b908115610b405734938154610797600c54809261176d565b808511610b27575b506107b7601054335f5260128452885f20549061176d565b8015610aed57808511610ad0575b5082358410610a9e578515610a6e57836107de91611760565b600c55335f5260128152855f206107f6848254611760565b905561082383337f000000000000000000000000bae323af6d43c40b4bcb1025b4e8683cc067b9de611c3b565b6006545f906001600160a01b03908181169081151580610a5e575b6109a6575b50505f80809361085c829460055460081c16918b61176d565b905af1610867611a92565b501561096457610877853461176d565b91826108c3575b50509351928352602083015260408201523391507f2bdd59583c8e5cc64165e86af2482dbe93e85c98b355b788aa592465b3f6920e9080606081015b0390a260018055005b5f80808086335af16108d3611a92565b50156109335750946108ba917fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d06517f2bdd59583c8e5cc64165e86af2482dbe93e85c98b355b788aa592465b3f6920e969783519283523392a294935f61087e565b60649187519162461bcd60e51b8352820152600d60248201526c1c99599d5b990819985a5b1959609a1b6044820152fd5b855162461bcd60e51b815291820152601860248201527f7472656173757279207472616e73666572206661696c65640000000000000000604482015260649150fd5b61271091935061ffff6109bd9160a01c1689611739565b0491826109cb575b80610843565b5f80808581945af16109db611a92565b5015610a23575f80809361085c848c7f82cfe579a63656b3b14dcf40589d4ab3b6d5a4207801393c871ebe44ed835b14898698600654169251868152a29450509350506109c5565b875162461bcd60e51b815280850184905260156024820152741cdc1b1a5d081d1c985b9cd9995c8819985a5b1959605a1b6044820152606490fd5b5061ffff8160a01c16151561083e565b865162461bcd60e51b8152808401839052600a6024820152691e995c9bc81cdc195b9960b21b6044820152606490fd5b865162461bcd60e51b8152808401839052600c60248201526b18995b1bddc81b5a5b93dd5d60a21b6044820152606490fd5b9593610ae087610ae59396611739565b61177a565b94925f6107c5565b875162461bcd60e51b815280850184905260146024820152731dd85b1b195d081b1a5b5a5d081c995858da195960621b6044820152606490fd5b955092610b3890610ae08734611739565b94925f61079f565b845162461bcd60e51b815290810184905260086024820152671e995c9bc81bdd5d60c21b6044820152606490fd5b915162461bcd60e51b81529182015260096024820152681d1bdbc81cdb585b1b60ba1b6044820152606490fd5b915162461bcd60e51b815291820152600b60248201526a1cd85b194818db1bdcd95960aa1b6044820152606490fd5b8234610246575f366003190112610246576020906007549051908152f35b82346102465760208060031936011261024657823592610c06611ad1565b600c54808510610d0b57610c1a908561176d565b83516370a0823160e01b815230838201529083826024817f000000000000000000000000bae323af6d43c40b4bcb1025b4e8683cc067b9de6001600160a01b03165afa918215610d01575f92610cc6575b7f1019566e07556ac8d9ae15d820f9bb184a4d033c4f06fafdfc4e8b15e3ec50275f80516020611cf383398151915287895f89828a610cac8b8b11156117ce565b5566073616c654361760cc1b8451528351928352820152a2005b9150949193928082813d8311610cfa575b610ce18183611798565b8101031261024657905191949293909290919085610c6b565b503d610cd7565b85513d5f823e3d90fd5b50915162461bcd60e51b815291820152601060248201526f18995b1bddc81d1bdad95b9cd4dbdb1960821b6044820152606490fd5b90503461024657602036600319011261024657803590610d5e611ad1565b8115610db7577fe22d038bf2be2b627db18861a266800fdfc048394f39ed577527b5a839fae2cd5f80516020611cf383398151915284848060035568756e697451756f746560b81b82515281519081525f6020820152a2005b606490602084519162461bcd60e51b835282015260096024820152681e995c9bc818dbdcdd60ba1b6044820152fd5b8234610246575f366003190112610246576020906008549051908152f35b90503461024657610e1436611723565b9091610e1e611ad1565b8215610e76577fed50cfd309742b232758f6fd020ab8fe6f527ff8e28e77b90916195cf48db7535f80516020611cf38339815191528585858160105580601155636361707360e01b83515282519182526020820152a2005b606490602085519162461bcd60e51b8352820152600860248201526707a65726f206361760c41b6044820152fd5b8234610246575f36600319011261024657602090600e549051908152f35b8234610246575f3660031901126102465760209060ff6005541690519015158152f35b8234610246575f366003190112610246576020906002549051908152f35b8234610246575f3660031901126102465760209060ff600f541690519015158152f35b90503461024657602036600319011261024657803590610f44611ad1565b8115610fa0577f3b886ef171a8bb3b023c257ae1e1177c4ae1f59cc7b28d84c079a5be330de0ce5f80516020611cf38339815191528484806002556b1d1bdad95b9cd4195c955cd960a21b82515281519081525f6020820152a2005b606490602084519162461bcd60e51b8352820152600a6024820152697a65726f20707269636560b01b6044820152fd5b8234610246575f36600319011261024657602090600d549051908152f35b8234610246575f366003190112610246576020906009549051908152f35b8234610246575f36600319011261024657602090611028611a2f565b90519015158152f35b8234610246575f366003190112610246575f5490516001600160a01b039091168152602090f35b8234610246575f36600319011261024657517f00000000000000000000000078f3556b67e17df817d51ef5a990cdaf09e8d3a96001600160a01b03168152602090f35b8234610246575f36600319011261024657602090600b549051908152f35b34610246575f366003190112610246576110d1611ad1565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b8234610246575f36600319011261024657602090517f0000000000000000000000000000000000000000000000000000000005f5e1008152f35b90503461024657816003193601126102465761116461170d565b9061116d611ad1565b6001600160a01b03918216907f000000000000000000000000bae323af6d43c40b4bcb1025b4e8683cc067b9de831682148015906111fb575b156111c3576111c183836024359160055460081c1690611c3b565b005b606490602085519162461bcd60e51b835282015260126024820152711cd85b19481b9bdd08199a5b985b1a5e995960721b6044820152fd5b5060ff600f54166111a6565b82346102465760203660031901126102465761123461075861074f60209461122d611851565b9035611739565b9051908152f35b8234610246575f36600319011261024657600554905160089190911c6001600160a01b03168152602090f35b8234610246575f36600319011261024657602090611234611851565b8234610246575f366003190112610246576020906010549051908152f35b8234610246575f3660031901126102465761123460209254600c549061176d565b8234610246576112d136611723565b6112d9611ad1565b60ff600f541661141f57818111156113ef5782516370a0823160e01b8152308582015260209081816024817f000000000000000000000000bae323af6d43c40b4bcb1025b4e8683cc067b9de6001600160a01b03165afa8015610d01575f906113c0575b61134b9150865411156117ce565b611353611851565b1561138e577f2f4eda849ef83165191a700f2d897d93e1c925a34a2a47b663642030c271d9e7945082600d5581600e558351928352820152a1005b8460649185519162461bcd60e51b8352820152600d60248201526c66656564206e6f74206c69766560981b6044820152fd5b508181813d83116113e8575b6113d68183611798565b810103126102465761134b905161133d565b503d6113cc565b825162461bcd60e51b8152602081860152600a602482015269189859081c195c9a5bd960b21b6044820152606490fd5b825162461bcd60e51b81526020818601526009602482015268199a5b985b1a5e995960ba1b6044820152606490fd5b8234610246576020366003190112610246576020906001600160a01b0361147361170d565b165f5260128252805f20549051908152f35b8234610246575f36600319011261024657602090600c549051908152f35b8234610246575f366003190112610246576020906011549051908152f35b90503461024657606036600319011261024657803560243591604435906114e6611ad1565b82151580611586575b8061157d575b1561154d5750611548907f6fd6b8f0d01d2a93cf2a7a0faaa35c0a5580391621661f7d6ea593287eb575cb9483600755846008558160095551938493846040919493926060820195825260208201520152565b0390a1005b606490602086519162461bcd60e51b8352820152600a60248201526962616420626f756e647360b01b6044820152fd5b508382116114f5565b508315156114ef565b8234610246575f36600319011261024657600a5490516001600160a01b039091168152602090f35b8234610246575f366003190112610246576020905162093a808152f35b82346102465760203660031901126102465761162f916116346115fa6003548335611739565b61160561074f611851565b9485917f0000000000000000000000000000000000000000000000000000000005f5e10090611739565b611760565b5f1981019190821161164d57506020926112349161177a565b601190634e487b7160e01b5f525260245ffd5b8234610246573660031901126102465761167861170d565b611680611ad1565b600a80546001600160a01b0319166001600160a01b0392909216919091179055602435600b55005b8234610246575f3660031901126102465760065490516001600160a01b039091168152602090f35b8234610246575f36600319011261024657602091549051908152f35b34610246575f3660031901126102465760209061ffff60065460a01c168152f35b600435906001600160a01b038216820361024657565b6040906003190112610246576004359060243590565b8181029291811591840414171561174c57565b634e487b7160e01b5f52601160045260245ffd5b9190820180921161174c57565b9190820391821161174c57565b8115611784570490565b634e487b7160e01b5f52601260045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176117ba57604052565b634e487b7160e01b5f52604160045260245ffd5b156117d557565b60405162461bcd60e51b81526020600482015260086024820152671d5b999d5b99195960c21b6044820152606490fd5b519069ffffffffffffffffffff8216820361024657565b908160a09103126102465761183081611805565b9160208201519160408101519161184e608060608401519301611805565b90565b611859611afc565b60408051633fabe5a360e21b81529060a0826004817f00000000000000000000000078f3556b67e17df817d51ef5a990cdaf09e8d3a96001600160a01b03165afa8015611a25575f925f916119ed575b505f8313156119b7578015611980576118c2904261176d565b60075410611950576118f47f0000000000000000000000000000000000000000000000000000000005f5e1008361177a565b6008548110159081611943575b501561190b575090565b5162461bcd60e51b815260206004820152601260248201527171756f7465206f7574206f662072616e676560701b6044820152606490fd5b905060095410155f611901565b5162461bcd60e51b815260206004820152600a6024820152691cdd185b19481999595960b21b6044820152606490fd5b815162461bcd60e51b815260206004820152601060248201526f1a5b98dbdb5c1b195d19481c9bdd5b9960821b6044820152606490fd5b815162461bcd60e51b815260206004820152600f60248201526e3130b2103332b2b21030b739bbb2b960891b6044820152606490fd5b9050611a1291925060a03d60a011611a1e575b611a0a8183611798565b81019061181c565b5093925050915f6118a9565b503d611a00565b50513d5f823e3d90fd5b600d548015159081611a87575b5080611a7c575b80611a6f575b80611a62575b80611a575790565b50600c546004541190565b5060ff6005541615611a4f565b5060ff600f541615611a49565b50600e544210611a43565b90504210155f611a3c565b3d15611acc573d9067ffffffffffffffff82116117ba5760405191611ac1601f8201601f191660200184611798565b82523d5f602084013e565b606090565b5f546001600160a01b03163303611ae457565b60405163118cdaa760e01b8152336004820152602490fd5b600a546001600160a01b03168015611c385760a060049160405192838092633fabe5a360e21b82525afa908115611c2d575f905f92611c08575b50611bd2578015611b8d57611b4b904261176d565b600b541015611b5657565b60405162461bcd60e51b815260206004820152600f60248201526e73657175656e63657220677261636560881b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f696e636f6d706c6574652073657175656e63657220726f756e640000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d39b2b8bab2b731b2b9103237bbb760911b6044820152606490fd5b9050611c23915060a03d60a011611a1e57611a0a8183611798565b505091505f611b36565b6040513d5f823e3d90fd5b50565b60405163a9059cbb60e01b602082019081526001600160a01b0393841660248301526044808301959095529381529092608082019067ffffffffffffffff8211838310176117ba576020925f92604052519082865af115611c2d575f513d611cc657508082163b155b611cac575050565b604051635274afe760e01b81529116600482015260249150fd5b60011415611ca4565b600260015414611ce0576002600155565b604051633ee5aeb560e01b8152600490fdfeb12d6e8f8d18df97d5f13abced381e0d1f1a2cdb53a3270b338178dca2de1521a2646970667358221220f31d80bcf3ae97918fe85566db0f68d508870fe2e2ad344ad4cb8e1c407f34be64736f6c63430008180033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| Adult Brokers (AGE) | AGE | 161,738,197.734688 | — | — |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xb346f5…b825fa | 7 days agoMon, 10 Aug 2026 13:27:18 UTC | 0x2bdd59…920e | [0] 0x000000000000…f8090c26 data: 0x000000000000000000…674d65a3 |
| 0x6780c0…2e26bd | 7 days agoMon, 10 Aug 2026 09:54:06 UTC | 0x2bdd59…920e | [0] 0x000000000000…d571ce3a data: 0x000000000000000000…a22e4634 |
| 0x2a42ac…c40efb | 7 days agoMon, 10 Aug 2026 04:04:25 UTC | 0x2bdd59…920e | [0] 0x000000000000…3c3ec6b4 data: 0x000000000000000000…a19fe395 |
| 0xc4f32b…4b2cfb | 8 days agoSun, 09 Aug 2026 23:03:36 UTC | 0x2bdd59…920e | [0] 0x000000000000…123765a5 data: 0x000000000000000000…bd26d600 |
| 0xd0af0c…1d0ddb | 8 days agoSun, 09 Aug 2026 22:40:29 UTC | 0x2bdd59…920e | [0] 0x000000000000…05eb749b data: 0x000000000000000000…bd26d600 |
| 0x91a68e…84cebd | 8 days agoSun, 09 Aug 2026 20:50:06 UTC | 0x2bdd59…920e | [0] 0x000000000000…a79b6ec2 data: 0x000000000000000000…b8cb774c |
| 0xf688b9…706eec | 8 days agoSun, 09 Aug 2026 20:12:06 UTC | 0x2bdd59…920e | [0] 0x000000000000…d4be72ce data: 0x000000000000000000…b8cb774c |
| 0x192202…3fe297 | 8 days agoSun, 09 Aug 2026 20:00:33 UTC | 0x2bdd59…920e | [0] 0x000000000000…a134a3fa data: 0x000000000000000000…b8cb774c |
| 0xcaa284…96b704 | 8 days agoSun, 09 Aug 2026 17:28:13 UTC | 0x2bdd59…920e | [0] 0x000000000000…2e4a4334 data: 0x000000000000000000…b25617c9 |
| 0x467dff…7d99a4 | 8 days agoSun, 09 Aug 2026 17:25:28 UTC | 0x2bdd59…920e | [0] 0x000000000000…2e4a4334 data: 0x000000000000000000…b25617c9 |
| 0xa19af8…af2867 | 8 days agoSun, 09 Aug 2026 17:25:18 UTC | 0x2bdd59…920e | [0] 0x000000000000…6e2f5e1b data: 0x000000000000000000…b25617c9 |
| 0xaffe5a…2649aa | 8 days agoSun, 09 Aug 2026 17:08:23 UTC | 0x2bdd59…920e | [0] 0x000000000000…d571ce3a data: 0x000000000000000000…b25617c9 |
| 0x24840d…834c12 | 8 days agoSun, 09 Aug 2026 17:06:18 UTC | 0x2bdd59…920e | [0] 0x000000000000…d571ce3a data: 0x000000000000000000…b25617c9 |
| 0x8d72dd…4a85f4 | 8 days agoSun, 09 Aug 2026 16:56:52 UTC | 0x2bdd59…920e | [0] 0x000000000000…296f633b data: 0x000000000000000000…b25617c9 |
| 0xd60e25…743c65 | 8 days agoSun, 09 Aug 2026 16:49:35 UTC | 0x2bdd59…920e | [0] 0x000000000000…fc37c2d1 data: 0x000000000000000000…b25617c9 |
| 0x0e6b34…436fed | 8 days agoSun, 09 Aug 2026 16:08:09 UTC | 0x2bdd59…920e | [0] 0x000000000000…cce06e74 data: 0x000000000000000000…b25617c9 |
| 0x1ae77a…28d00b | 8 days agoSun, 09 Aug 2026 15:59:27 UTC | 0x2bdd59…920e | [0] 0x000000000000…fe2c12f2 data: 0x000000000000000000…b25617c9 |
| 0x400be9…834840 | 8 days agoSun, 09 Aug 2026 15:58:50 UTC | 0x2bdd59…920e | [0] 0x000000000000…fe2c12f2 data: 0x000000000000000000…b25617c9 |
| 0x5d33cc…f35422 | 8 days agoSun, 09 Aug 2026 15:49:39 UTC | 0x2bdd59…920e | [0] 0x000000000000…04b9861d data: 0x000000000000000000…b25617c9 |
| 0xb0578a…410b8a | 8 days agoSun, 09 Aug 2026 15:47:21 UTC | 0x2bdd59…920e | [0] 0x000000000000…04b9861d data: 0x000000000000000000…b25617c9 |
| 0x7a4d23…c41bb5 | 8 days agoSun, 09 Aug 2026 15:46:23 UTC | 0x2bdd59…920e | [0] 0x000000000000…04b9861d data: 0x000000000000000000…b25617c9 |
| 0x4de843…11bd3b | 8 days agoSun, 09 Aug 2026 15:42:05 UTC | 0x2bdd59…920e | [0] 0x000000000000…166d6dbb data: 0x000000000000000000…b25617c9 |
| 0xb79b82…6e576f | 8 days agoSun, 09 Aug 2026 15:35:18 UTC | 0x2bdd59…920e | [0] 0x000000000000…a0cf9e78 data: 0x000000000000000000…b25617c9 |
| 0xd930aa…f1eb73 | 8 days agoSun, 09 Aug 2026 15:18:15 UTC | 0x2bdd59…920e | [0] 0x000000000000…2b569a83 data: 0x000000000000000000…b25617c9 |
| 0xa72b82…68f7fe | 8 days agoSun, 09 Aug 2026 15:14:45 UTC | 0x2bdd59…920e | [0] 0x000000000000…640e406e data: 0x000000000000000000…b25617c9 |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xb346f5…b825fa | buy | 32,833,719 | 7 days agoMon, 10 Aug 2026 13:27:18 UTC | 0xfcc5…0c26 | IN | Sale | $7.050.00369 ETH | 0.00000371 | |
| 0x6780c0…2e26bd | buy | 32,706,086 | 7 days agoMon, 10 Aug 2026 09:54:06 UTC | 0x9c45…ce3a | IN | Sale | $1.400.00073 ETH | 0.00000286 | |
| 0x2a42ac…c40efb | buy | 32,496,779 | 7 days agoMon, 10 Aug 2026 04:04:25 UTC | 0xbc0d…c6b4 | IN | Sale | $0.150.00007 ETH | 0.00000298 | |
| 0xc4f32b…4b2cfb | buy | 32,316,539 | 8 days agoSun, 09 Aug 2026 23:03:36 UTC | 0x9d57…65a5 | IN | Sale | $1.400.00073 ETH | 0.00000348 | |
| 0xd0af0c…1d0ddb | buy | 32,302,680 | 8 days agoSun, 09 Aug 2026 22:40:29 UTC | 0xa5a5…749b | IN | Sale | $3.500.00183 ETH | 0.00000397 | |
| 0x91a68e…84cebd | buy | 32,236,478 | 8 days agoSun, 09 Aug 2026 20:50:06 UTC | 0xbebb…6ec2 | IN | Sale | $0.700.00036 ETH | 0.00000346 | |
| 0xf688b9…706eec | buy | 32,213,694 | 8 days agoSun, 09 Aug 2026 20:12:06 UTC | 0xced3…72ce | IN | Sale | $2.030.00106 ETH | 0.00000341 | |
| 0x192202…3fe297 | buy | 32,206,770 | 8 days agoSun, 09 Aug 2026 20:00:33 UTC | 0xa498…a3fa | IN | Sale | $1.400.00073 ETH | 0.00000290 | |
| 0xcaa284…96b704 | buy | 32,115,457 | 8 days agoSun, 09 Aug 2026 17:28:13 UTC | 0x1103…4334 | IN | Sale | $0.700.00036 ETH | 0.00000292 | |
| 0x467dff…7d99a4 | buy | 32,113,791 | 8 days agoSun, 09 Aug 2026 17:25:28 UTC | 0x1103…4334 | IN | Sale | $0.200.00010 ETH | 0.00000394 | |
| 0xa19af8…af2867 | buy | 32,113,695 | 8 days agoSun, 09 Aug 2026 17:25:18 UTC | 0x97a7…5e1b | IN | Sale | $1.010.00053 ETH | 0.00000384 | |
| 0xaffe5a…2649aa | buy | 32,103,568 | 8 days agoSun, 09 Aug 2026 17:08:23 UTC | 0x9c45…ce3a | IN | Sale | $0.700.00036 ETH | 0.00000290 | |
| 0x24840d…834c12 | buy | 32,102,305 | 8 days agoSun, 09 Aug 2026 17:06:18 UTC | 0x9c45…ce3a | IN | Sale | $0.700.00036 ETH | 0.00000379 | |
| 0x8d72dd…4a85f4 | buy | 32,096,662 | 8 days agoSun, 09 Aug 2026 16:56:52 UTC | 0x2a0e…633b | IN | Sale | $0.700.00036 ETH | 0.00000382 | |
| 0xd60e25…743c65 | buy | 32,092,297 | 8 days agoSun, 09 Aug 2026 16:49:35 UTC | 0x9136…c2d1 | IN | Sale | $0.200.00010 ETH | 0.00000335 | |
| 0x0e6b34…436fed | buy | 32,067,447 | 8 days agoSun, 09 Aug 2026 16:08:09 UTC | 0xf1a2…6e74 | IN | Sale | $1.400.00073 ETH | 0.00000334 | |
| 0x1ae77a…28d00b | buy | 32,062,235 | 8 days agoSun, 09 Aug 2026 15:59:27 UTC | 0x1423…12f2 | IN | Sale | $0.200.00010 ETH | 0.00000286 | |
| 0x400be9…834840 | buy | 32,061,870 | 8 days agoSun, 09 Aug 2026 15:58:50 UTC | 0x1423…12f2 | IN | Sale | $0.200.00010 ETH | 0.00000382 | |
| 0x5d33cc…f35422 | buy | 32,056,358 | 8 days agoSun, 09 Aug 2026 15:49:39 UTC | 0xa0c9…861d | IN | Sale | $0.200.00010 ETH | 0.00000289 | |
| 0xb0578a…410b8a | buy | 32,054,987 | 8 days agoSun, 09 Aug 2026 15:47:21 UTC | 0xa0c9…861d | IN | Sale | $0.410.00021 ETH | 0.00000289 | |
| 0x7a4d23…c41bb5 | buy | 32,054,403 | 8 days agoSun, 09 Aug 2026 15:46:23 UTC | 0xa0c9…861d | IN | Sale | $0.200.00010 ETH | 0.00000377 | |
| 0x4de843…11bd3b | buy | 32,051,822 | 8 days agoSun, 09 Aug 2026 15:42:05 UTC | 0x9015…6dbb | IN | Sale | $7.000.00366 ETH | 0.00000332 | |
| 0xb79b82…6e576f | buy | 32,047,757 | 8 days agoSun, 09 Aug 2026 15:35:18 UTC | 0xe771…9e78 | IN | Sale | $0.700.00036 ETH | 0.00000380 | |
| 0xd930aa…f1eb73 | buy | 32,037,534 | 8 days agoSun, 09 Aug 2026 15:18:15 UTC | 0xa1c6…9a83 | IN | Sale | $0.200.00010 ETH | 0.00000381 | |
| 0xa72b82…68f7fe | buy | 32,035,448 | 8 days agoSun, 09 Aug 2026 15:14:45 UTC | 0xd3e3…406e | IN | Sale | $1.400.00073 ETH | 0.00000290 |
| 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 | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xb346f59f…b825fa | Transfer | 32,833,719 | 7 days agoMon, 10 Aug 2026 13:27:18 UTC | 0x0fb6…b029 | OUT | 0xfcc5…0c26 | 70,380.000000 AGE | Adult Brokers (AGE) | |
| 0x6780c0a4…2e26bd | Transfer | 32,706,086 | 7 days agoMon, 10 Aug 2026 09:54:06 UTC | 0x0fb6…b029 | OUT | 0x9c45…ce3a | 14,075.999999 AGE | Adult Brokers (AGE) | |
| 0x2a42acd6…c40efb | Transfer | 32,496,779 | 7 days agoMon, 10 Aug 2026 04:04:25 UTC | 0x0fb6…b029 | OUT | 0xbc0d…c6b4 | 1,530.000000 AGE | Adult Brokers (AGE) | |
| 0xc4f32b89…4b2cfb | Transfer | 32,316,539 | 8 days agoSun, 09 Aug 2026 23:03:36 UTC | 0x0fb6…b029 | OUT | 0x9d57…65a5 | 14,076.000000 AGE | Adult Brokers (AGE) | |
| 0xd0af0c0c…1d0ddb | Transfer | 32,302,680 | 8 days agoSun, 09 Aug 2026 22:40:29 UTC | 0x0fb6…b029 | OUT | 0xa5a5…749b | 35,190.000000 AGE | Adult Brokers (AGE) | |
| 0x91a68ed3…84cebd | Transfer | 32,236,478 | 8 days agoSun, 09 Aug 2026 20:50:06 UTC | 0x0fb6…b029 | OUT | 0xbebb…6ec2 | 7,037.999999 AGE | Adult Brokers (AGE) | |
| 0xf688b9d3…706eec | Transfer | 32,213,694 | 8 days agoSun, 09 Aug 2026 20:12:06 UTC | 0x0fb6…b029 | OUT | 0xced3…72ce | 20,400.000000 AGE | Adult Brokers (AGE) | |
| 0x192202f8…3fe297 | Transfer | 32,206,770 | 8 days agoSun, 09 Aug 2026 20:00:33 UTC | 0x0fb6…b029 | OUT | 0xa498…a3fa | 14,075.999999 AGE | Adult Brokers (AGE) | |
| 0xcaa284ee…96b704 | Transfer | 32,115,457 | 8 days agoSun, 09 Aug 2026 17:28:13 UTC | 0x0fb6…b029 | OUT | 0x1103…4334 | 7,037.999999 AGE | Adult Brokers (AGE) | |
| 0x467dff9f…7d99a4 | Transfer | 32,113,791 | 8 days agoSun, 09 Aug 2026 17:25:28 UTC | 0x0fb6…b029 | OUT | 0x1103…4334 | 2,040.000000 AGE | Adult Brokers (AGE) | |
| 0xa19af844…af2867 | Transfer | 32,113,695 | 8 days agoSun, 09 Aug 2026 17:25:18 UTC | 0x0fb6…b029 | OUT | 0x97a7…5e1b | 10,200.000000 AGE | Adult Brokers (AGE) | |
| 0xaffe5a82…2649aa | Transfer | 32,103,568 | 8 days agoSun, 09 Aug 2026 17:08:23 UTC | 0x0fb6…b029 | OUT | 0x9c45…ce3a | 7,037.999999 AGE | Adult Brokers (AGE) | |
| 0x24840d65…834c12 | Transfer | 32,102,305 | 8 days agoSun, 09 Aug 2026 17:06:18 UTC | 0x0fb6…b029 | OUT | 0x9c45…ce3a | 7,037.999999 AGE | Adult Brokers (AGE) | |
| 0x8d72ddba…4a85f4 | Transfer | 32,096,662 | 8 days agoSun, 09 Aug 2026 16:56:52 UTC | 0x0fb6…b029 | OUT | 0x2a0e…633b | 7,037.999999 AGE | Adult Brokers (AGE) | |
| 0xd60e25e1…743c65 | Transfer | 32,092,297 | 8 days agoSun, 09 Aug 2026 16:49:35 UTC | 0x0fb6…b029 | OUT | 0x9136…c2d1 | 2,040.000000 AGE | Adult Brokers (AGE) | |
| 0x0e6b340f…436fed | Transfer | 32,067,447 | 8 days agoSun, 09 Aug 2026 16:08:09 UTC | 0x0fb6…b029 | OUT | 0xf1a2…6e74 | 14,075.999999 AGE | Adult Brokers (AGE) | |
| 0x1ae77aab…28d00b | Transfer | 32,062,235 | 8 days agoSun, 09 Aug 2026 15:59:27 UTC | 0x0fb6…b029 | OUT | 0x1423…12f2 | 2,040.000000 AGE | Adult Brokers (AGE) | |
| 0x400be905…834840 | Transfer | 32,061,870 | 8 days agoSun, 09 Aug 2026 15:58:50 UTC | 0x0fb6…b029 | OUT | 0x1423…12f2 | 2,040.000000 AGE | Adult Brokers (AGE) | |
| 0x5d33cc57…f35422 | Transfer | 32,056,358 | 8 days agoSun, 09 Aug 2026 15:49:39 UTC | 0x0fb6…b029 | OUT | 0xa0c9…861d | 2,040.000000 AGE | Adult Brokers (AGE) | |
| 0xb0578a33…410b8a | Transfer | 32,054,987 | 8 days agoSun, 09 Aug 2026 15:47:21 UTC | 0x0fb6…b029 | OUT | 0xa0c9…861d | 4,080.000000 AGE | Adult Brokers (AGE) | |
| 0x7a4d2389…c41bb5 | Transfer | 32,054,403 | 8 days agoSun, 09 Aug 2026 15:46:23 UTC | 0x0fb6…b029 | OUT | 0xa0c9…861d | 2,040.000000 AGE | Adult Brokers (AGE) | |
| 0x4de8431a…11bd3b | Transfer | 32,051,822 | 8 days agoSun, 09 Aug 2026 15:42:05 UTC | 0x0fb6…b029 | OUT | 0x9015…6dbb | 70,380.000000 AGE | Adult Brokers (AGE) | |
| 0xb79b8227…6e576f | Transfer | 32,047,757 | 8 days agoSun, 09 Aug 2026 15:35:18 UTC | 0x0fb6…b029 | OUT | 0xe771…9e78 | 7,037.999999 AGE | Adult Brokers (AGE) | |
| 0xd930aa9d…f1eb73 | Transfer | 32,037,534 | 8 days agoSun, 09 Aug 2026 15:18:15 UTC | 0x0fb6…b029 | OUT | 0xa1c6…9a83 | 2,040.000000 AGE | Adult Brokers (AGE) | |
| 0xa72b82a7…68f7fe | Transfer | 32,035,448 | 8 days agoSun, 09 Aug 2026 15:14:45 UTC | 0x0fb6…b029 | OUT | 0xd3e3…406e | 14,075.999999 AGE | Adult Brokers (AGE) |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 32,833,719 | 7 days agoMon, 10 Aug 2026 13:27:18 UTC | 0xb346f5…b825fa | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00369 ETH |
| 32,706,086 | 7 days agoMon, 10 Aug 2026 09:54:06 UTC | 0x6780c0…2e26bd | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00073 ETH |
| 32,496,779 | 7 days agoMon, 10 Aug 2026 04:04:25 UTC | 0x2a42ac…c40efb | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00007 ETH |
| 32,316,539 | 8 days agoSun, 09 Aug 2026 23:03:36 UTC | 0xc4f32b…4b2cfb | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00073 ETH |
| 32,302,680 | 8 days agoSun, 09 Aug 2026 22:40:29 UTC | 0xd0af0c…1d0ddb | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00183 ETH |
| 32,236,478 | 8 days agoSun, 09 Aug 2026 20:50:06 UTC | 0x91a68e…84cebd | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00036 ETH |
| 32,213,694 | 8 days agoSun, 09 Aug 2026 20:12:06 UTC | 0xf688b9…706eec | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00106 ETH |
| 32,206,770 | 8 days agoSun, 09 Aug 2026 20:00:33 UTC | 0x192202…3fe297 | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00073 ETH |
| 32,115,457 | 8 days agoSun, 09 Aug 2026 17:28:13 UTC | 0xcaa284…96b704 | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00036 ETH |
| 32,113,791 | 8 days agoSun, 09 Aug 2026 17:25:28 UTC | 0x467dff…7d99a4 | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00010 ETH |
| 32,113,695 | 8 days agoSun, 09 Aug 2026 17:25:18 UTC | 0xa19af8…af2867 | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00053 ETH |
| 32,103,568 | 8 days agoSun, 09 Aug 2026 17:08:23 UTC | 0xaffe5a…2649aa | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00036 ETH |
| 32,102,305 | 8 days agoSun, 09 Aug 2026 17:06:18 UTC | 0x24840d…834c12 | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00036 ETH |
| 32,096,662 | 8 days agoSun, 09 Aug 2026 16:56:52 UTC | 0x8d72dd…4a85f4 | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00036 ETH |
| 32,092,297 | 8 days agoSun, 09 Aug 2026 16:49:35 UTC | 0xd60e25…743c65 | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00010 ETH |
| 32,067,447 | 8 days agoSun, 09 Aug 2026 16:08:09 UTC | 0x0e6b34…436fed | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00073 ETH |
| 32,062,235 | 8 days agoSun, 09 Aug 2026 15:59:27 UTC | 0x1ae77a…28d00b | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00010 ETH |
| 32,061,870 | 8 days agoSun, 09 Aug 2026 15:58:50 UTC | 0x400be9…834840 | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00010 ETH |
| 32,056,358 | 8 days agoSun, 09 Aug 2026 15:49:39 UTC | 0x5d33cc…f35422 | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00010 ETH |
| 32,054,987 | 8 days agoSun, 09 Aug 2026 15:47:21 UTC | 0xb0578a…410b8a | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00021 ETH |
| 32,054,403 | 8 days agoSun, 09 Aug 2026 15:46:23 UTC | 0x7a4d23…c41bb5 | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00010 ETH |
| 32,051,822 | 8 days agoSun, 09 Aug 2026 15:42:05 UTC | 0x4de843…11bd3b | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00366 ETH |
| 32,047,757 | 8 days agoSun, 09 Aug 2026 15:35:18 UTC | 0xb79b82…6e576f | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00036 ETH |
| 32,037,534 | 8 days agoSun, 09 Aug 2026 15:18:15 UTC | 0xd930aa…f1eb73 | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00010 ETH |
| 32,035,448 | 8 days agoSun, 09 Aug 2026 15:14:45 UTC | 0xa72b82…68f7fe | CALL | buy | 0x0fb6…b029 | OUT | 0x82e2…db8e | 0.00073 ETH |