// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import "./BondingCurveToken.sol";
/// @title LaunchpadFactory
/// @notice Permissionless factory for deploying new bonding-curve tokens ("hood.fun"-style launches).
contract LaunchpadFactory {
address public protocolTreasury;
address public admin;
// Default curve params — tune these for your target economics
uint256 public defaultBasePrice = 0.00000001 ether; // starting price per token
uint256 public defaultSlope = 0.0000000001 ether; // price growth per token
uint256 public defaultGraduationTarget = 4 ether; // reserve at which token graduates to DEX
// 80M sold via the curve + 20M reserved for the Uniswap V3 LP (see BondingCurveToken's
// LP_ALLOCATION_BPS = 2500, i.e. 25% of curveSupplyCap) = 100M total supply by default.
uint256 public defaultCurveSupplyCap = 80_000_000 * 1e18;
/// @notice LiquidityMigrator address every new token is wired to at launch. Deploy
/// LiquidityMigrator once, then call setDefaultMigrator() before launching tokens
/// if you want automatic Uniswap V3 graduation. Leave as address(0) to disable it.
address public defaultMigrator;
address[] public allTokens;
mapping(address => address) public tokenCreator;
mapping(address => address[]) private tokensByCreator;
/// @dev Deliberately no strings (name/symbol/metadataURI) in this event — those are always
/// readable directly off the deployed token contract, and packing multiple dynamic
/// strings into an emit's ABI encoding is what was triggering a stack-too-deep error
/// in Solidity's generated assembly. Read them from the token itself if you need them.
event TokenLaunched(
address indexed token,
address indexed creator,
address feeRecipient,
uint256 basePrice,
uint256 slope,
uint256 graduationTarget,
bool renounceImmediately
);
modifier onlyAdmin() {
require(msg.sender == admin, "not admin");
_;
}
constructor(address protocolTreasury_) {
require(protocolTreasury_ != address(0), "zero address");
protocolTreasury = protocolTreasury_;
admin = msg.sender;
}
/// @notice Launch a new bonding-curve token with default curve parameters.
/// @param feeRecipient Where the creator's claimed trading fees are sent. Pass address(0)
/// to default to your own (msg.sender's) wallet.
/// @param metadataURI Off-chain pointer (e.g. ipfs://<CID>) to a JSON blob with image,
/// description, and social links. Pass "" if you don't have one yet.
/// @param renounceImmediately If true, ownership is renounced in this same transaction —
/// irreversible, and permanently disables setFeeRecipient/setMetadataURI/setDexPool
/// for everyone including you. Fee claiming is unaffected either way.
function launchToken(
string calldata name,
string calldata symbol,
address feeRecipient,
string calldata metadataURI,
bool renounceImmediately
) external payable returns (address token) {
BondingCurveToken.LaunchParams memory p = BondingCurveToken.LaunchParams({
name: name,
symbol: symbol,
basePrice: defaultBasePrice,
slope: defaultSlope,
graduationReserveTarget: defaultGraduationTarget,
curveSupplyCap: defaultCurveSupplyCap,
creator: msg.sender,
protocolTreasury: protocolTreasury,
feeRecipient: feeRecipient,
metadataURI: metadataURI,
migrator: defaultMigrator,
renounceImmediately: renounceImmediately
});
token = _launch(p, bytes32(0), false);
if (msg.value > 0) {
BondingCurveToken(payable(token)).buy{value: msg.value}(0, msg.sender);
}
}
/// @notice Launch with custom curve parameters (advanced creators).
function launchTokenCustom(
string calldata name,
string calldata symbol,
uint256 basePrice,
uint256 slope,
uint256 graduationTarget,
uint256 curveSupplyCap,
address feeRecipient,
string calldata metadataURI,
bool renounceImmediately
) external payable returns (address token) {
require(basePrice > 0, "basePrice must be > 0");
require(graduationTarget > 0, "graduationTarget must be > 0");
require(curveSupplyCap > 0, "curveSupplyCap must be > 0");
BondingCurveToken.LaunchParams memory p = BondingCurveToken.LaunchParams({
name: name,
symbol: symbol,
basePrice: basePrice,
slope: slope,
graduationReserveTarget: graduationTarget,
curveSupplyCap: curveSupplyCap,
creator: msg.sender,
protocolTreasury: protocolTreasury,
feeRecipient: feeRecipient,
metadataURI: metadataURI,
migrator: defaultMigrator,
renounceImmediately: renounceImmediately
});
token = _launch(p, bytes32(0), false);
if (msg.value > 0) {
BondingCurveToken(payable(token)).buy{value: msg.value}(0, msg.sender);
}
}
/// @notice Launch at a vanity address you (or an offline miner) already found a salt for.
/// Mine the salt off-chain first with predictTokenAddress() / a script that mirrors
/// its formula, then call this with the winning salt. Same defaults as launchToken().
function launchTokenWithSalt(
string calldata name,
string calldata symbol,
address feeRecipient,
string calldata metadataURI,
bytes32 salt,
bool renounceImmediately
) external payable returns (address token) {
BondingCurveToken.LaunchParams memory p = BondingCurveToken.LaunchParams({
name: name,
symbol: symbol,
basePrice: defaultBasePrice,
slope: defaultSlope,
graduationReserveTarget: defaultGraduationTarget,
curveSupplyCap: defaultCurveSupplyCap,
creator: msg.sender,
protocolTreasury: protocolTreasury,
feeRecipient: feeRecipient,
metadataURI: metadataURI,
migrator: defaultMigrator,
renounceImmediately: renounceImmediately
});
token = _launch(p, salt, true);
if (msg.value > 0) {
BondingCurveToken(payable(token)).buy{value: msg.value}(0, msg.sender);
}
}
/// @dev Just 3 parameters now (instead of 11) — that's what actually fixes "stack too
/// deep" here. Building the LaunchParams struct in each caller above, rather than
/// passing its fields flat into this function, keeps this function's own local
/// variable count small too.
function _launch(BondingCurveToken.LaunchParams memory p, bytes32 salt, bool useSalt)
internal returns (address token)
{
token = useSalt ? address(new BondingCurveToken{salt: salt}(p)) : address(new BondingCurveToken(p));
allTokens.push(token);
tokenCreator[token] = msg.sender;
tokensByCreator[msg.sender].push(token);
address resolvedFeeRecipient = p.feeRecipient == address(0) ? msg.sender : p.feeRecipient;
emit TokenLaunched(
token, msg.sender, resolvedFeeRecipient,
p.basePrice, p.slope, p.graduationReserveTarget, p.renounceImmediately
);
}
// Note: an on-chain predictTokenAddress() helper used to live here. It's been removed —
// abi.encode()-ing a struct full of strings (name/symbol/metadataURI) hit the same
// stack-too-deep issue as the event above. scripts/mine-vanity.js already computes the
// exact same CREATE2 address prediction off-chain in plain JS, so nothing is lost —
// that script is the source of truth for vanity address mining.
function allTokensLength() external view returns (uint256) {
return allTokens.length;
}
/// @notice Returns up to `count` of the most recently launched tokens in one call, instead
/// of requiring `count` separate allTokens(i) reads from the frontend.
function getRecentTokens(uint256 count) external view returns (address[] memory result) {
uint256 total = allTokens.length;
uint256 n = count > total ? total : count;
result = new address[](n);
for (uint256 i = 0; i < n; i++) {
result[i] = allTokens[total - 1 - i];
}
}
/// @notice All tokens launched by a given address — powers a "my launches / claim fees" profile page.
function getTokensByCreator(address user) external view returns (address[] memory) {
return tokensByCreator[user];
}
// --- Admin controls for tuning defaults as market conditions change ---
function setDefaults(
uint256 basePrice_,
uint256 slope_,
uint256 graduationTarget_,
uint256 curveSupplyCap_
) external onlyAdmin {
defaultBasePrice = basePrice_;
defaultSlope = slope_;
defaultGraduationTarget = graduationTarget_;
defaultCurveSupplyCap = curveSupplyCap_;
}
/// @notice Wire (or disable, with address(0)) automatic Uniswap V3 graduation for all
/// tokens launched from here on. Existing tokens keep whatever migrator they
/// were launched with — this only affects future launches.
function setDefaultMigrator(address migrator_) external onlyAdmin {
defaultMigrator = migrator_;
}
function setProtocolTreasury(address newTreasury) external onlyAdmin {
require(newTreasury != address(0), "zero address");
protocolTreasury = newTreasury;
}
function setAdmin(address newAdmin) external onlyAdmin {
require(newAdmin != address(0), "zero address");
admin = newAdmin;
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "protocolTreasury_",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "TokenLaunched",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "creator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "feeRecipient",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "basePrice",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "slope",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "graduationTarget",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "renounceImmediately",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "admin",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "allTokens",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "allTokensLength",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "defaultBasePrice",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "defaultCurveSupplyCap",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "defaultGraduationTarget",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "defaultMigrator",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "defaultSlope",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "getRecentTokens",
"type": "function",
"inputs": [
{
"name": "count",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "result",
"type": "address[]",
"internalType": "address[]"
}
],
"stateMutability": "view"
},
{
"name": "getTokensByCreator",
"type": "function",
"inputs": [
{
"name": "user",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "address[]",
"internalType": "address[]"
}
],
"stateMutability": "view"
},
{
"name": "launchToken",
"type": "function",
"inputs": [
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"internalType": "string"
},
{
"name": "feeRecipient",
"type": "address",
"internalType": "address"
},
{
"name": "metadataURI",
"type": "string",
"internalType": "string"
},
{
"name": "renounceImmediately",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "payable"
},
{
"name": "launchTokenCustom",
"type": "function",
"inputs": [
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"internalType": "string"
},
{
"name": "basePrice",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "slope",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "graduationTarget",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "curveSupplyCap",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "feeRecipient",
"type": "address",
"internalType": "address"
},
{
"name": "metadataURI",
"type": "string",
"internalType": "string"
},
{
"name": "renounceImmediately",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "payable"
},
{
"name": "launchTokenWithSalt",
"type": "function",
"inputs": [
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"internalType": "string"
},
{
"name": "feeRecipient",
"type": "address",
"internalType": "address"
},
{
"name": "metadataURI",
"type": "string",
"internalType": "string"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "renounceImmediately",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "payable"
},
{
"name": "protocolTreasury",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "setAdmin",
"type": "function",
"inputs": [
{
"name": "newAdmin",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setDefaultMigrator",
"type": "function",
"inputs": [
{
"name": "migrator_",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setDefaults",
"type": "function",
"inputs": [
{
"name": "basePrice_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "slope_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "graduationTarget_",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "curveSupplyCap_",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setProtocolTreasury",
"type": "function",
"inputs": [
{
"name": "newTreasury",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "tokenCreator",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
}
]0x6080346100e057601f61398d38819003918201601f19168301916001600160401b038311848410176100e4578084926020946040528339810103126100e057516001600160a01b038116908190036100e0576402540be4006002556305f5e100600355673782dace9d9000006004556a422ca8b0a00a425000000060055580156100ac5760018060a01b031990815f5416175f553390600154161760015560405161389490816100f98239f35b60405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60a060409080825260048036101562000016575f80fd5b5f3560e01c91826306c11d7414620009e9575081630c5a61f8146200098d5781630c694896146200093c5781631bc2cbc914620006a457816323774af2146200066757816342d74cfe1462000647578163634282af146200060257816363982b3f14620005e2578163704b6c02146200058a57816378f3f38a146200047f5781637e2c1355146200043d578163803db96d14620004145781639e61463314620003ea578163a565507914620003ca578163b48d08bc1462000203578163d0dd9eae14620001e557508063d5c712751462000152578063dbb80e4214620001325763f851a4401462000105575f80fd5b346200012e575f3660031901126200012e5760015490516001600160a01b039091168152602090f35b5f80fd5b50346200012e575f3660031901126200012e576020906007549051908152f35b50346200012e576020806003193601126200012e57906001600160a01b0390816200017c62000ca5565b165f526009602052805f209281518093602086549283815201955f5260205f20925f915b838310620001cb57620001c78787620001bc828c038362000d95565b519182918262000d1d565b0390f35b8454811688529681019660019485019490920191620001a0565b82346200012e575f3660031901126200012e57602091549051908152f35b905060a03660031901126200012e5767ffffffffffffffff81358181116200012e5762000234903690840162000c74565b906024358381116200012e576200024f903690860162000c74565b9390916200025c62000cbc565b916064359081116200012e5762000277903690880162000c74565b919092608435958615158097036200012e5789956002546003548b549160055493600160a01b600190039c8d98895f5416978a600654169d51608052608051620002c19062000d63565b3690620002ce9262000db8565b608051523690620002df9262000db8565b608051602001528d6080510152608051606001526080516080015260805160a001523360805160c0015260805160e001521660805161010001523690620003269262000db8565b6080516101200152608051610140015260805161016001526080516200034c906200101c565b91346200035f575b506020925191168152f35b5f845191637deb602560e01b8352820152336024820152602081604481348688165af18015620003c057156200035457602090813d8311620003b8575b620003a8818362000d95565b810103126200012e575f62000354565b503d6200039c565b84513d5f823e3d90fd5b82346200012e575f3660031901126200012e576020906002549051908152f35b82346200012e575f3660031901126200012e5760065490516001600160a01b039091168152602090f35b82346200012e575f3660031901126200012e575f5490516001600160a01b039091168152602090f35b346200012e5760803660031901126200012e576200046760018060a01b0360015416331462000e02565b80356002556024356003556044359055606435600555005b82346200012e5760209060206003193601126200012e5760075483358181111562000582575080925b620004b38262000e77565b93620004c28451958662000d95565b828552601f19620004d38462000e77565b013660208701375f19808201918083115f5b868110620004fc57875180620001c78b8262000d1d565b816200056f5783818403018581116200055c576200051a9062000cd3565b90548a51831015620005495760039190911b1c6001600160a01b0316600582901b8a01870152600101620004e5565b60328c634e487b7160e01b5f525260245ffd5b60118b634e487b7160e01b5f525260245ffd5b60118a634e487b7160e01b5f525260245ffd5b9092620004a8565b346200012e5760203660031901126200012e57620005a762000ca5565b600154906001600160a01b0390620005c3338385161462000e02565b1690620005d282151562000e3b565b6001600160a01b03191617600155005b82346200012e575f3660031901126200012e576020906005549051908152f35b9050346200012e5760203660031901126200012e5735906007548210156200012e576200063160209262000cd3565b905491519160018060a01b039160031b1c168152f35b82346200012e575f3660031901126200012e576020906003549051908152f35b82346200012e5760203660031901126200012e576020906001600160a01b03806200069162000ca5565b165f5260088352815f2054169051908152f35b905060c03660031901126200012e5767ffffffffffffffff9080358281116200012e57620006d6903690830162000c74565b906024358481116200012e57620006f1903690850162000c74565b620006fe92919262000cbc565b956064358181116200012e5762000719903690880162000c74565b91909560a435948515158096036200012e5760025497600354948a54968d60055490600160a01b600190039b8c5f5416938d60065416978351996200075e8b62000d63565b36906200076b9262000db8565b895236906200077a9262000db8565b602088015286019b8c52606086019788526080860198895260a08601523360c086015260e08501528861010085019c168c523690620007b99262000db8565b610120830152610140820152610160810194855289519061273d808301938385109085111762000929578291620007fa916200112284396084359462000ed0565b03905ff580156200091f578480911697620008158962000f9a565b885f526008602052895f20336001600160601b0360a01b825416179055335f52600960205262000848898b5f2062000fda565b51168062000918575033945b5190519151925115159388519516855260208501528684015260608301526080820152827f1a00464aef75e337f94252b8f67bec4ac1928ebb0e2c64f744a2f28c5c3bc44260a03393a334620008af575b5060209151908152f35b5f835191637deb602560e01b835282015233602482015260208160448134865af180156200090e5715620008a557602090813d831162000906575b620008f6818362000d95565b810103126200012e575f620008a5565b503d620008ea565b83513d5f823e3d90fd5b9462000854565b88513d5f823e3d90fd5b60418a634e487b7160e01b5f525260245ffd5b346200012e5760203660031901126200012e576200095962000ca5565b6001546001600160a01b03919062000975908316331462000e02565b166001600160601b0360a01b60065416176006555f80f35b346200012e5760203660031901126200012e57620009aa62000ca5565b6001546001600160a01b039190620009c6908316331462000e02565b16620009d481151562000e3b565b6001600160601b0360a01b5f5416175f555f80f35b90915061012092836003193601126200012e5767ffffffffffffffff9183358381116200012e5762000a1f903690860162000c74565b91906024358581116200012e5762000a3b903690880162000c74565b604435986001600160a01b03979092916084359160c4358a8116929160a435918490036200012e5760e4359081116200012e578c62000a7d9136910162000c74565b94909561010435998a1515809b036200012e578f1562000c3a5750811562000bf757821562000bb4578c5f5416938d60065416998d519c62000abf8e62000d63565b369062000acc9262000db8565b8c52369062000adb9262000db8565b9d60209e8f8c01528b8b015260643560608b015260808a015260a08901523360c089015260e0880152610100870152369062000b179262000db8565b9084015261014083015261016082015262000b32906200101c565b923462000b42575b505191168152f35b5f825191637deb602560e01b83528201523360248201528481604481348789165af1801562000baa5790859162000b7b575b5062000b3a565b813d831162000ba2575b62000b91818362000d95565b810103126200012e57835f62000b74565b503d62000b85565b82513d5f823e3d90fd5b60648e60208e519162461bcd60e51b8352820152601a60248201527f6375727665537570706c79436170206d757374206265203e20300000000000006044820152fd5b60648e60208e519162461bcd60e51b8352820152601c60248201527f67726164756174696f6e546172676574206d757374206265203e2030000000006044820152fd5b6064915060208f62461bcd60e51b835282015260156024820152740626173655072696365206d757374206265203e203605c1b6044820152fd5b9181601f840112156200012e5782359167ffffffffffffffff83116200012e57602083818601950101116200012e57565b600435906001600160a01b03821682036200012e57565b604435906001600160a01b03821682036200012e57565b60075481101562000d095760075f527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801905f90565b634e487b7160e01b5f52603260045260245ffd5b60209060206040818301928281528551809452019301915f5b82811062000d45575050505090565b83516001600160a01b03168552938101939281019260010162000d36565b610180810190811067ffffffffffffffff82111762000d8157604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111762000d8157604052565b92919267ffffffffffffffff821162000d81576040519162000de5601f8201601f19166020018462000d95565b8294818452818301116200012e578281602093845f960137010152565b1562000e0a57565b60405162461bcd60e51b81526020600482015260096024820152683737ba1030b236b4b760b91b6044820152606490fd5b1562000e4357565b60405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606490fd5b67ffffffffffffffff811162000d815760051b60200190565b91908251928382525f5b84811062000ebb575050825f602080949584010152601f8019910116010190565b60208183018101518483018201520162000e9a565b60208152815162000ef0610180918260208501526101a084019062000e90565b9262000f0f602082015194601f19958686830301604087015262000e90565b906040810151606085015260608101516080850152608081015160a085015260a081015160c085015262000f8260c08201519260018060a01b0380941660e087015260e0830151846101009116818801528301518461012091168188015283015161014097878303018888015262000e90565b94810151916101609216828501520151151591015290565b600754600160401b81101562000d815780600162000fbc920160075562000cd3565b60018060a09493941b038084549260031b9316831b921b1916179055565b805490600160401b82101562000d81576001820180825582101562000d09575f5260205f20019060018060a01b03166001600160601b0360a01b825416179055565b906040805161273d80820182811067ffffffffffffffff82111762000d8157856200104f91849362001122853962000ed0565b03905ff0801562001117576001600160a01b0390811693620010718562000f9a565b845f526008602052825f20336001600160601b0360a01b825416179055335f526009602052620010a485845f2062000fda565b61010081015182168062001110575033925b80820151906060830151916101606080850151940151151594825196168652602086015284015260608301526080820152827f1a00464aef75e337f94252b8f67bec4ac1928ebb0e2c64f744a2f28c5c3bc44260a03393a3565b92620010b6565b50513d5f823e3d90fdfe61016060405234620007f7576200273d803803806200001e81620007fb565b928339810190602081830312620007f7578051906001600160401b038211620007f75701610180908181840312620007f7576040519182016001600160401b038111838210176200057f5760405280516001600160401b038111620007f757836200008b91830162000821565b825260208101516001600160401b038111620007f75783620000af91830162000821565b926020830193845260408201516040840152606082015160608401526080820151608084015260a082015160a0840152620000ed60c0830162000891565b60c08401526200010060e0830162000891565b60e084015262000114610100830162000891565b610100840152610120820151906001600160401b038211620007f7576200013d91830162000821565b61012083015262000152610140820162000891565b610140830152610160809101518015158103620007f7578183015260c082015182519351845190946001600160a01b03909216916001600160401b0382116200057f5760035490600182811c92168015620007ec575b6020831014620005605781601f8493116200077c575b50602090601f8311600114620006ef575f92620006e3575b50508160011b915f199060031b1c1916176003555b83516001600160401b0381116200057f57600454600181811c91168015620006d8575b60208210146200056057601f811162000674575b506020601f8211600114620006085781929394955f92620005fc575b50508160011b915f199060031b1c1916176004555b60016005558015620005e457600680546001600160a01b0319811683179091556001600160a01b03165f805160206200271d8339815191525f80a360c08201516001600160a01b0316151580620005cd575b15620005995760408201516080908152606083015160a090815290830151610100908152908301516101205260c0808401516001600160a01b0390811660e0908152850151811690915290830151168062000593575060c08201516001600160a01b03165b600780546001600160a01b0319166001600160a01b039290921691909117905561012082015180519092906001600160401b0381116200057f57600a54600181811c9116801562000574575b60208210146200056057601f81116200050a575b506020601f82116001146200049457819293945f9262000488575b50508160011b915f199060031b1c191617600a555b610140818101516001600160a01b03169052015162000453575b604051611e569081620008a7823960805181818161066c015281816106d501528181610e230152818161192a0152611cb5015260a05181818161074101528181610b3501528181610dfc0152611b8a015260c05181818161081b0152610ba6015260e051816116dd015261010051818181610b6f0152610d0201526101205181818161079d0152610c1f015261014051818181610d49015261104f0152f35b600680546001600160a01b031981169091555f906001600160a01b03165f805160206200271d8339815191528280a3620003b4565b015190505f8062000385565b600a5f9081525f80516020620026fd8339815191529190601f198416905b818110620004f157509583600195969710620004d8575b505050811b01600a556200039a565b01515f1960f88460031b161c191690555f8080620004c9565b9192602060018192868b015181550194019201620004b2565b600a5f525f80516020620026fd833981519152601f830160051c8101916020841062000555575b601f0160051c01905b8181106200054957506200036a565b5f81556001016200053a565b909150819062000531565b634e487b7160e01b5f52602260045260245ffd5b90607f169062000356565b634e487b7160e01b5f52604160045260245ffd5b6200030a565b60405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606490fd5b5060e08201516001600160a01b03161515620002a5565b604051631e4fbdf760e01b81525f6004820152602490fd5b015190505f806200023e565b60045f5260205f20905f5b601f19841681106200065b575060019394959683601f1981161062000642575b505050811b0160045562000253565b01515f1960f88460031b161c191690555f808062000633565b9091602060018192858b01518155019301910162000613565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c810160208410620006d0575b601f830160051c82018110620006c457505062000222565b5f8155600101620006ac565b5080620006ac565b90607f16906200020e565b015190505f80620001d6565b60035f90815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b91905b601f198416851062000760576001945083601f1981161062000747575b505050811b01600355620001eb565b01515f1960f88460031b161c191690555f808062000738565b818101518355602094850194600190930192909101906200071b565b60035f529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c810160208510620007e4575b90849392915b601f830160051c82018110620007d5575050620001be565b5f8155859450600101620007bd565b5080620007b7565b91607f1691620001a8565b5f80fd5b6040519190601f01601f191682016001600160401b038111838210176200057f57604052565b919080601f84011215620007f75782516001600160401b0381116200057f5760209062000857601f8201601f19168301620007fb565b92818452828287010111620007f7575f5b8181106200087d5750825f9394955001015290565b858101830151848201840152820162000868565b51906001600160a01b0382168203620007f75756fe604060808152600480361015610048575b361561001a575f80fd5b6020606492519162461bcd60e51b8352820152600960248201526875736520627579282960b81b6044820152fd5b5f3560e01c8063011566171461170c57806302d05d3f146116c957806303ee438c1461162357806306fdde0314611552578063095ea7b3146114a9578063177a9e9d1461148a57806318160ddd1461146c57806323b872dd1461137b578063313ce567146113605780633d2fa2d214611334578063469048401461130c57806370a08231146112d6578063715018a61461127b578063750521f51461107e5780637cd07e471461103b5780637deb602514610bd5578063803db96d14610b925780638232cd5a14610b5857806383caf27514610b1e57806387d92f9214610a4b57806387ff3ec214610a2d5780638da5cb5b14610a0557806395d89b4114610922578063a10954fe14610904578063a9059cbb146108d4578063aaf4a96614610800578063aaf5eb68146107de578063acfd7928146107c0578063b02ee62c14610786578063b31dfc8f146106aa578063be3782281461068f578063c7876ea414610655578063cc3cbd2a1461063a578063d2bf72641461061e578063d79875eb14610393578063dd62ed3e1461034a578063e74b981b146102ad578063e7c2b7721461028a5763f2fde38b03610010573461028657602036600319011261028657610212611798565b9061021b611a5b565b6001600160a01b03918216928315610270575050600654826bffffffffffffffffffffffff60a01b821617600655167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b5f80fd5b8234610286575f3660031901126102865760209060ff600b541690519015158152f35b5034610286576020366003190112610286576102c7611798565b6102cf611a5b565b6001600160a01b031691821561031857600780546001600160a01b03191684179055827f7a7b5a0a132f9e0581eb8527f66eae9ee89c2a3e79d4ac7e41a1f1f4d48a7fc25f80a2005b906020606492519162461bcd60e51b8352820152600c60248201526b7a65726f206164647265737360a01b6044820152fd5b8234610286578060031936011261028657602090610366611798565b61036e6117ae565b9060018060a01b038091165f5260018452825f2091165f528252805f20549051908152f35b50903461028657806003193601126102865760249082356103b2611b61565b6103c160ff600b5416156119c4565b80156105ee57335f526020935f855281835f2054106105b5576103e382611904565b61271090816103f18261189a565b04916103fc826118b0565b04926104118461040c8585611879565b611879565b96803588106105735782600c541061053a5733156105265750335f525f8852855f2054908582106104fb57509161049161049c92866104a79695335f525f8c5203885f205586600254036002555f88518881527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c3392a3600c54611879565b600c556009546118f7565b6009556008546118f7565b6008556104b48333611d37565b600254825191825260208201849052604082015233907f846c37eef631e0943682d87352ec117c20008eb7f425c9b85ac011a6d4774cc090606090a2600160055551908152f35b865163391434e360e21b81523391810191825260208201929092526040810186905281906060010390fd5b905f875191634b637e8f60e11b8352820152fd5b865162461bcd60e51b815291820189905260149082015273696e73756666696369656e74207265736572766560601b6044820152606490fd5b865162461bcd60e51b8152918201899052601c908201527f736c6970706167653a206e6174697665206f757420746f6f206c6f77000000006044820152606490fd5b825162461bcd60e51b815290810185905260148185015273696e73756666696369656e742062616c616e636560601b6044820152606490fd5b815162461bcd60e51b8152602081860152600b818501526a1e995c9bc8185b5bdd5b9d60aa1b6044820152606490fd5b8234610286575f36600319011261028657602090516109c48152f35b8234610286575f3660031901126102865760209051603c8152f35b8234610286575f36600319011261028657602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b8234610286575f366003190112610286576020905160288152f35b5090346102865760203660031901126102865781356002549261070182670de0b6b3a76400006106fa7f0000000000000000000000000000000000000000000000000000000000000000836118c6565b04956118c6565b915f19810191818311610773575061076561073f61076c94610736602098956ec097ce7bc90715b34b9f1000000000956118c6565b60011c906118f7565b7f00000000000000000000000000000000000000000000000000000000000000006118c6565b04906118f7565b9051908152f35b601190634e487b7160e01b5f525260245ffd5b8234610286575f36600319011261028657602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b8234610286575f366003190112610286576020906009549051908152f35b8234610286575f3660031901126102865760209051670de0b6b3a76400008152f35b5034610286575f36600319011261028657610819611b61565b7f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03821690338290036108a257509160209261086f6009548094610866821515611a1c565b5f600955611d37565b7f0f7f5b155b0b0ac6890709a2c7bf1b8bb3f675fff1e7840b4dd3c9acde59048b848351858152a2600160055551908152f35b606490602085519162461bcd60e51b8352820152600c60248201526b6e6f7420747265617375727960a01b6044820152fd5b82346102865780600319360112610286576020906108fd6108f3611798565b6024359033611a87565b5160018152f35b8234610286575f36600319011261028657602090600c549051908152f35b5034610286575f366003190112610286578151905f90805490610944826117c4565b808552916020916001918281169081156109d85750600114610980575b61097c8688610972828903836117fc565b5191829182611832565b0390f35b5f90815293507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8385106109c5575050505081016020016109728261097c5f610961565b80548686018401529382019381016109a8565b905061097c9795508693506020925061097294915060ff191682840152151560051b82010192945f610961565b8234610286575f3660031901126102865760065490516001600160a01b039091168152602090f35b8234610286575f366003190112610286576020906008549051908152f35b5034610286575f36600319011261028657610a64611b61565b6006546001600160a01b039190821633148015610b11575b15610add575060209160085491610a94831515611a1c565b5f600855610aa6838260075416611d37565b600754167fb0941a79b0a1d2dc32262e01138093b93ba4e92878c9b282875850dec054f009848351858152a2600160055551908152f35b606490602084519162461bcd60e51b8352820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b6044820152fd5b5081600754163314610a7c565b8234610286575f36600319011261028657602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b8234610286575f36600319011261028657602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b8234610286575f36600319011261028657517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b508160031936011261028657610be96117ae565b91610bf2611b61565b610c0160ff600b5416156119c4565b3415611008576001600160a01b03838116908115610fd457600254937f00000000000000000000000000000000000000000000000000000000000000009081861015610f91576127109384610c553461189a565b049785610c61346118b0565b0490610c718261040c8c34611879565b90610c7b82611b84565b9985358b10610f4e57610c8f8b88926118f7565b11610f1757610cb1610cbe9392610ca98c61049c94611cda565b600c546118f7565b9a8b600c556009546118f7565b60085560025486518881523460208201526040810182905290919033907ef93dbdb72854b6b6fb35433086556f2635fc83c37080c667496fecfa650fb490606090a37f0000000000000000000000000000000000000000000000000000000000000000881015610d38575b60208787600160055551908152f35b600160ff19600b541617600b5580947f00000000000000000000000000000000000000000000000000000000000000009485169384151580610f0e575b610dba575b505050505050816020947facfdce92da76539f5af2efc3aa76d42a7a92af4d723a23d144f58fdf1472921e92825191825286820152a15f80808080610d29565b909192939495506109c490818102918183041490151715610efb57610e879593610e5160209694610e20610e47958d9504958692670de0b6b3a76400009283917f00000000000000000000000000000000000000000000000000000000000000006118c6565b047f00000000000000000000000000000000000000000000000000000000000000006118f7565b60c01b0496611cda565b5f600c55875163fc22d0e560e01b8152309181019182526020820193909352604081019490945290948593849291839160600190565b03925af18015610ef157610ec6575b5060025481847facfdce92da76539f5af2efc3aa76d42a7a92af4d723a23d144f58fdf1472921e60205f80610d7a565b602090813d8311610eea575b610edc81836117fc565b81010312610286575f610e96565b503d610ed2565b82513d5f823e3d90fd5b601184634e487b7160e01b5f525260245ffd5b50891515610d75565b885162461bcd60e51b815260208187015260116024820152700657863656564732063757276652063617607c1b6044820152606490fd5b895162461bcd60e51b8152602081880152601c60248201527f736c6970706167653a20746f6b656e73206f757420746f6f206c6f77000000006044820152606490fd5b606490602086519162461bcd60e51b8352820152601860248201527f637572766520737570706c7920636170207265616368656400000000000000006044820152fd5b825162461bcd60e51b8152602081860152600e60248201526d1e995c9bc81c9958da5c1a595b9d60921b6044820152606490fd5b906020606492519162461bcd60e51b8352820152600d60248201526c1b9bc81d985b1d59481cd95b9d609a1b6044820152fd5b8234610286575f36600319011261028657517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461028657602091826003193601126102865781359267ffffffffffffffff92838511610286573660238601121561028657840135928311610286576024933660248583010111610286576110d2611a5b565b6110dd600a546117c4565b601f8111611219575b505f94601f851160011461116b57508360248192827f1c306e70c05992619e2128ad1ef88df75f36c9476282e59f51401b2abaa42e4e985f9161115e575b508360011b905f198560031b1c191617600a555b855196858896875286015201848401375f828201840152601f01601f19168101030190a1005b839150820101355f611124565b94601f198516600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8965f905b8282106111fe57505085927f1c306e70c05992619e2128ad1ef88df75f36c9476282e59f51401b2abaa42e4e97849384602494106111e3575b5050600183811b01600a55611138565b82018301355f19600386901b60f8161c191690555f806111d3565b8484018101358955600190980197928501929085019061119a565b600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8601f860160051c810191848710611271575b601f0160051c01905b81811061126657506110e6565b5f8155600101611259565b9091508190611250565b34610286575f36600319011261028657611293611a5b565b600680546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b8234610286576020366003190112610286576020906001600160a01b036112fb611798565b165f525f8252805f20549051908152f35b8234610286575f3660031901126102865760075490516001600160a01b039091168152602090f35b8234610286575f36600319011261028657600b54905160089190911c6001600160a01b03168152602090f35b8234610286575f366003190112610286576020905160128152f35b503461028657606036600319011261028657611395611798565b61139d6117ae565b906044359260018060a01b038216805f526001602052855f20335f52602052855f2054915f1983036113d8575b6020876108fd888888611a87565b85831061144057811561142a57331561141457505f908152600160209081528682203383528152908690209185900390915582906108fd6113ca565b6024905f885191634a1406b160e11b8352820152fd5b6024905f88519163e602df0560e01b8352820152fd5b8651637dc7a0d960e11b8152339181019182526020820193909352604081018690528291506060010390fd5b8234610286575f366003190112610286576020906002549051908152f35b5090346102865760203660031901126102865761076c60209235611904565b5090346102865780600319360112610286576114c3611798565b60243590331561153c576001600160a01b03169081156115265760209350335f5260018452825f20825f52845280835f205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b8251634a1406b160e11b81525f81860152602490fd5b825163e602df0560e01b81525f81860152602490fd5b8234610286575f3660031901126102865780515f600354611572816117c4565b808452906020906001908181169081156115f957506001146115a0575b61097c8587610972828803836117fc565b60035f90815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8385106115e6575050505081016020016109728261097c61158f565b80548686018401529382019381016115ca565b61097c9795508693506020925061097294915060ff191682840152151560051b820101929461158f565b8234610286575f3660031901126102865780515f600a54611643816117c4565b808452906020906001908181169081156115f957506001146116705761097c8587610972828803836117fc565b600a5f90815293507fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a85b8385106116b6575050505081016020016109728261097c61158f565b805486860184015293820193810161169a565b8234610286575f36600319011261028657517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461028657602036600319011261028657611726611798565b9061172f611a5b565b600b549260ff841615611761575050610100600160a81b031990911660089190911b610100600160a81b031617600b55005b906020606492519162461bcd60e51b835282015260116024820152701b9bdd0819dc98591d585d1959081e595d607a1b6044820152fd5b600435906001600160a01b038216820361028657565b602435906001600160a01b038216820361028657565b90600182811c921680156117f2575b60208310146117de57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916117d3565b90601f8019910116810190811067ffffffffffffffff82111761181e57604052565b634e487b7160e01b5f52604160045260245ffd5b602080825282518183018190529093925f5b82811061186557505060409293505f838284010152601f8019910116010190565b818101860151848201604001528501611844565b9190820391821161188657565b634e487b7160e01b5f52601160045260245ffd5b9060288202918083046028149015171561188657565b90603c820291808304603c149015171561188657565b8181029291811591840414171561188657565b81156118e3570490565b634e487b7160e01b5f52601260045260245ffd5b9190820180921161188657565b600254808211611989578161191891611879565b61195682670de0b6b3a764000061194f7f0000000000000000000000000000000000000000000000000000000000000000836118c6565b04926118c6565b5f198301928084116118865761073f6ec097ce7bc90715b34b9f10000000009261073661198696610765946118c6565b90565b60405162461bcd60e51b8152602060048201526013602482015272696e73756666696369656e7420737570706c7960681b6044820152606490fd5b156119cb57565b60405162461bcd60e51b8152602060048201526024808201527f426f6e64696e674375727665546f6b656e3a20616c7265616479206772616475604482015263185d195960e21b6064820152608490fd5b15611a2357565b60405162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b6044820152606490fd5b6006546001600160a01b03163303611a6f57565b60405163118cdaa760e01b8152336004820152602490fd5b916001600160a01b03808416928315611b495716928315611b3157825f525f60205260405f205490828210611aff5750817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f5260405f20818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101829052606490fd5b60405163ec442f0560e01b81525f6004820152602490fd5b604051634b637e8f60e11b81525f6004820152602490fd5b600260055414611b72576002600555565b604051633ee5aeb560e01b8152600490fd5b600254907f0000000000000000000000000000000000000000000000000000000000000000918215611c945790611bca610e2092670de0b6b3a7640000938491866118c6565b908360011c90611bda83806118c6565b916001600160fe1b0381160361188657611bfb906003198660011b166118c6565b908382029180830485149015171561188657611c1f91611c1a916118f7565b611dd6565b9080821115611c4f57611c3191611879565b818102918183041490151715611886576119869160011916906118d9565b60405162461bcd60e51b815260206004820152601960248201527f6d6174683a20696e76616c6964206375727665207374617465000000000000006044820152606490fd5b50670de0b6b3a76400008082029250811591830414171561188657611986907f0000000000000000000000000000000000000000000000000000000000000000906118d9565b6001600160a01b0316908115611b31577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082611d1b5f946002546118f7565b60025584845283825260408420818154019055604051908152a3565b8115611dd2575f918291829182916001600160a01b03165af13d15611dcd573d67ffffffffffffffff811161181e5760405190611d7e601f8201601f1916602001836117fc565b81525f60203d92013e5b15611d8f57565b60405162461bcd60e51b81526020600482015260166024820152751b985d1a5d99481d1c985b9cd9995c8819985a5b195960521b6044820152606490fd5b611d88565b5050565b908115611e1b5760018083018084116118865760011c90835b848310611dfb57505050565b90919350611e1284611e0d81846118d9565b6118f7565b821c9190611def565b5f915056fea26469706673582212205015d40bdf4a382f13d5ec310569f57721df06e84e863e825eae5530918fd4ba64736f6c63430008180033c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a88be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220f5c12988bb9cf8ad8b8c6e0bc4cb3208f0044d3a89d6c5e45413711d1280bda664736f6c63430008180033000000000000000000000000fc22a6ec27e2e39baa61353b6ef5da612253d7d1
0x60a060409080825260048036101562000016575f80fd5b5f3560e01c91826306c11d7414620009e9575081630c5a61f8146200098d5781630c694896146200093c5781631bc2cbc914620006a457816323774af2146200066757816342d74cfe1462000647578163634282af146200060257816363982b3f14620005e2578163704b6c02146200058a57816378f3f38a146200047f5781637e2c1355146200043d578163803db96d14620004145781639e61463314620003ea578163a565507914620003ca578163b48d08bc1462000203578163d0dd9eae14620001e557508063d5c712751462000152578063dbb80e4214620001325763f851a4401462000105575f80fd5b346200012e575f3660031901126200012e5760015490516001600160a01b039091168152602090f35b5f80fd5b50346200012e575f3660031901126200012e576020906007549051908152f35b50346200012e576020806003193601126200012e57906001600160a01b0390816200017c62000ca5565b165f526009602052805f209281518093602086549283815201955f5260205f20925f915b838310620001cb57620001c78787620001bc828c038362000d95565b519182918262000d1d565b0390f35b8454811688529681019660019485019490920191620001a0565b82346200012e575f3660031901126200012e57602091549051908152f35b905060a03660031901126200012e5767ffffffffffffffff81358181116200012e5762000234903690840162000c74565b906024358381116200012e576200024f903690860162000c74565b9390916200025c62000cbc565b916064359081116200012e5762000277903690880162000c74565b919092608435958615158097036200012e5789956002546003548b549160055493600160a01b600190039c8d98895f5416978a600654169d51608052608051620002c19062000d63565b3690620002ce9262000db8565b608051523690620002df9262000db8565b608051602001528d6080510152608051606001526080516080015260805160a001523360805160c0015260805160e001521660805161010001523690620003269262000db8565b6080516101200152608051610140015260805161016001526080516200034c906200101c565b91346200035f575b506020925191168152f35b5f845191637deb602560e01b8352820152336024820152602081604481348688165af18015620003c057156200035457602090813d8311620003b8575b620003a8818362000d95565b810103126200012e575f62000354565b503d6200039c565b84513d5f823e3d90fd5b82346200012e575f3660031901126200012e576020906002549051908152f35b82346200012e575f3660031901126200012e5760065490516001600160a01b039091168152602090f35b82346200012e575f3660031901126200012e575f5490516001600160a01b039091168152602090f35b346200012e5760803660031901126200012e576200046760018060a01b0360015416331462000e02565b80356002556024356003556044359055606435600555005b82346200012e5760209060206003193601126200012e5760075483358181111562000582575080925b620004b38262000e77565b93620004c28451958662000d95565b828552601f19620004d38462000e77565b013660208701375f19808201918083115f5b868110620004fc57875180620001c78b8262000d1d565b816200056f5783818403018581116200055c576200051a9062000cd3565b90548a51831015620005495760039190911b1c6001600160a01b0316600582901b8a01870152600101620004e5565b60328c634e487b7160e01b5f525260245ffd5b60118b634e487b7160e01b5f525260245ffd5b60118a634e487b7160e01b5f525260245ffd5b9092620004a8565b346200012e5760203660031901126200012e57620005a762000ca5565b600154906001600160a01b0390620005c3338385161462000e02565b1690620005d282151562000e3b565b6001600160a01b03191617600155005b82346200012e575f3660031901126200012e576020906005549051908152f35b9050346200012e5760203660031901126200012e5735906007548210156200012e576200063160209262000cd3565b905491519160018060a01b039160031b1c168152f35b82346200012e575f3660031901126200012e576020906003549051908152f35b82346200012e5760203660031901126200012e576020906001600160a01b03806200069162000ca5565b165f5260088352815f2054169051908152f35b905060c03660031901126200012e5767ffffffffffffffff9080358281116200012e57620006d6903690830162000c74565b906024358481116200012e57620006f1903690850162000c74565b620006fe92919262000cbc565b956064358181116200012e5762000719903690880162000c74565b91909560a435948515158096036200012e5760025497600354948a54968d60055490600160a01b600190039b8c5f5416938d60065416978351996200075e8b62000d63565b36906200076b9262000db8565b895236906200077a9262000db8565b602088015286019b8c52606086019788526080860198895260a08601523360c086015260e08501528861010085019c168c523690620007b99262000db8565b610120830152610140820152610160810194855289519061273d808301938385109085111762000929578291620007fa916200112284396084359462000ed0565b03905ff580156200091f578480911697620008158962000f9a565b885f526008602052895f20336001600160601b0360a01b825416179055335f52600960205262000848898b5f2062000fda565b51168062000918575033945b5190519151925115159388519516855260208501528684015260608301526080820152827f1a00464aef75e337f94252b8f67bec4ac1928ebb0e2c64f744a2f28c5c3bc44260a03393a334620008af575b5060209151908152f35b5f835191637deb602560e01b835282015233602482015260208160448134865af180156200090e5715620008a557602090813d831162000906575b620008f6818362000d95565b810103126200012e575f620008a5565b503d620008ea565b83513d5f823e3d90fd5b9462000854565b88513d5f823e3d90fd5b60418a634e487b7160e01b5f525260245ffd5b346200012e5760203660031901126200012e576200095962000ca5565b6001546001600160a01b03919062000975908316331462000e02565b166001600160601b0360a01b60065416176006555f80f35b346200012e5760203660031901126200012e57620009aa62000ca5565b6001546001600160a01b039190620009c6908316331462000e02565b16620009d481151562000e3b565b6001600160601b0360a01b5f5416175f555f80f35b90915061012092836003193601126200012e5767ffffffffffffffff9183358381116200012e5762000a1f903690860162000c74565b91906024358581116200012e5762000a3b903690880162000c74565b604435986001600160a01b03979092916084359160c4358a8116929160a435918490036200012e5760e4359081116200012e578c62000a7d9136910162000c74565b94909561010435998a1515809b036200012e578f1562000c3a5750811562000bf757821562000bb4578c5f5416938d60065416998d519c62000abf8e62000d63565b369062000acc9262000db8565b8c52369062000adb9262000db8565b9d60209e8f8c01528b8b015260643560608b015260808a015260a08901523360c089015260e0880152610100870152369062000b179262000db8565b9084015261014083015261016082015262000b32906200101c565b923462000b42575b505191168152f35b5f825191637deb602560e01b83528201523360248201528481604481348789165af1801562000baa5790859162000b7b575b5062000b3a565b813d831162000ba2575b62000b91818362000d95565b810103126200012e57835f62000b74565b503d62000b85565b82513d5f823e3d90fd5b60648e60208e519162461bcd60e51b8352820152601a60248201527f6375727665537570706c79436170206d757374206265203e20300000000000006044820152fd5b60648e60208e519162461bcd60e51b8352820152601c60248201527f67726164756174696f6e546172676574206d757374206265203e2030000000006044820152fd5b6064915060208f62461bcd60e51b835282015260156024820152740626173655072696365206d757374206265203e203605c1b6044820152fd5b9181601f840112156200012e5782359167ffffffffffffffff83116200012e57602083818601950101116200012e57565b600435906001600160a01b03821682036200012e57565b604435906001600160a01b03821682036200012e57565b60075481101562000d095760075f527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801905f90565b634e487b7160e01b5f52603260045260245ffd5b60209060206040818301928281528551809452019301915f5b82811062000d45575050505090565b83516001600160a01b03168552938101939281019260010162000d36565b610180810190811067ffffffffffffffff82111762000d8157604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111762000d8157604052565b92919267ffffffffffffffff821162000d81576040519162000de5601f8201601f19166020018462000d95565b8294818452818301116200012e578281602093845f960137010152565b1562000e0a57565b60405162461bcd60e51b81526020600482015260096024820152683737ba1030b236b4b760b91b6044820152606490fd5b1562000e4357565b60405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606490fd5b67ffffffffffffffff811162000d815760051b60200190565b91908251928382525f5b84811062000ebb575050825f602080949584010152601f8019910116010190565b60208183018101518483018201520162000e9a565b60208152815162000ef0610180918260208501526101a084019062000e90565b9262000f0f602082015194601f19958686830301604087015262000e90565b906040810151606085015260608101516080850152608081015160a085015260a081015160c085015262000f8260c08201519260018060a01b0380941660e087015260e0830151846101009116818801528301518461012091168188015283015161014097878303018888015262000e90565b94810151916101609216828501520151151591015290565b600754600160401b81101562000d815780600162000fbc920160075562000cd3565b60018060a09493941b038084549260031b9316831b921b1916179055565b805490600160401b82101562000d81576001820180825582101562000d09575f5260205f20019060018060a01b03166001600160601b0360a01b825416179055565b906040805161273d80820182811067ffffffffffffffff82111762000d8157856200104f91849362001122853962000ed0565b03905ff0801562001117576001600160a01b0390811693620010718562000f9a565b845f526008602052825f20336001600160601b0360a01b825416179055335f526009602052620010a485845f2062000fda565b61010081015182168062001110575033925b80820151906060830151916101606080850151940151151594825196168652602086015284015260608301526080820152827f1a00464aef75e337f94252b8f67bec4ac1928ebb0e2c64f744a2f28c5c3bc44260a03393a3565b92620010b6565b50513d5f823e3d90fdfe61016060405234620007f7576200273d803803806200001e81620007fb565b928339810190602081830312620007f7578051906001600160401b038211620007f75701610180908181840312620007f7576040519182016001600160401b038111838210176200057f5760405280516001600160401b038111620007f757836200008b91830162000821565b825260208101516001600160401b038111620007f75783620000af91830162000821565b926020830193845260408201516040840152606082015160608401526080820151608084015260a082015160a0840152620000ed60c0830162000891565b60c08401526200010060e0830162000891565b60e084015262000114610100830162000891565b610100840152610120820151906001600160401b038211620007f7576200013d91830162000821565b61012083015262000152610140820162000891565b610140830152610160809101518015158103620007f7578183015260c082015182519351845190946001600160a01b03909216916001600160401b0382116200057f5760035490600182811c92168015620007ec575b6020831014620005605781601f8493116200077c575b50602090601f8311600114620006ef575f92620006e3575b50508160011b915f199060031b1c1916176003555b83516001600160401b0381116200057f57600454600181811c91168015620006d8575b60208210146200056057601f811162000674575b506020601f8211600114620006085781929394955f92620005fc575b50508160011b915f199060031b1c1916176004555b60016005558015620005e457600680546001600160a01b0319811683179091556001600160a01b03165f805160206200271d8339815191525f80a360c08201516001600160a01b0316151580620005cd575b15620005995760408201516080908152606083015160a090815290830151610100908152908301516101205260c0808401516001600160a01b0390811660e0908152850151811690915290830151168062000593575060c08201516001600160a01b03165b600780546001600160a01b0319166001600160a01b039290921691909117905561012082015180519092906001600160401b0381116200057f57600a54600181811c9116801562000574575b60208210146200056057601f81116200050a575b506020601f82116001146200049457819293945f9262000488575b50508160011b915f199060031b1c191617600a555b610140818101516001600160a01b03169052015162000453575b604051611e569081620008a7823960805181818161066c015281816106d501528181610e230152818161192a0152611cb5015260a05181818161074101528181610b3501528181610dfc0152611b8a015260c05181818161081b0152610ba6015260e051816116dd015261010051818181610b6f0152610d0201526101205181818161079d0152610c1f015261014051818181610d49015261104f0152f35b600680546001600160a01b031981169091555f906001600160a01b03165f805160206200271d8339815191528280a3620003b4565b015190505f8062000385565b600a5f9081525f80516020620026fd8339815191529190601f198416905b818110620004f157509583600195969710620004d8575b505050811b01600a556200039a565b01515f1960f88460031b161c191690555f8080620004c9565b9192602060018192868b015181550194019201620004b2565b600a5f525f80516020620026fd833981519152601f830160051c8101916020841062000555575b601f0160051c01905b8181106200054957506200036a565b5f81556001016200053a565b909150819062000531565b634e487b7160e01b5f52602260045260245ffd5b90607f169062000356565b634e487b7160e01b5f52604160045260245ffd5b6200030a565b60405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606490fd5b5060e08201516001600160a01b03161515620002a5565b604051631e4fbdf760e01b81525f6004820152602490fd5b015190505f806200023e565b60045f5260205f20905f5b601f19841681106200065b575060019394959683601f1981161062000642575b505050811b0160045562000253565b01515f1960f88460031b161c191690555f808062000633565b9091602060018192858b01518155019301910162000613565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c810160208410620006d0575b601f830160051c82018110620006c457505062000222565b5f8155600101620006ac565b5080620006ac565b90607f16906200020e565b015190505f80620001d6565b60035f90815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b91905b601f198416851062000760576001945083601f1981161062000747575b505050811b01600355620001eb565b01515f1960f88460031b161c191690555f808062000738565b818101518355602094850194600190930192909101906200071b565b60035f529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c810160208510620007e4575b90849392915b601f830160051c82018110620007d5575050620001be565b5f8155859450600101620007bd565b5080620007b7565b91607f1691620001a8565b5f80fd5b6040519190601f01601f191682016001600160401b038111838210176200057f57604052565b919080601f84011215620007f75782516001600160401b0381116200057f5760209062000857601f8201601f19168301620007fb565b92818452828287010111620007f7575f5b8181106200087d5750825f9394955001015290565b858101830151848201840152820162000868565b51906001600160a01b0382168203620007f75756fe604060808152600480361015610048575b361561001a575f80fd5b6020606492519162461bcd60e51b8352820152600960248201526875736520627579282960b81b6044820152fd5b5f3560e01c8063011566171461170c57806302d05d3f146116c957806303ee438c1461162357806306fdde0314611552578063095ea7b3146114a9578063177a9e9d1461148a57806318160ddd1461146c57806323b872dd1461137b578063313ce567146113605780633d2fa2d214611334578063469048401461130c57806370a08231146112d6578063715018a61461127b578063750521f51461107e5780637cd07e471461103b5780637deb602514610bd5578063803db96d14610b925780638232cd5a14610b5857806383caf27514610b1e57806387d92f9214610a4b57806387ff3ec214610a2d5780638da5cb5b14610a0557806395d89b4114610922578063a10954fe14610904578063a9059cbb146108d4578063aaf4a96614610800578063aaf5eb68146107de578063acfd7928146107c0578063b02ee62c14610786578063b31dfc8f146106aa578063be3782281461068f578063c7876ea414610655578063cc3cbd2a1461063a578063d2bf72641461061e578063d79875eb14610393578063dd62ed3e1461034a578063e74b981b146102ad578063e7c2b7721461028a5763f2fde38b03610010573461028657602036600319011261028657610212611798565b9061021b611a5b565b6001600160a01b03918216928315610270575050600654826bffffffffffffffffffffffff60a01b821617600655167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b5f80fd5b8234610286575f3660031901126102865760209060ff600b541690519015158152f35b5034610286576020366003190112610286576102c7611798565b6102cf611a5b565b6001600160a01b031691821561031857600780546001600160a01b03191684179055827f7a7b5a0a132f9e0581eb8527f66eae9ee89c2a3e79d4ac7e41a1f1f4d48a7fc25f80a2005b906020606492519162461bcd60e51b8352820152600c60248201526b7a65726f206164647265737360a01b6044820152fd5b8234610286578060031936011261028657602090610366611798565b61036e6117ae565b9060018060a01b038091165f5260018452825f2091165f528252805f20549051908152f35b50903461028657806003193601126102865760249082356103b2611b61565b6103c160ff600b5416156119c4565b80156105ee57335f526020935f855281835f2054106105b5576103e382611904565b61271090816103f18261189a565b04916103fc826118b0565b04926104118461040c8585611879565b611879565b96803588106105735782600c541061053a5733156105265750335f525f8852855f2054908582106104fb57509161049161049c92866104a79695335f525f8c5203885f205586600254036002555f88518881527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c3392a3600c54611879565b600c556009546118f7565b6009556008546118f7565b6008556104b48333611d37565b600254825191825260208201849052604082015233907f846c37eef631e0943682d87352ec117c20008eb7f425c9b85ac011a6d4774cc090606090a2600160055551908152f35b865163391434e360e21b81523391810191825260208201929092526040810186905281906060010390fd5b905f875191634b637e8f60e11b8352820152fd5b865162461bcd60e51b815291820189905260149082015273696e73756666696369656e74207265736572766560601b6044820152606490fd5b865162461bcd60e51b8152918201899052601c908201527f736c6970706167653a206e6174697665206f757420746f6f206c6f77000000006044820152606490fd5b825162461bcd60e51b815290810185905260148185015273696e73756666696369656e742062616c616e636560601b6044820152606490fd5b815162461bcd60e51b8152602081860152600b818501526a1e995c9bc8185b5bdd5b9d60aa1b6044820152606490fd5b8234610286575f36600319011261028657602090516109c48152f35b8234610286575f3660031901126102865760209051603c8152f35b8234610286575f36600319011261028657602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b8234610286575f366003190112610286576020905160288152f35b5090346102865760203660031901126102865781356002549261070182670de0b6b3a76400006106fa7f0000000000000000000000000000000000000000000000000000000000000000836118c6565b04956118c6565b915f19810191818311610773575061076561073f61076c94610736602098956ec097ce7bc90715b34b9f1000000000956118c6565b60011c906118f7565b7f00000000000000000000000000000000000000000000000000000000000000006118c6565b04906118f7565b9051908152f35b601190634e487b7160e01b5f525260245ffd5b8234610286575f36600319011261028657602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b8234610286575f366003190112610286576020906009549051908152f35b8234610286575f3660031901126102865760209051670de0b6b3a76400008152f35b5034610286575f36600319011261028657610819611b61565b7f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03821690338290036108a257509160209261086f6009548094610866821515611a1c565b5f600955611d37565b7f0f7f5b155b0b0ac6890709a2c7bf1b8bb3f675fff1e7840b4dd3c9acde59048b848351858152a2600160055551908152f35b606490602085519162461bcd60e51b8352820152600c60248201526b6e6f7420747265617375727960a01b6044820152fd5b82346102865780600319360112610286576020906108fd6108f3611798565b6024359033611a87565b5160018152f35b8234610286575f36600319011261028657602090600c549051908152f35b5034610286575f366003190112610286578151905f90805490610944826117c4565b808552916020916001918281169081156109d85750600114610980575b61097c8688610972828903836117fc565b5191829182611832565b0390f35b5f90815293507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8385106109c5575050505081016020016109728261097c5f610961565b80548686018401529382019381016109a8565b905061097c9795508693506020925061097294915060ff191682840152151560051b82010192945f610961565b8234610286575f3660031901126102865760065490516001600160a01b039091168152602090f35b8234610286575f366003190112610286576020906008549051908152f35b5034610286575f36600319011261028657610a64611b61565b6006546001600160a01b039190821633148015610b11575b15610add575060209160085491610a94831515611a1c565b5f600855610aa6838260075416611d37565b600754167fb0941a79b0a1d2dc32262e01138093b93ba4e92878c9b282875850dec054f009848351858152a2600160055551908152f35b606490602084519162461bcd60e51b8352820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b6044820152fd5b5081600754163314610a7c565b8234610286575f36600319011261028657602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b8234610286575f36600319011261028657602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b8234610286575f36600319011261028657517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b508160031936011261028657610be96117ae565b91610bf2611b61565b610c0160ff600b5416156119c4565b3415611008576001600160a01b03838116908115610fd457600254937f00000000000000000000000000000000000000000000000000000000000000009081861015610f91576127109384610c553461189a565b049785610c61346118b0565b0490610c718261040c8c34611879565b90610c7b82611b84565b9985358b10610f4e57610c8f8b88926118f7565b11610f1757610cb1610cbe9392610ca98c61049c94611cda565b600c546118f7565b9a8b600c556009546118f7565b60085560025486518881523460208201526040810182905290919033907ef93dbdb72854b6b6fb35433086556f2635fc83c37080c667496fecfa650fb490606090a37f0000000000000000000000000000000000000000000000000000000000000000881015610d38575b60208787600160055551908152f35b600160ff19600b541617600b5580947f00000000000000000000000000000000000000000000000000000000000000009485169384151580610f0e575b610dba575b505050505050816020947facfdce92da76539f5af2efc3aa76d42a7a92af4d723a23d144f58fdf1472921e92825191825286820152a15f80808080610d29565b909192939495506109c490818102918183041490151715610efb57610e879593610e5160209694610e20610e47958d9504958692670de0b6b3a76400009283917f00000000000000000000000000000000000000000000000000000000000000006118c6565b047f00000000000000000000000000000000000000000000000000000000000000006118f7565b60c01b0496611cda565b5f600c55875163fc22d0e560e01b8152309181019182526020820193909352604081019490945290948593849291839160600190565b03925af18015610ef157610ec6575b5060025481847facfdce92da76539f5af2efc3aa76d42a7a92af4d723a23d144f58fdf1472921e60205f80610d7a565b602090813d8311610eea575b610edc81836117fc565b81010312610286575f610e96565b503d610ed2565b82513d5f823e3d90fd5b601184634e487b7160e01b5f525260245ffd5b50891515610d75565b885162461bcd60e51b815260208187015260116024820152700657863656564732063757276652063617607c1b6044820152606490fd5b895162461bcd60e51b8152602081880152601c60248201527f736c6970706167653a20746f6b656e73206f757420746f6f206c6f77000000006044820152606490fd5b606490602086519162461bcd60e51b8352820152601860248201527f637572766520737570706c7920636170207265616368656400000000000000006044820152fd5b825162461bcd60e51b8152602081860152600e60248201526d1e995c9bc81c9958da5c1a595b9d60921b6044820152606490fd5b906020606492519162461bcd60e51b8352820152600d60248201526c1b9bc81d985b1d59481cd95b9d609a1b6044820152fd5b8234610286575f36600319011261028657517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461028657602091826003193601126102865781359267ffffffffffffffff92838511610286573660238601121561028657840135928311610286576024933660248583010111610286576110d2611a5b565b6110dd600a546117c4565b601f8111611219575b505f94601f851160011461116b57508360248192827f1c306e70c05992619e2128ad1ef88df75f36c9476282e59f51401b2abaa42e4e985f9161115e575b508360011b905f198560031b1c191617600a555b855196858896875286015201848401375f828201840152601f01601f19168101030190a1005b839150820101355f611124565b94601f198516600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8965f905b8282106111fe57505085927f1c306e70c05992619e2128ad1ef88df75f36c9476282e59f51401b2abaa42e4e97849384602494106111e3575b5050600183811b01600a55611138565b82018301355f19600386901b60f8161c191690555f806111d3565b8484018101358955600190980197928501929085019061119a565b600a5f527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8601f860160051c810191848710611271575b601f0160051c01905b81811061126657506110e6565b5f8155600101611259565b9091508190611250565b34610286575f36600319011261028657611293611a5b565b600680546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b8234610286576020366003190112610286576020906001600160a01b036112fb611798565b165f525f8252805f20549051908152f35b8234610286575f3660031901126102865760075490516001600160a01b039091168152602090f35b8234610286575f36600319011261028657600b54905160089190911c6001600160a01b03168152602090f35b8234610286575f366003190112610286576020905160128152f35b503461028657606036600319011261028657611395611798565b61139d6117ae565b906044359260018060a01b038216805f526001602052855f20335f52602052855f2054915f1983036113d8575b6020876108fd888888611a87565b85831061144057811561142a57331561141457505f908152600160209081528682203383528152908690209185900390915582906108fd6113ca565b6024905f885191634a1406b160e11b8352820152fd5b6024905f88519163e602df0560e01b8352820152fd5b8651637dc7a0d960e11b8152339181019182526020820193909352604081018690528291506060010390fd5b8234610286575f366003190112610286576020906002549051908152f35b5090346102865760203660031901126102865761076c60209235611904565b5090346102865780600319360112610286576114c3611798565b60243590331561153c576001600160a01b03169081156115265760209350335f5260018452825f20825f52845280835f205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b8251634a1406b160e11b81525f81860152602490fd5b825163e602df0560e01b81525f81860152602490fd5b8234610286575f3660031901126102865780515f600354611572816117c4565b808452906020906001908181169081156115f957506001146115a0575b61097c8587610972828803836117fc565b60035f90815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8385106115e6575050505081016020016109728261097c61158f565b80548686018401529382019381016115ca565b61097c9795508693506020925061097294915060ff191682840152151560051b820101929461158f565b8234610286575f3660031901126102865780515f600a54611643816117c4565b808452906020906001908181169081156115f957506001146116705761097c8587610972828803836117fc565b600a5f90815293507fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a85b8385106116b6575050505081016020016109728261097c61158f565b805486860184015293820193810161169a565b8234610286575f36600319011261028657517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461028657602036600319011261028657611726611798565b9061172f611a5b565b600b549260ff841615611761575050610100600160a81b031990911660089190911b610100600160a81b031617600b55005b906020606492519162461bcd60e51b835282015260116024820152701b9bdd0819dc98591d585d1959081e595d607a1b6044820152fd5b600435906001600160a01b038216820361028657565b602435906001600160a01b038216820361028657565b90600182811c921680156117f2575b60208310146117de57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916117d3565b90601f8019910116810190811067ffffffffffffffff82111761181e57604052565b634e487b7160e01b5f52604160045260245ffd5b602080825282518183018190529093925f5b82811061186557505060409293505f838284010152601f8019910116010190565b818101860151848201604001528501611844565b9190820391821161188657565b634e487b7160e01b5f52601160045260245ffd5b9060288202918083046028149015171561188657565b90603c820291808304603c149015171561188657565b8181029291811591840414171561188657565b81156118e3570490565b634e487b7160e01b5f52601260045260245ffd5b9190820180921161188657565b600254808211611989578161191891611879565b61195682670de0b6b3a764000061194f7f0000000000000000000000000000000000000000000000000000000000000000836118c6565b04926118c6565b5f198301928084116118865761073f6ec097ce7bc90715b34b9f10000000009261073661198696610765946118c6565b90565b60405162461bcd60e51b8152602060048201526013602482015272696e73756666696369656e7420737570706c7960681b6044820152606490fd5b156119cb57565b60405162461bcd60e51b8152602060048201526024808201527f426f6e64696e674375727665546f6b656e3a20616c7265616479206772616475604482015263185d195960e21b6064820152608490fd5b15611a2357565b60405162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b6044820152606490fd5b6006546001600160a01b03163303611a6f57565b60405163118cdaa760e01b8152336004820152602490fd5b916001600160a01b03808416928315611b495716928315611b3157825f525f60205260405f205490828210611aff5750817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f5260405f20818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101829052606490fd5b60405163ec442f0560e01b81525f6004820152602490fd5b604051634b637e8f60e11b81525f6004820152602490fd5b600260055414611b72576002600555565b604051633ee5aeb560e01b8152600490fd5b600254907f0000000000000000000000000000000000000000000000000000000000000000918215611c945790611bca610e2092670de0b6b3a7640000938491866118c6565b908360011c90611bda83806118c6565b916001600160fe1b0381160361188657611bfb906003198660011b166118c6565b908382029180830485149015171561188657611c1f91611c1a916118f7565b611dd6565b9080821115611c4f57611c3191611879565b818102918183041490151715611886576119869160011916906118d9565b60405162461bcd60e51b815260206004820152601960248201527f6d6174683a20696e76616c6964206375727665207374617465000000000000006044820152606490fd5b50670de0b6b3a76400008082029250811591830414171561188657611986907f0000000000000000000000000000000000000000000000000000000000000000906118d9565b6001600160a01b0316908115611b31577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082611d1b5f946002546118f7565b60025584845283825260408420818154019055604051908152a3565b8115611dd2575f918291829182916001600160a01b03165af13d15611dcd573d67ffffffffffffffff811161181e5760405190611d7e601f8201601f1916602001836117fc565b81525f60203d92013e5b15611d8f57565b60405162461bcd60e51b81526020600482015260166024820152751b985d1a5d99481d1c985b9cd9995c8819985a5b195960521b6044820152606490fd5b611d88565b5050565b908115611e1b5760018083018084116118865760011c90835b848310611dfb57505050565b90919350611e1284611e0d81846118d9565b6118f7565b821c9190611def565b5f915056fea26469706673582212205015d40bdf4a382f13d5ec310569f57721df06e84e863e825eae5530918fd4ba64736f6c63430008180033c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a88be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220f5c12988bb9cf8ad8b8c6e0bc4cb3208f0044d3a89d6c5e45413711d1280bda664736f6c63430008180033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xe10203…d747d7 | 38 days agoThu, 16 Jul 2026 14:29:32 UTC | 0x1a0046…c442 | [0] 0x000000000000…49d387ff [1] 0x000000000000…ea87022b data: 0x000000000000000000…00000000 |
| 0xe5683c…cbef58 | 38 days agoThu, 16 Jul 2026 13:45:08 UTC | 0x1a0046…c442 | [0] 0x000000000000…141f2efc [1] 0x000000000000…2253d7d1 data: 0x000000000000000000…00000000 |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 11,329,853 | 38 days agoThu, 16 Jul 2026 14:29:32 UTC | 0xe10203…d747d7 | CREATE | launchToken | 0xa209…7377 | OUT | 0x25d1…87ff | 0 ETH |
| 11,303,153 | 38 days agoThu, 16 Jul 2026 13:45:08 UTC | 0xe5683c…cbef58 | CREATE | launchToken | 0xa209…7377 | OUT | 0xf35c…2efc | 0 ETH |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xe10203…d747d7 | launchToken | 11,329,853 | 38 days agoThu, 16 Jul 2026 14:29:32 UTC | 0x7c1d…022b | IN | LaunchpadFactory | $0.000 ETH | 0.00012325 | |
| 0xe5683c…cbef58 | launchToken | 11,303,153 | 38 days agoThu, 16 Jul 2026 13:45:08 UTC | 0xfc22…d7d1 | IN | LaunchpadFactory | $0.000 ETH | 0.00012235 | |
| 0xc3ff68…e0d8c0 | setDefaultMigrator | 11,299,568 | 38 days agoThu, 16 Jul 2026 13:39:14 UTC | 0xfc22…d7d1 | IN | LaunchpadFactory | $0.000 ETH | 0.00000288 |