| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";
import {Governable} from "./Governable.sol";
/// @title CatnipToken (CATNIP)
/// @notice Cap-bound ERC20 with EIP-2612 permit and revocable-then-frozen
/// minter authority. Buyback price protection lives in
/// `TreasuryV3` (Uniswap V3 pool-oracle tick guard) — the
/// token itself carries no price logic.
/// @dev See `docs/TOKENOMICS.md` §2 for the numerical anchors. All
/// numeric magic in this file traces back to TOKENOMICS.md.
contract CatnipToken is ERC20, ERC20Permit, Governable {
// ---------------------------------------------------------------
// Constants
// ---------------------------------------------------------------
/// @notice Absolute ceiling the admin can never raise MAX_SUPPLY past.
/// 10× the genesis cap (1M → 10M) — bounds the worst-case dilution
/// lever even before MAX_SUPPLY is frozen. Hard constant.
uint256 public constant MAX_SUPPLY_CEILING = 10_000_000 * 1e18;
/// @dev Freeze keys (see Governable).
bytes32 public constant KEY_MAX_SUPPLY = keccak256("CATNIP_MAX_SUPPLY");
// ---------------------------------------------------------------
// Tunable economic params
// ---------------------------------------------------------------
/// @notice Hard cap on $CATNIP supply (cumulative-mint ceiling, true-burn).
/// @dev Genesis: 1M tokens (Model A, all pre-minted, mint renounced).
/// Admin-tunable within [totalMinted, MAX_SUPPLY_CEILING];
/// freezable via KEY_MAX_SUPPLY. Intended to be frozen at mainnet
/// to preserve the fair-launch promise. Deploy script pre-mints
/// 960k to the GridMining reserve + 40k float to the deployer;
/// GridMining transfers (not mints).
uint256 public MAX_SUPPLY = 1_000_000 * 1e18;
// ---------------------------------------------------------------
// Mint authority
// ---------------------------------------------------------------
/// @notice Address authorized to call `mint`. Typically `GridMining`
/// once deployed.
address public minter;
/// @notice Once true, `setMinter` is permanently disabled.
bool public minterFrozen;
/// @notice Monotonic count of all $CATNIP ever minted. NEVER decreases
/// on burn. The hard cap is a *cumulative-mint* ceiling
/// (true burn): once `totalMinted == MAX_SUPPLY`, emission
/// stops forever and burned supply is gone for good — it does
/// NOT reopen mint headroom (that would be ORE-style "bury").
/// Locked by the coordinator + DIFFERENTIATION.md +
/// TOKENOMICS.md §5.4 + the tokenomics-v1 ADR.
uint256 public totalMinted;
// ---------------------------------------------------------------
// Events
// ---------------------------------------------------------------
event MinterChanged(address indexed previous, address indexed current);
event MinterFrozen();
event MaxSupplyChanged(uint256 previous, uint256 current);
// ---------------------------------------------------------------
// Errors
// ---------------------------------------------------------------
error NotMinter();
error MinterAlreadyFrozen();
error MintCapExceeded(uint256 attempted, uint256 cap);
error MaxSupplyBelowMinted(uint256 requested, uint256 minted);
error MaxSupplyAboveCeiling(uint256 requested, uint256 ceiling);
// ---------------------------------------------------------------
// Constructor
// ---------------------------------------------------------------
// BRAND TRANCHÉ 2026-07-08 : CATNIP/$CATNIP (PORT.md).
constructor(address initialOwner)
ERC20("Catnip", "CATNIP")
ERC20Permit("Catnip")
Governable(initialOwner)
{}
// ---------------------------------------------------------------
// Economic-param admin surface
// ---------------------------------------------------------------
/// @notice Re-tune the supply hard cap. Bounded: cannot drop below
/// what has already been minted (would otherwise strand mint
/// accounting), nor exceed MAX_SUPPLY_CEILING. Freezable via
/// KEY_MAX_SUPPLY.
function setMaxSupply(uint256 newMaxSupply) external onlyOwner notFrozen(KEY_MAX_SUPPLY) {
if (newMaxSupply < totalMinted) revert MaxSupplyBelowMinted(newMaxSupply, totalMinted);
if (newMaxSupply > MAX_SUPPLY_CEILING) revert MaxSupplyAboveCeiling(newMaxSupply, MAX_SUPPLY_CEILING);
emit MaxSupplyChanged(MAX_SUPPLY, newMaxSupply);
MAX_SUPPLY = newMaxSupply;
}
// ---------------------------------------------------------------
// Mint authority surface
// ---------------------------------------------------------------
/// @notice Mint $CATNIP. Restricted to the current minter. Reverts if
/// the cumulative amount ever minted would exceed
/// `MAX_SUPPLY`. True-burn semantics: the ceiling is on
/// lifetime mint, NOT on live `totalSupply()`, so burns do
/// not reopen mint headroom.
function mint(address to, uint256 amount) external {
if (msg.sender != minter) revert NotMinter();
uint256 mintedAfter = totalMinted + amount;
if (mintedAfter > MAX_SUPPLY) revert MintCapExceeded(mintedAfter, MAX_SUPPLY);
totalMinted = mintedAfter;
_mint(to, amount);
}
/// @notice Burn $CATNIP from the caller's balance. True burn — the
/// tokens are gone and the cumulative-mint ceiling does NOT
/// move, so this supply can never be re-minted.
function burn(uint256 amount) external {
_burn(msg.sender, amount);
}
/// @notice Burn $CATNIP from `from`'s balance, spending the caller's
/// allowance. Used by `Staking.burnForBoost` to burn the
/// staker's boost payment in a single call.
function burnFrom(address from, uint256 amount) external {
_spendAllowance(from, msg.sender, amount);
_burn(from, amount);
}
/// @notice Replace the minter. No-op until `freezeMinter` is called,
/// at which point the minter becomes immutable.
function setMinter(address newMinter) external onlyOwner {
if (minterFrozen) revert MinterAlreadyFrozen();
address prev = minter;
minter = newMinter;
emit MinterChanged(prev, newMinter);
}
/// @notice Lock the minter forever. Mint authority can never be
/// transferred again.
function freezeMinter() external onlyOwner {
if (minterFrozen) revert MinterAlreadyFrozen();
minterFrozen = true;
emit MinterFrozen();
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "initialOwner",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "AboveMax",
"type": "error",
"inputs": [
{
"name": "requested",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "max",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "BelowMin",
"type": "error",
"inputs": [
{
"name": "requested",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "min",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ECDSAInvalidSignature",
"type": "error",
"inputs": []
},
{
"name": "ECDSAInvalidSignatureLength",
"type": "error",
"inputs": [
{
"name": "length",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ECDSAInvalidSignatureS",
"type": "error",
"inputs": [
{
"name": "s",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "ERC20InsufficientAllowance",
"type": "error",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "allowance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "needed",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC20InsufficientBalance",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"name": "balance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "needed",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC20InvalidApprover",
"type": "error",
"inputs": [
{
"name": "approver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidReceiver",
"type": "error",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidSender",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidSpender",
"type": "error",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC2612ExpiredSignature",
"type": "error",
"inputs": [
{
"name": "deadline",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC2612InvalidSigner",
"type": "error",
"inputs": [
{
"name": "signer",
"type": "address",
"internalType": "address"
},
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "InvalidAccountNonce",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
},
{
"name": "currentNonce",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "InvalidShortString",
"type": "error",
"inputs": []
},
{
"name": "MaxSupplyAboveCeiling",
"type": "error",
"inputs": [
{
"name": "requested",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "ceiling",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "MaxSupplyBelowMinted",
"type": "error",
"inputs": [
{
"name": "requested",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "minted",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "MintCapExceeded",
"type": "error",
"inputs": [
{
"name": "attempted",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "cap",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "MinterAlreadyFrozen",
"type": "error",
"inputs": []
},
{
"name": "NotMinter",
"type": "error",
"inputs": []
},
{
"name": "OwnableInvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ParamIsFrozen",
"type": "error",
"inputs": [
{
"name": "key",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"name": "StringTooLong",
"type": "error",
"inputs": [
{
"name": "str",
"type": "string",
"internalType": "string"
}
]
},
{
"name": "Approval",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "EIP712DomainChanged",
"type": "event",
"inputs": [],
"anonymous": false
},
{
"name": "MaxSupplyChanged",
"type": "event",
"inputs": [
{
"name": "previous",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "current",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "MinterChanged",
"type": "event",
"inputs": [
{
"name": "previous",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "current",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "MinterFrozen",
"type": "event",
"inputs": [],
"anonymous": false
},
{
"name": "OwnershipTransferStarted",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "ParamFrozen",
"type": "event",
"inputs": [
{
"name": "key",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
}
],
"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": "DOMAIN_SEPARATOR",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "KEY_MAX_SUPPLY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "MAX_SUPPLY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MAX_SUPPLY_CEILING",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "acceptOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "allowance",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "approve",
"type": "function",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "balanceOf",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "burn",
"type": "function",
"inputs": [
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "burnFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "eip712Domain",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "fields",
"type": "bytes1",
"internalType": "bytes1"
},
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "version",
"type": "string",
"internalType": "string"
},
{
"name": "chainId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "verifyingContract",
"type": "address",
"internalType": "address"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "extensions",
"type": "uint256[]",
"internalType": "uint256[]"
}
],
"stateMutability": "view"
},
{
"name": "freezeMinter",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "freezeParam",
"type": "function",
"inputs": [
{
"name": "key",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "mint",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "minter",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "minterFrozen",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "name",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "nonces",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "paramFrozen",
"type": "function",
"inputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "pendingOwner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "permit",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "deadline",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "v",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "r",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "s",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMaxSupply",
"type": "function",
"inputs": [
{
"name": "newMaxSupply",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMinter",
"type": "function",
"inputs": [
{
"name": "newMinter",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "totalMinted",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"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": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}
]0x610160346200053f57601f62001e8438819003918201601f19168301916001600160401b0383118484101762000320578084926020946040528339810103126200053f57516001600160a01b03811681036200053f5760405190620000648262000543565b600682526504361746e69760d41b9081602084015260405191620000888362000543565b60068352602083015260405192620000a08462000543565b600684526504341544e49560d41b602085015260405192620000c28462000543565b60018452603160f81b60208501528051906001600160401b038211620003205760035490600182811c9216801562000534575b60208310146200040d5781601f849311620004c1575b50602090601f831160011462000438575f926200042c575b50508160011b915f199060031b1c1916176003555b83516001600160401b0381116200032057600454600181811c9116801562000421575b60208210146200040d57601f8111620003a9575b50602094601f821160011462000340579481929394955f9262000334575b50508160011b915f199060031b1c1916176004555b620001ad816200055f565b610120908152620001be8462000717565b9161014092835260208151910120938460e0526020815191012093610100948086524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c081019181831060018060401b0384111762000320576040839052815190206080523060c0526001600160a01b038516156200030a575050600980546001600160a01b0319908116909155600880546001600160a01b03958616928116831790915560405194167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a369d3c21bcecceda1000000600b556115bf9384620008c5853960805184611071015260a0518461113d015260c0518461103b015260e051846110c0015251836110e601525182610695015251816106bf0152f35b631e4fbdf760e01b82525f60c490910152602490fd5b634e487b7160e01b5f52604160045260245ffd5b015190505f806200018d565b601f1982169560045f5260205f20915f5b888110620003905750836001959697981062000377575b505050811b01600455620001a2565b01515f1960f88460031b161c191690555f808062000368565b9192602060018192868501518155019401920162000351565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81016020841062000405575b601f830160051c82018110620003f95750506200016f565b5f8155600101620003e1565b5080620003e1565b634e487b7160e01b5f52602260045260245ffd5b90607f16906200015b565b015190505f8062000123565b60035f9081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9350601f198516905b818110620004a857509084600195949392106200048f575b505050811b0160035562000138565b01515f1960f88460031b161c191690555f808062000480565b9293602060018192878601518155019501930162000468565b60035f529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101916020851062000529575b90601f859493920160051c01905b8181106200051a57506200010b565b5f81558493506001016200050b565b9091508190620004fd565b91607f1691620000f5565b5f80fd5b604081019081106001600160401b038211176200032057604052565b80516020919082811015620005fb575090601f8251116200059c57808251920151908083106200058e57501790565b825f19910360031b1b161790565b90604051809263305a27a960e01b82528060048301528251908160248401525f935b828510620005e1575050604492505f838284010152601f80199101168101030190fd5b8481018201518686016044015293810193859350620005be565b6001600160401b03811162000320576005928354926001938481811c911680156200070c575b838210146200040d57601f8111620006d8575b5081601f84116001146200067257509282939183925f9462000666575b50501b915f199060031b1c191617905560ff90565b015192505f8062000651565b919083601f198116875f52845f20945f905b88838310620006bd5750505010620006a4575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f808062000697565b85870151885590960195948501948793509081019062000684565b855f5284601f845f209201871c820191601f8601881c015b8281106200070057505062000634565b5f8155018590620006f0565b90607f169062000621565b805160209081811015620007a35750601f8251116200074457808251920151908083106200058e57501790565b90604051809263305a27a960e01b82528060048301528251908160248401525f935b82851062000789575050604492505f838284010152601f80199101168101030190fd5b848101820151868601604401529381019385935062000766565b906001600160401b0382116200032057600654926001938481811c91168015620008b9575b838210146200040d57601f811162000882575b5081601f84116001146200081a57509282939183925f946200080e575b50501b915f199060031b1c19161760065560ff90565b015192505f80620007f8565b919083601f19811660065f52845f20945f905b888383106200086757505050106200084e575b505050811b0160065560ff90565b01515f1960f88460031b161c191690555f808062000840565b8587015188559096019594850194879350908101906200082d565b60065f5284601f845f20920160051c820191601f860160051c015b828110620008ad575050620007db565b5f81550185906200089d565b90607f1690620007c856fe608060409080825260049081361015610016575f80fd5b5f3560e01c90816306fdde0314610cad575080630754617214610c85578063095ea7b314610c5c57806318160ddd14610c3e57806320fdda6614610c0457806323b872dd14610bc857806330fd4ca614610ba2578063313ce56714610b8757806332cb6b0c14610b695780633644e51514610b4657806340c10f1914610a6357806342966c6814610a4657806359a1d69c14610a195780636f8b44b01461092957806370a08231146108f3578063715018a61461088e57806379ba50971461080257806379cc6790146107d35780637ecebe001461079c57806384b0196e1461067f5780638b38ac7a146106205780638da5cb5b146105f857806395d89b411461050d578063a2309ff8146104ef578063a9059cbb146104bf578063aa5825d51461049a578063d505accf1461033a578063dd62ed3e146102f1578063df3bb1cb1461029a578063e30c397814610272578063f2fde38b146102065763fca3b5aa14610180575f80fd5b3461020257602036600319011261020257610199610dba565b906101a2611202565b600c549260ff8460a01c166101f65750506001600160a01b039081166001600160a01b031983168117600c5591167f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f65f80a3005b5162e256eb60e51b8152fd5b5f80fd5b346102025760203660031901126102025761021f610dba565b610227611202565b600980546001600160a01b0319166001600160a01b039283169081179091556008549091167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227005f80a3005b8234610202575f3660031901126102025760095490516001600160a01b039091168152602090f35b50346102025760203660031901126102025735906102b6611202565b815f52600a6020525f20600160ff198254161790557fe92e44bc964ea5b6cb7a437f0ea8cf145b3db2993f35919b6a113a9beabc80eb5f80a2005b823461020257806003193601126102025760209061030d610dba565b610315610dd0565b9060018060a01b038091165f5260018452825f2091165f528252805f20549051908152f35b50346102025760e036600319011261020257610354610dba565b61035c610dd0565b906044359260643560843560ff81168103610202578142116104835760018060a01b039081851692835f526007602052885f209081549160018301905589519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98452868c840152858a1660608401528a608084015260a083015260c082015260c0815260e0810181811067ffffffffffffffff821117610470578a525190206104409161043791610411611038565b908b519161190160f01b83526002830152602282015260c43591604260a4359220611479565b90929192611506565b168181036104555761045386868661122e565b005b86516325c0072360e11b815292830152602482015260449150fd5b604187634e487b7160e01b5f525260245ffd5b865163313c898160e11b8152808401839052602490fd5b8234610202575f36600319011261020257602090516a084595161401484a0000008152f35b82346102025780600319360112610202576020906104e86104de610dba565b6024359033610f5e565b5160018152f35b8234610202575f36600319011261020257602090600d549051908152f35b5034610202575f36600319011261020257815191825f835461052e81610de6565b90818452602095600191876001821691825f146105d1575050600114610575575b5050506105719291610562910385610e4e565b51928284938452830190610d7c565b0390f35b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8284106105b9575050508201018161056261057161054f565b8054848a0186015288955087949093019281016105a0565b60ff19168782015293151560051b860190930193508492506105629150610571905061054f565b8234610202575f3660031901126102025760085490516001600160a01b039091168152602090f35b5034610202575f36600319011261020257610639611202565b600c549160ff8360a01c166101f65760ff60a01b198316600160a01b17600c557fdb6fee722a15df38cbe14aebc18424e0625f9bc61cf27fc94ff4d00bfaeb990b5f80a1005b5034610202575f366003190112610202576106b97f00000000000000000000000000000000000000000000000000000000000000006112bb565b916106e37f00000000000000000000000000000000000000000000000000000000000000006113bc565b815191602091602084019484861067ffffffffffffffff871117610789575061073e826020928761073199989795525f85528151988998600f60f81b8a5260e0868b015260e08a0190610d7c565b9188830390890152610d7c565b914660608701523060808701525f60a087015285830360c087015251918281520192915f5b82811061077257505050500390f35b835185528695509381019392810192600101610763565b604190634e487b7160e01b5f525260245ffd5b8234610202576020366003190112610202576020906001600160a01b036107c1610dba565b165f5260078252805f20549051908152f35b823461020257366003190112610202576104536107ee610dba565b602435906107fd823383610e91565b611163565b509034610202575f36600319011261020257600954916001600160a01b039133838516036108775750506bffffffffffffffffffffffff60a01b8092166009556008549133908316176008553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b60249250519063118cdaa760e01b82523390820152fd5b34610202575f366003190112610202576108a6611202565b600980546001600160a01b03199081169091556008805491821690555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b8234610202576020366003190112610202576020906001600160a01b03610918610dba565b165f525f8252805f20549051908152f35b50903461020257602036600319011261020257813591610947611202565b7f5d141ab7e9c7507190869b464e0fad88e559ed6e5a9004cea5891a6bfae47fa7805f52600a60205260ff835f205416610a055750600d548084106109eb57506a084595161401484a0000008084116109d157837fa626f93317e2474b716846a09cf0e28aacb96052643b252fe97704208fecf9b584600b548151908152836020820152a1600b55005b836044935192631840db9560e21b84528301526024820152fd5b836044935192633cc0462560e01b84528301526024820152fd5b60249251916374ca98b160e01b8352820152fd5b50903461020257602036600319011261020257602091355f52600a825260ff815f20541690519015158152f35b503461020257602036600319011261020257610453903533611163565b509034610202578060031936011261020257610a7d610dba565b600c5460243592916001600160a01b039182163303610b3657610aa284600d54610e70565b600b54808211610b195750600d5516928315610b0457506020827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92610aeb5f95600254610e70565b60025585855284835280852082815401905551908152a3005b5f602492519163ec442f0560e01b8352820152fd5b8451637c2e2b2b60e11b8152808801929092526024820152604490fd5b8251633e34a41b60e21b81528590fd5b8234610202575f36600319011261020257602090610b62611038565b9051908152f35b8234610202575f36600319011261020257602090600b549051908152f35b8234610202575f366003190112610202576020905160128152f35b8234610202575f3660031901126102025760209060ff600c5460a01c1690519015158152f35b8234610202576060366003190112610202576020906104e8610be8610dba565b610bf0610dd0565b60443591610bff833383610e91565b610f5e565b8234610202575f36600319011261020257602090517f5d141ab7e9c7507190869b464e0fad88e559ed6e5a9004cea5891a6bfae47fa78152f35b8234610202575f366003190112610202576020906002549051908152f35b82346102025780600319360112610202576020906104e8610c7b610dba565b602435903361122e565b8234610202575f36600319011261020257600c5490516001600160a01b039091168152602090f35b8334610202575f3660031901126102025760035490825f610ccd84610de6565b808352602094600190866001821691825f14610d5a575050600114610cff575b50506105719291610562910385610e4e565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410610d425750505082010181610562610ced565b8054848a018601528895508794909301928101610d2c565b60ff19168682015292151560051b850190920192508391506105629050610ced565b91908251928382525f5b848110610da6575050825f602080949584010152601f8019910116010190565b602081830181015184830182015201610d86565b600435906001600160a01b038216820361020257565b602435906001600160a01b038216820361020257565b90600182811c92168015610e14575b6020831014610e0057565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610df5565b6040810190811067ffffffffffffffff821117610e3a57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610e3a57604052565b91908201809211610e7d57565b634e487b7160e01b5f52601160045260245ffd5b919060018060a01b0380931692835f526001602052604093845f2091831691825f52602052845f2054925f198410610ecc575b505050505050565b848410610f2e57508015610f17578115610f00575f526001602052835f20905f5260205203905f20555f8080808080610ec4565b8451634a1406b160e11b81525f6004820152602490fd5b845163e602df0560e01b81525f6004820152602490fd5b8551637dc7a0d960e11b81526001600160a01b039190911660048201526024810184905260448101859052606490fd5b916001600160a01b03808416928315611020571692831561100857825f525f60205260405f205490828210610fd65750817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f5260405f20818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101829052606490fd5b60405163ec442f0560e01b81525f6004820152602490fd5b604051634b637e8f60e11b81525f6004820152602490fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061113a575b15611093577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117610e3a5760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461106a565b91906001600160a01b03831690811561102057815f525f60205260405f2054938185106111d057506020817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef925f95968587528684520360408620558060025403600255604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481018590526044810191909152606490fd5b6008546001600160a01b0316330361121657565b60405163118cdaa760e01b8152336004820152602490fd5b6001600160a01b039081169182156112a3571691821561128b5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526001825260405f20855f5282528060405f2055604051908152a3565b604051634a1406b160e11b81525f6004820152602490fd5b60405163e602df0560e01b81525f6004820152602490fd5b60ff81146112f95760ff811690601f82116112e757604051916112dd83610e1e565b8252602082015290565b604051632cd44ac360e21b8152600490fd5b50604051600554815f61130b83610de6565b808352926020906001908181169081156113985750600114611339575b505061133692500382610e4e565b90565b91509260055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0935f925b82841061138057506113369450505081016020015f80611328565b85548785018301529485019486945092810192611365565b9150506020925061133694915060ff191682840152151560051b8201015f80611328565b60ff81146113de5760ff811690601f82116112e757604051916112dd83610e1e565b50604051600654815f6113f083610de6565b80835292602090600190818116908115611398575060011461141a57505061133692500382610e4e565b91509260065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f935f925b82841061146157506113369450505081016020015f80611328565b85548785018301529485019486945092810192611446565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116114fb579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156114f0575f516001600160a01b038116156114e657905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b60048110156115755780611518575050565b600181036115325760405163f645eedf60e01b8152600490fd5b600281036115535760405163fce698f760e01b815260048101839052602490fd5b60031461155d5750565b602490604051906335e2f38360e21b82526004820152fd5b634e487b7160e01b5f52602160045260245ffdfea26469706673582212205e06790a931f420fc11202d2b1980dddcf9516d7bffa496c105afa7c4004e96d64736f6c63430008180033000000000000000000000000cc0fd2a3de622f58450565b3374c1ad11f7e3c70
0x608060409080825260049081361015610016575f80fd5b5f3560e01c90816306fdde0314610cad575080630754617214610c85578063095ea7b314610c5c57806318160ddd14610c3e57806320fdda6614610c0457806323b872dd14610bc857806330fd4ca614610ba2578063313ce56714610b8757806332cb6b0c14610b695780633644e51514610b4657806340c10f1914610a6357806342966c6814610a4657806359a1d69c14610a195780636f8b44b01461092957806370a08231146108f3578063715018a61461088e57806379ba50971461080257806379cc6790146107d35780637ecebe001461079c57806384b0196e1461067f5780638b38ac7a146106205780638da5cb5b146105f857806395d89b411461050d578063a2309ff8146104ef578063a9059cbb146104bf578063aa5825d51461049a578063d505accf1461033a578063dd62ed3e146102f1578063df3bb1cb1461029a578063e30c397814610272578063f2fde38b146102065763fca3b5aa14610180575f80fd5b3461020257602036600319011261020257610199610dba565b906101a2611202565b600c549260ff8460a01c166101f65750506001600160a01b039081166001600160a01b031983168117600c5591167f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f65f80a3005b5162e256eb60e51b8152fd5b5f80fd5b346102025760203660031901126102025761021f610dba565b610227611202565b600980546001600160a01b0319166001600160a01b039283169081179091556008549091167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227005f80a3005b8234610202575f3660031901126102025760095490516001600160a01b039091168152602090f35b50346102025760203660031901126102025735906102b6611202565b815f52600a6020525f20600160ff198254161790557fe92e44bc964ea5b6cb7a437f0ea8cf145b3db2993f35919b6a113a9beabc80eb5f80a2005b823461020257806003193601126102025760209061030d610dba565b610315610dd0565b9060018060a01b038091165f5260018452825f2091165f528252805f20549051908152f35b50346102025760e036600319011261020257610354610dba565b61035c610dd0565b906044359260643560843560ff81168103610202578142116104835760018060a01b039081851692835f526007602052885f209081549160018301905589519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98452868c840152858a1660608401528a608084015260a083015260c082015260c0815260e0810181811067ffffffffffffffff821117610470578a525190206104409161043791610411611038565b908b519161190160f01b83526002830152602282015260c43591604260a4359220611479565b90929192611506565b168181036104555761045386868661122e565b005b86516325c0072360e11b815292830152602482015260449150fd5b604187634e487b7160e01b5f525260245ffd5b865163313c898160e11b8152808401839052602490fd5b8234610202575f36600319011261020257602090516a084595161401484a0000008152f35b82346102025780600319360112610202576020906104e86104de610dba565b6024359033610f5e565b5160018152f35b8234610202575f36600319011261020257602090600d549051908152f35b5034610202575f36600319011261020257815191825f835461052e81610de6565b90818452602095600191876001821691825f146105d1575050600114610575575b5050506105719291610562910385610e4e565b51928284938452830190610d7c565b0390f35b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8284106105b9575050508201018161056261057161054f565b8054848a0186015288955087949093019281016105a0565b60ff19168782015293151560051b860190930193508492506105629150610571905061054f565b8234610202575f3660031901126102025760085490516001600160a01b039091168152602090f35b5034610202575f36600319011261020257610639611202565b600c549160ff8360a01c166101f65760ff60a01b198316600160a01b17600c557fdb6fee722a15df38cbe14aebc18424e0625f9bc61cf27fc94ff4d00bfaeb990b5f80a1005b5034610202575f366003190112610202576106b97f4361746e697000000000000000000000000000000000000000000000000000066112bb565b916106e37f31000000000000000000000000000000000000000000000000000000000000016113bc565b815191602091602084019484861067ffffffffffffffff871117610789575061073e826020928761073199989795525f85528151988998600f60f81b8a5260e0868b015260e08a0190610d7c565b9188830390890152610d7c565b914660608701523060808701525f60a087015285830360c087015251918281520192915f5b82811061077257505050500390f35b835185528695509381019392810192600101610763565b604190634e487b7160e01b5f525260245ffd5b8234610202576020366003190112610202576020906001600160a01b036107c1610dba565b165f5260078252805f20549051908152f35b823461020257366003190112610202576104536107ee610dba565b602435906107fd823383610e91565b611163565b509034610202575f36600319011261020257600954916001600160a01b039133838516036108775750506bffffffffffffffffffffffff60a01b8092166009556008549133908316176008553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b60249250519063118cdaa760e01b82523390820152fd5b34610202575f366003190112610202576108a6611202565b600980546001600160a01b03199081169091556008805491821690555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b8234610202576020366003190112610202576020906001600160a01b03610918610dba565b165f525f8252805f20549051908152f35b50903461020257602036600319011261020257813591610947611202565b7f5d141ab7e9c7507190869b464e0fad88e559ed6e5a9004cea5891a6bfae47fa7805f52600a60205260ff835f205416610a055750600d548084106109eb57506a084595161401484a0000008084116109d157837fa626f93317e2474b716846a09cf0e28aacb96052643b252fe97704208fecf9b584600b548151908152836020820152a1600b55005b836044935192631840db9560e21b84528301526024820152fd5b836044935192633cc0462560e01b84528301526024820152fd5b60249251916374ca98b160e01b8352820152fd5b50903461020257602036600319011261020257602091355f52600a825260ff815f20541690519015158152f35b503461020257602036600319011261020257610453903533611163565b509034610202578060031936011261020257610a7d610dba565b600c5460243592916001600160a01b039182163303610b3657610aa284600d54610e70565b600b54808211610b195750600d5516928315610b0457506020827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92610aeb5f95600254610e70565b60025585855284835280852082815401905551908152a3005b5f602492519163ec442f0560e01b8352820152fd5b8451637c2e2b2b60e11b8152808801929092526024820152604490fd5b8251633e34a41b60e21b81528590fd5b8234610202575f36600319011261020257602090610b62611038565b9051908152f35b8234610202575f36600319011261020257602090600b549051908152f35b8234610202575f366003190112610202576020905160128152f35b8234610202575f3660031901126102025760209060ff600c5460a01c1690519015158152f35b8234610202576060366003190112610202576020906104e8610be8610dba565b610bf0610dd0565b60443591610bff833383610e91565b610f5e565b8234610202575f36600319011261020257602090517f5d141ab7e9c7507190869b464e0fad88e559ed6e5a9004cea5891a6bfae47fa78152f35b8234610202575f366003190112610202576020906002549051908152f35b82346102025780600319360112610202576020906104e8610c7b610dba565b602435903361122e565b8234610202575f36600319011261020257600c5490516001600160a01b039091168152602090f35b8334610202575f3660031901126102025760035490825f610ccd84610de6565b808352602094600190866001821691825f14610d5a575050600114610cff575b50506105719291610562910385610e4e565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b828410610d425750505082010181610562610ced565b8054848a018601528895508794909301928101610d2c565b60ff19168682015292151560051b850190920192508391506105629050610ced565b91908251928382525f5b848110610da6575050825f602080949584010152601f8019910116010190565b602081830181015184830182015201610d86565b600435906001600160a01b038216820361020257565b602435906001600160a01b038216820361020257565b90600182811c92168015610e14575b6020831014610e0057565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610df5565b6040810190811067ffffffffffffffff821117610e3a57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117610e3a57604052565b91908201809211610e7d57565b634e487b7160e01b5f52601160045260245ffd5b919060018060a01b0380931692835f526001602052604093845f2091831691825f52602052845f2054925f198410610ecc575b505050505050565b848410610f2e57508015610f17578115610f00575f526001602052835f20905f5260205203905f20555f8080808080610ec4565b8451634a1406b160e11b81525f6004820152602490fd5b845163e602df0560e01b81525f6004820152602490fd5b8551637dc7a0d960e11b81526001600160a01b039190911660048201526024810184905260448101859052606490fd5b916001600160a01b03808416928315611020571692831561100857825f525f60205260405f205490828210610fd65750817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f5260405f20818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101829052606490fd5b60405163ec442f0560e01b81525f6004820152602490fd5b604051634b637e8f60e11b81525f6004820152602490fd5b307f000000000000000000000000eebb1540ce7a49aa58bc71b49f1cab73c5a47f336001600160a01b0316148061113a575b15611093577f08f037d1a4ce44db0dd92f639938ca64839d88c96bd73f779d2b330c03f08f9d90565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f41277338c47d40468ff5c4b7712fab80b40314137feca50edd7964972d66301160408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117610e3a5760405251902090565b507f0000000000000000000000000000000000000000000000000000000000001237461461106a565b91906001600160a01b03831690811561102057815f525f60205260405f2054938185106111d057506020817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef925f95968587528684520360408620558060025403600255604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481018590526044810191909152606490fd5b6008546001600160a01b0316330361121657565b60405163118cdaa760e01b8152336004820152602490fd5b6001600160a01b039081169182156112a3571691821561128b5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526001825260405f20855f5282528060405f2055604051908152a3565b604051634a1406b160e11b81525f6004820152602490fd5b60405163e602df0560e01b81525f6004820152602490fd5b60ff81146112f95760ff811690601f82116112e757604051916112dd83610e1e565b8252602082015290565b604051632cd44ac360e21b8152600490fd5b50604051600554815f61130b83610de6565b808352926020906001908181169081156113985750600114611339575b505061133692500382610e4e565b90565b91509260055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0935f925b82841061138057506113369450505081016020015f80611328565b85548785018301529485019486945092810192611365565b9150506020925061133694915060ff191682840152151560051b8201015f80611328565b60ff81146113de5760ff811690601f82116112e757604051916112dd83610e1e565b50604051600654815f6113f083610de6565b80835292602090600190818116908115611398575060011461141a57505061133692500382610e4e565b91509260065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f935f925b82841061146157506113369450505081016020015f80611328565b85548785018301529485019486945092810192611446565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116114fb579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156114f0575f516001600160a01b038116156114e657905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b60048110156115755780611518575050565b600181036115325760405163f645eedf60e01b8152600490fd5b600281036115535760405163fce698f760e01b815260048101839052602490fd5b60031461155d5750565b602490604051906335e2f38360e21b82526004820152fd5b634e487b7160e01b5f52602160045260245ffdfea26469706673582212205e06790a931f420fc11202d2b1980dddcf9516d7bffa496c105afa7c4004e96d64736f6c63430008180033
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x6a2423…25101b | 34 days agoSun, 12 Jul 2026 10:56:44 UTC | 0xe92e44…80eb | [0] 0x5d141ab7e9c7…fae47fa7 |
| 0x551e6e…9065f2 | 34 days agoSun, 12 Jul 2026 10:56:20 UTC | 0xdb6fee…990b | |
| 0xb0b851…021532 | 34 days agoSun, 12 Jul 2026 10:56:18 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…1f7e3c70 data: 0x000000000000000000…c9000000 |
| 0xe50df8…6bddbd | 34 days agoSun, 12 Jul 2026 10:56:16 UTC | Transfer | [0] 0x000000000000…00000000 [1] 0x000000000000…3f21d18b data: 0x000000000000000000…d8000000 |
| 0x00930a…998486 | 34 days agoSun, 12 Jul 2026 10:56:13 UTC | 0x3b0007…c0f6 | [0] 0x000000000000…00000000 [1] 0x000000000000…1f7e3c70 |
| 0xcaa0d0…6c2ea3 | 34 days agoSun, 12 Jul 2026 10:55:56 UTC | 0x8be007…57e0 | [0] 0x000000000000…00000000 [1] 0x000000000000…1f7e3c70 |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x6a2423…25101b | freezeParam | 7,750,160 | 34 days agoSun, 12 Jul 2026 10:56:44 UTC | 0xcc0f…3c70 | IN | Catnip | $0.000 ETH | 0.00000258 | |
| 0x551e6e…9065f2 | freezeMinter | 7,749,909 | 34 days agoSun, 12 Jul 2026 10:56:20 UTC | 0xcc0f…3c70 | IN | Catnip | $0.000 ETH | 0.00000157 | |
| 0xb0b851…021532 | Mint | 7,749,885 | 34 days agoSun, 12 Jul 2026 10:56:18 UTC | 0xcc0f…3c70 | IN | Catnip | $0.000 ETH | 0.00000322 | |
| 0xe50df8…6bddbd | Mint | 7,749,861 | 34 days agoSun, 12 Jul 2026 10:56:16 UTC | 0xcc0f…3c70 | IN | Catnip | $0.000 ETH | 0.00000507 | |
| 0x00930a…998486 | setMinter | 7,749,837 | 34 days agoSun, 12 Jul 2026 10:56:13 UTC | 0xcc0f…3c70 | IN | Catnip | $0.000 ETH | 0.00000257 |