// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import {IERC20} from "@openzeppelin/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/token/ERC20/utils/SafeERC20.sol";
import {TaxProcessorCore, TaxProcessorV2DispatchImpl, TaxProcessorAdminImpl} from "./TaxProcessorBase.sol";
interface IUniswapRouter02 {
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function addLiquidity(
address tokenA,
address tokenB,
uint256 amountADesired,
uint256 amountBDesired,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);
function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts);
function getAmountsIn(uint256 amountOut, address[] memory path) external view returns (uint256[] memory amounts);
function factory() external pure returns (address);
}
interface ITaxTokenWithThreshold {
function liquidationThreshold() external view returns (uint256);
}
/// @title TaxProcessorUniV2
/// @notice TaxProcessor for tokens that graduate to Uniswap V2 / V3 DEX pools.
/// Implements `_swapTokensForQuote` and `_addLiquidity` using the Uniswap V2 router.
///
/// @dev Replaces the former monolithic TaxProcessorV2. All shared logic now lives in
/// TaxProcessorCore; this contract only provides the V2-specific DEX interactions.
/// Deployed as a Minimal Proxy (clone) — constructor sets immutables shared by all clones.
contract TaxProcessorUniV2 is TaxProcessorCore {
using SafeERC20 for IERC20;
/// @custom:oz-upgrades-unsafe-allow constructor
constructor(address weth_, address flapBlackHole_, address portal_, address swapRegistry_, address adminImpl_)
TaxProcessorCore(
weth_,
flapBlackHole_,
portal_,
swapRegistry_,
address(new TaxProcessorV2DispatchImpl(weth_, flapBlackHole_, portal_, swapRegistry_)),
adminImpl_
)
{
_requireAddr(adminImpl_, "adminImpl cannot be zero address");
}
// ─────────────────────────────────────────────────────────────────────────
// V2 DEX-specific implementations
// ─────────────────────────────────────────────────────────────────────────
/// @notice Swap tax tokens for quote tokens via Uniswap V2 router.
function _swapTokensForQuote(uint256 amount) internal override returns (uint256 quoteReceived) {
IERC20(taxToken).safeApprove(router, 0);
IERC20(taxToken).safeApprove(router, amount);
address[] memory path = new address[](2);
path[0] = taxToken;
path[1] = quoteToken;
uint256 quoteBefore = IERC20(quoteToken).balanceOf(address(this));
// Mark the processor as mid-swap so any nested token-hook liquidation is parked on the
// processor instead of being processed reentrantly inside this router call.
// Note: if the router call below reverts, this entire frame reverts too, so `_swapping = true`
// is automatically rolled back and cannot get stuck.
_swapping = true;
IUniswapRouter02(router)
.swapExactTokensForTokensSupportingFeeOnTransferTokens(amount, 0, path, address(this), block.timestamp);
_swapping = false;
quoteReceived = IERC20(quoteToken).balanceOf(address(this)) - quoteBefore;
}
/// @notice Add liquidity to Uniswap V2 pool. LP tokens sent to DEAD_ADDRESS.
function _addLiquidity(uint256 tokenAmount, uint256 quoteAmount)
internal
override
returns (uint256 actualTokenUsed, uint256 actualQuoteUsed)
{
IERC20(taxToken).safeApprove(router, 0);
IERC20(taxToken).safeApprove(router, tokenAmount);
IERC20(quoteToken).safeApprove(router, 0);
IERC20(quoteToken).safeApprove(router, quoteAmount);
(uint256 amountA, uint256 amountB,) = IUniswapRouter02(router)
.addLiquidity(taxToken, quoteToken, tokenAmount, quoteAmount, 0, 0, address(DEAD_ADDRESS), block.timestamp);
actualTokenUsed = amountA;
actualQuoteUsed = amountB;
totalTokenAddedToLiquidity += actualTokenUsed;
totalQuoteAddedToLiquidity += actualQuoteUsed;
}
// ─────────────────────────────────────────────────────────────────────────
// Partial-liquidation smoothing (gap + 50% backlog drain)
// ─────────────────────────────────────────────────────────────────────────
function _quoteToTaxTokens(uint256 quoteAmount) internal view returns (uint256 tokenAmount) {
if (quoteAmount == 0) return 0;
address[] memory path = new address[](2);
path[0] = taxToken;
path[1] = quoteToken;
// We are swapping tax token for quote, so we should the getAmountsIn
try IUniswapRouter02(router).getAmountsIn(quoteAmount, path) returns (uint256[] memory amounts) {
if (amounts.length >= 2) tokenAmount = amounts[0];
} catch {}
}
function _processTaxTokensBody(uint256 taxAmount) internal override returns (int8 liqThresholdDirection) {
uint256 gapQuote = liqSmoothingGapQuote;
if (gapQuote == 0) return super._processTaxTokensBody(taxAmount);
uint256 gapInTokens = _quoteToTaxTokens(gapQuote);
if (gapInTokens == 0) return super._processTaxTokensBody(taxAmount);
// Adjust gapInTokens to account for the fraction of input tokens that will actually be
// swapped to quote. Deflation is burned and self-dividends are parked without swapping,
// so we need more total input tokens to generate gapQuote worth of swap output.
// Worst-case assumption: all LP tokens are swapped (i.e. no existing LP-quote balance).
// Note: deflationBps + dividendBps <= 10000 is enforced by setTaxConfig; if that invariant
// were violated the subtraction below would revert (Solidity 0.8+ checked arithmetic).
{
uint256 swapBps = 10000 - uint256(_feeConfig.deflationBps);
if (dividendToken == taxToken) {
swapBps -= uint256(_feeConfig.dividendBps);
}
// If nothing would be swapped fall back to legacy full processing.
if (swapBps == 0) return super._processTaxTokensBody(taxAmount);
if (swapBps < 10000) {
gapInTokens = gapInTokens * 10000 / swapBps;
}
}
// Rearm the tax token so it keeps roughly (threshold - one base gap) on the token side.
// This preserves the normal trigger cadence while leaving one gap to be processed now.
uint256 threshold;
try ITaxTokenWithThreshold(taxToken).liquidationThreshold() returns (uint256 t) {
threshold = t;
} catch {
return super._processTaxTokensBody(taxAmount);
}
// Important: the amount returned to the token contract can only come from this round's
// freshly pulled taxAmount. Previously deferred backlog must stay on the processor.
uint256 returnedToToken = threshold > gapInTokens ? threshold - gapInTokens : 0;
if (returnedToToken > taxAmount) returnedToToken = taxAmount;
if (returnedToToken > 0) {
IERC20(taxToken).safeTransfer(taxToken, returnedToToken);
}
// Whatever fresh tax is not sent back to the token becomes newly deferred backlog.
// Only the fresh tax left after rearming is added into the processor-side backlog.
uint256 backlogAdded = taxAmount - returnedToToken;
// Merge the new backlog with any historical deferred balance accumulated earlier.
// Combine newly deferred tokens with any backlog carried over from previous rounds.
uint256 totalDeferred = deferredTaxTokenBalance + backlogAdded;
// Base processing always consumes one gap. On top of that, we may drain up to 50%
// of one extra gap from true historical backlog, but never more than the backlog left
// after reserving the base gap.
// Each round always processes one full base gap, and may drain up to an extra 50%
// of that gap from historical backlog. The extra drain is capped by real backlog so
// the final rounds naturally taper down instead of overselling.
uint256 extraBacklogQuota = gapInTokens / 2;
uint256 backlogAvailable = totalDeferred > gapInTokens ? totalDeferred - gapInTokens : 0;
uint256 extraBacklogDrain = extraBacklogQuota < backlogAvailable ? extraBacklogQuota : backlogAvailable;
// Total processed this round = one base gap + a bounded backlog drain.
uint256 amountToProcess = gapInTokens + extraBacklogDrain;
if (amountToProcess > totalDeferred) amountToProcess = totalDeferred;
deferredTaxTokenBalance = totalDeferred - amountToProcess;
if (amountToProcess > 0) {
_processFeeToken(amountToProcess);
emit FlapTaxProcessorProcessTaxTokens(taxToken, amountToProcess);
}
// Simplified direction strategy:
// • deferredTaxTokenBalance == 0 → all tokens consumed → increase threshold (+1)
// • deferredTaxTokenBalance > 0 → backlog remains → decrease threshold (−1)
liqThresholdDirection = deferredTaxTokenBalance == 0 ? int8(1) : int8(-1);
}
// ─────────────────────────────────────────────────────────────────────────
// V4-specific overrides — no-op on V2 processors
// ─────────────────────────────────────────────────────────────────────────
/// @notice Unsupported on V2 processors.
function registerV4LPFeeSource(uint8, address, address, uint256, uint256) external pure {
revert("TaxProcessor: V4 fee source unsupported");
}
/// @notice No-op for V2 processors.
/// V4 LP fee dispatch only applies to Uniswap V4 pools; V2 tokens have no V4 LP position.
function checkAndNotifyDispatch() external override {}
}[
{
"type": "constructor",
"inputs": [
{
"name": "weth_",
"type": "address",
"internalType": "address"
},
{
"name": "flapBlackHole_",
"type": "address",
"internalType": "address"
},
{
"name": "portal_",
"type": "address",
"internalType": "address"
},
{
"name": "swapRegistry_",
"type": "address",
"internalType": "address"
},
{
"name": "adminImpl_",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "FlapDispatchCheckCooldownUpdated",
"type": "event",
"inputs": [
{
"name": "oldCooldown",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "newCooldown",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapDispatchQuoteUnavailable",
"type": "event",
"inputs": [
{
"name": "taxToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "quoteToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "pendingQuote",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "pendingToken",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapDispatchReady",
"type": "event",
"inputs": [
{
"name": "taxToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "quoteToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "pendingQuoteFees",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "pendingTokenFees",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "estimatedQuoteValue",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapDispatchThresholdUpdated",
"type": "event",
"inputs": [
{
"name": "oldThreshold",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "newThreshold",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapNativeReceiveForwardFailed",
"type": "event",
"inputs": [
{
"name": "sender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "receiver",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapNativeReceiveForwarded",
"type": "event",
"inputs": [
{
"name": "sender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "receiver",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapNativeReceiveForwardingUpdated",
"type": "event",
"inputs": [
{
"name": "oldReceiver",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newReceiver",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "oldEnabled",
"type": "bool",
"indexed": false,
"internalType": "bool"
},
{
"name": "newEnabled",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorBondingCurveTax",
"type": "event",
"inputs": [
{
"name": "taxToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "quoteAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorBurnExecuted",
"type": "event",
"inputs": [
{
"name": "taxToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "quoteAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokensBurned",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorBuyBackSkipped",
"type": "event",
"inputs": [
{
"name": "taxToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "quoteAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "gasLeft",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "reason",
"type": "string",
"indexed": false,
"internalType": "string"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorCommissionConfigUpdated",
"type": "event",
"inputs": [
{
"name": "receiver",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "bps",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorCommissionPaid",
"type": "event",
"inputs": [
{
"name": "receiver",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorConverterUpdated",
"type": "event",
"inputs": [
{
"name": "oldConverter",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "newConverter",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorDispatchExecuted",
"type": "event",
"inputs": [
{
"name": "taxToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "feeAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "marketAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "dividendAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorDividendConverted",
"type": "event",
"inputs": [
{
"name": "dividendToken",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "quoteIn",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "dividendOut",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorDividendDepositSkipped",
"type": "event",
"inputs": [
{
"name": "taxToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "reason",
"type": "string",
"indexed": false,
"internalType": "string"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorFeeRateUpdated",
"type": "event",
"inputs": [
{
"name": "oldFeeRate",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
},
{
"name": "newFeeRate",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorLiqSmoothingGapQuoteUpdated",
"type": "event",
"inputs": [
{
"name": "oldGap",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "newGap",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorMEVProtectionRequired",
"type": "event",
"inputs": [
{
"name": "taxProcessor",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "taxToken",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorMaxBuyBackGasLimitUpdated",
"type": "event",
"inputs": [
{
"name": "oldLimit",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "newLimit",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorMinBuyBackQuoteUpdated",
"type": "event",
"inputs": [
{
"name": "oldAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "newAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorPortalRefund",
"type": "event",
"inputs": [
{
"name": "taxToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "refundAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "isWeth",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorProcessTaxTokens",
"type": "event",
"inputs": [
{
"name": "taxToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "taxAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorQuoteReconciled",
"type": "event",
"inputs": [
{
"name": "taxToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "quoteAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorTokensBurned",
"type": "event",
"inputs": [
{
"name": "taxToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorTokensParked",
"type": "event",
"inputs": [
{
"name": "taxToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "taxAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorTokensReconciled",
"type": "event",
"inputs": [
{
"name": "taxToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorWalletConfigSet",
"type": "event",
"inputs": [
{
"name": "mktOrVaultAddr1",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "mktOrVaultBps1",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
},
{
"name": "mktOrVaultAddr2",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "mktOrVaultBps2",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
},
{
"name": "mktOrVaultAddr3",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "mktOrVaultBps3",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
},
{
"name": "mktOrVaultAddr4",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "mktOrVaultBps4",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
}
],
"anonymous": false
},
{
"name": "FlapTaxProcessorWalletDistributed",
"type": "event",
"inputs": [
{
"name": "wallet",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "bps",
"type": "uint16",
"indexed": false,
"internalType": "uint16"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FlapV4FeeCollectFailed",
"type": "event",
"inputs": [
{
"name": "taxToken",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "reason",
"type": "bytes",
"indexed": false,
"internalType": "bytes"
}
],
"anonymous": false
},
{
"name": "Initialized",
"type": "event",
"inputs": [
{
"name": "version",
"type": "uint8",
"indexed": false,
"internalType": "uint8"
}
],
"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": "TokensReconciled",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ADMIN_IMPL",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "DEAD_ADDRESS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "DISPATCH_IMPL",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "autoForward",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "checkAndNotifyDispatch",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "commissionBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "commissionQuoteBalance",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "commissionReceiver",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "converter",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "deferredTaxTokenBalance",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "dispatch",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "dispatchCheckCooldown",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "dispatchThreshold",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "dividendAddress",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "dividendQuoteBalance",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "dividendToken",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "dividendTokenBalance",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "feeConfig",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "tuple",
"components": [
{
"name": "marketBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "deflationBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "lpBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "dividendBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "feeRate",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "isWeth",
"type": "bool",
"internalType": "bool"
}
],
"internalType": "struct PackedFeeConfig"
}
],
"stateMutability": "view"
},
{
"name": "feeConfigV2",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "result",
"type": "tuple",
"components": [
{
"name": "marketBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "deflationBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "lpBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "dividendBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "feeRate",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "isWeth",
"type": "bool",
"internalType": "bool"
},
{
"name": "commissionBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "dividendToken",
"type": "address",
"internalType": "address"
}
],
"internalType": "struct PackedFeeConfigV2"
}
],
"stateMutability": "view"
},
{
"name": "feeConfigV3",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "result",
"type": "tuple",
"components": [
{
"name": "mktOrVaultBps1",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "mktOrVaultBps2",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "mktOrVaultBps3",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "mktOrVaultBps4",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "deflationBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "lpBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "dividendBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "feeRate",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "isWeth",
"type": "bool",
"internalType": "bool"
},
{
"name": "commissionBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "dividendToken",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultAddr1",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultAddr2",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultAddr3",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultAddr4",
"type": "address",
"internalType": "address"
}
],
"internalType": "struct PackedFeeConfigV3"
}
],
"stateMutability": "view"
},
{
"name": "feeQuoteBalance",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "feeReceiver",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "flapBlackHole",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "forwardAddress",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "getQuoteToken",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "getWalletConfig",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "mktOrVaultAddr1",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultBps1",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "mktOrVaultAddr2",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultBps2",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "mktOrVaultAddr3",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultBps3",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "mktOrVaultAddr4",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultBps4",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "initialize",
"type": "function",
"inputs": [
{
"name": "params",
"type": "tuple",
"components": [
{
"name": "quoteToken",
"type": "address",
"internalType": "address"
},
{
"name": "router",
"type": "address",
"internalType": "address"
},
{
"name": "feeReceiver",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultAddr1",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultBps1",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "mktOrVaultAddr2",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultBps2",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "mktOrVaultAddr3",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultBps3",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "mktOrVaultAddr4",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultBps4",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "dividendAddress",
"type": "address",
"internalType": "address"
},
{
"name": "taxToken",
"type": "address",
"internalType": "address"
},
{
"name": "feeRate",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "deflationBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "lpBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "dividendBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "dividendToken",
"type": "address",
"internalType": "address"
},
{
"name": "commissionReceiver",
"type": "address",
"internalType": "address"
},
{
"name": "commissionBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "converter",
"type": "address",
"internalType": "address"
},
{
"name": "liqExpectedOutputAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"internalType": "struct TaxProcessorV2InitParams"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "lastDispatchCheckAt",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "liqExpectedOutputAmount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "liqSmoothingGapQuote",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "lpQuoteBalance",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "marketAddress",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "marketQuoteBalance",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "maxBuyBackGasLimit",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "minBuyBackQuote",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "pendingDividendQuoteTokenBalance",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "portal",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "preBondBurnFunds",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "processBondingCurveTax",
"type": "function",
"inputs": [
{
"name": "quoteAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "processTaxTokens",
"type": "function",
"inputs": [
{
"name": "taxAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "liqThresholdDirection",
"type": "int8",
"internalType": "int8"
}
],
"stateMutability": "nonpayable"
},
{
"name": "quoteToken",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "reconcileToken",
"type": "function",
"inputs": [
{
"name": "tokenAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "registerV4LPFeeSource",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "pure"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "requiresMEVProtection",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "router",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "setAutoForwarding",
"type": "function",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
},
{
"name": "enabled",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setCommissionConfig",
"type": "function",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
},
{
"name": "bps",
"type": "uint16",
"internalType": "uint16"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setConverter",
"type": "function",
"inputs": [
{
"name": "converter_",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setDispatchCheckCooldown",
"type": "function",
"inputs": [
{
"name": "cooldown",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setDispatchThreshold",
"type": "function",
"inputs": [
{
"name": "threshold",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setDividendToken",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setFeeRate",
"type": "function",
"inputs": [
{
"name": "feeRate_",
"type": "uint16",
"internalType": "uint16"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setLiqExpectedOutputAmount",
"type": "function",
"inputs": [
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setLiqSmoothingGapQuote",
"type": "function",
"inputs": [
{
"name": "gap",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMaxBuyBackGasLimit",
"type": "function",
"inputs": [
{
"name": "newLimit",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setMinBuyBackQuote",
"type": "function",
"inputs": [
{
"name": "newAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setReceivers",
"type": "function",
"inputs": [
{
"name": "feeReceiver_",
"type": "address",
"internalType": "address"
},
{
"name": "marketAddress_",
"type": "address",
"internalType": "address"
},
{
"name": "dividendAddress_",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setTaxConfig",
"type": "function",
"inputs": [
{
"name": "feeRate_",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "marketBps_",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "deflationBps_",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "lpBps_",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "dividendBps_",
"type": "uint16",
"internalType": "uint16"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setWalletConfig",
"type": "function",
"inputs": [
{
"name": "mktOrVaultAddr1",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultAddr2",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultBps2",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "mktOrVaultAddr3",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultBps3",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "mktOrVaultAddr4",
"type": "address",
"internalType": "address"
},
{
"name": "mktOrVaultBps4",
"type": "uint16",
"internalType": "uint16"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "swapRegistry",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "taxToken",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "totalDividendTokenSent",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "totalQuoteAddedToLiquidity",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "totalQuoteSentToDividend",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "totalQuoteSentToMarketing",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "totalTokenAddedToLiquidity",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "v4LPFeeSource",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "migratorType",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "poolManager",
"type": "address",
"internalType": "address"
},
{
"name": "positionManager",
"type": "address",
"internalType": "address"
},
{
"name": "tokenId0",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "tokenId1",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "weth",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "withdrawAll",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x610140604052348015610010575f80fd5b506040516194fd3803806194fd83398101604081905261002f91610293565b84848484888888886040516100439061026b565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103905ff080158015610084573d5f803e3d5ffd5b5085858585856100cf846040518060400160405280601f81526020017f54617850726f636573736f723a207a65726f205745544820616464726573730081525061017d60201b60201c565b6100f1826040518060600160405280602181526020016194dc6021913961017d565b6001600160a01b0380851660805283811660a05282811660c052811660e0526101186101b3565b5050506001600160a01b039283166101005250166101205250506040805180820190915260208082527f61646d696e496d706c2063616e6e6f74206265207a65726f206164647265737390820152610173925083915061017d565b5050505050610329565b806001600160a01b0383166101ae5760405162461bcd60e51b81526004016101a591906102f4565b60405180910390fd5b505050565b5f54610100900460ff161561021a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016101a5565b5f5460ff90811614610269575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61488480614c5883390190565b80516001600160a01b038116811461028e575f80fd5b919050565b5f805f805f60a086880312156102a7575f80fd5b6102b086610278565b94506102be60208701610278565b93506102cc60408701610278565b92506102da60608701610278565b91506102e860808701610278565b90509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b60805160a05160c05160e05161010051610120516148be61039a5f395f8181610f3b0152611fad01525f81816112920152611e7201525f610f6e01525f81816104e201528181610eda015261203501525f8181610db2015261236101525f81816104a3015261098001526148be5ff3fe608060405260043610610486575f3560e01c80637025543811610251578063b8c06c571161013c578063e39a13d6116100b7578063ed86df4011610087578063f2fde38b1161006d578063f2fde38b146113e9578063f887ea4014611408578063f92aa57f14611434575f80fd5b8063ed86df4014610691578063eed8d78f146113d4575f80fd5b8063e39a13d614611382578063e57da9b614611396578063e5d9736e146113ab578063e9c4a3ac146113c0575f80fd5b8063ccfc84cb1161010c578063d6b45038116100f2578063d6b4503814611309578063d99f8de314611344578063de116bf414611363575f80fd5b8063ccfc84cb146112e0578063d65d3bf4146112f4575f80fd5b8063b8c06c571461123b578063b9f4dbd31461126c578063bba454e914611281578063bd38837b146112b4575f80fd5b80638da5cb5b116101cc5780639d9c90471161019c578063b0c161f611610182578063b0c161f6146111fa578063b19337a414610800578063b3f006741461120f575f80fd5b80639d9c9047146111db578063af51183414610691575f80fd5b80638da5cb5b14610ff5578063912bcc1c1461101f57806395623641146110345780639c93ef961461105e575f80fd5b8063829676b81161022157806386eba2521161020757806386eba25214610faa57806387eeeb8b14610fbf5780638856bc5814610fd4575f80fd5b8063829676b814610f5d57806382b4f5bd14610f90575f80fd5b80637025543814610691578063715018a614610efc57806378e5005614610f105780637b70f0b814610f2a575f80fd5b8063313e5bc61161037157806352ddd8a5116102ec57806359f82602116102bc5780635d6cafd5116102a25780635d6cafd514610e7357806360f1131314610e885780636425666b14610ec9575f80fd5b806359f8260214610e3f5780635d1c985b14610e54575f80fd5b806352ddd8a514610dd457806353aaa68814610ddf578063546d08fe14610dfe57806355440c7014610e2a575f80fd5b80634a64d67d116103415780634eeb0fed116103275780634eeb0fed14610da15780634ff7460e146106915780635245a61614610691575f80fd5b80634a64d67d14610d625780634e6fd6c414610d8c575f80fd5b8063313e5bc61461095a5780633fc8cef31461096f57806342a927b2146109a257806346e62d07146109c1575f80fd5b8063209d2b041161040157806324bd2cc8116103d157806325b1a48c116103b757806325b1a48c1461091257806329ff07731461092c5780632b44a6ad14610946575f80fd5b806324bd2cc814610872578063258b80c4146108fd575f80fd5b8063209d2b04146107eb57806320ffe2fd1461080057806321507b4e1461081a578063217a4b7014610846575f80fd5b80631582358e116104565780631cfde9481161043c5780631cfde948146107355780631e5eb1d01461074a5780631fc928ae146107bf575f80fd5b80631582358e146106cf5780631b6d855614610720575f80fd5b806301215be614610654578063019950e11461067c57806303c3c9ca1461069157806309cae2c8146106b0575f80fd5b36610650573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148061050457503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016145b1561050b57005b60e55474010000000000000000000000000000000000000000900460ff1661052f57005b60e55473ffffffffffffffffffffffffffffffffffffffff168061054f57005b5f8173ffffffffffffffffffffffffffffffffffffffff16346040515f6040518083038185875af1925050503d805f81146105a5576040519150601f19603f3d011682016040523d82523d5f602084013e6105aa565b606091505b5050905080156106045760405134815273ffffffffffffffffffffffffffffffffffffffff83169033907fdd9ffa8f38d0a7341f635ad9a93c753fb75873eab0063aa2e54df304ac7f12a6906020015b60405180910390a3005b60405134815273ffffffffffffffffffffffffffffffffffffffff83169033907f795d0f017e5676efa96070bb794ce6ff32d6e4a6ecb59aced45952c0562e8286906020016105fa565b005b5f80fd5b34801561065f575f80fd5b5061066960d55481565b6040519081526020015b60405180910390f35b348015610687575f80fd5b5061066960e05481565b34801561069c575f80fd5b5061064e6106ab366004613c84565b611460565b3480156106bb575f80fd5b5061064e6106ca366004613cc7565b61146b565b3480156106da575f80fd5b5060db546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610673565b34801561072b575f80fd5b5061066960ec5481565b348015610740575f80fd5b5061066960dd5481565b348015610755575f80fd5b5061075e611477565b60405161067391905f60c08201905061ffff835116825261ffff602084015116602083015261ffff604084015116604083015261ffff606084015116606083015261ffff608084015116608083015260a0830151151560a083015292915050565b3480156107ca575f80fd5b5060ca546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156107f6575f80fd5b5061066960d75481565b34801561080b575f80fd5b5061064e6106ab366004613cfe565b348015610825575f80fd5b5060e5546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610851575f80fd5b5060c9546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561087d575f80fd5b5060e85460e95460ea5460eb546108b79360ff81169373ffffffffffffffffffffffffffffffffffffffff61010090920482169391169185565b6040805160ff96909616865273ffffffffffffffffffffffffffffffffffffffff948516602087015292909316918401919091526060830152608082015260a001610673565b348015610908575f80fd5b5061066960df5481565b34801561091d575f80fd5b5061064e6106ca366004613d2a565b348015610937575f80fd5b5061064e6106ab366004613d5d565b348015610951575f80fd5b5060d454610669565b348015610965575f80fd5b5061066960da5481565b34801561097a575f80fd5b506106fb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109ad575f80fd5b5061064e6109bc366004613c84565b611611565b3480156109cc575f80fd5b50610d55604080516101e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091525f60d3604051806101400160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900461ffff1661ffff1661ffff1681526020015f820160049054906101000a900461ffff1661ffff1661ffff1681526020015f820160069054906101000a900461ffff1661ffff1661ffff1681526020015f820160089054906101000a900461ffff1661ffff1661ffff1681526020015f8201600a9054906101000a900461ffff1661ffff1661ffff1681526020015f8201600c9054906101000a900461ffff1661ffff1661ffff1681526020015f8201600e9054906101000a900461ffff1661ffff1661ffff1681526020015f820160109054906101000a900460ff161515151581526020015f820160119054906101000a900461ffff1661ffff1661ffff16815250509050604051806101e00160405280825f015161ffff168152602001826020015161ffff168152602001826040015161ffff168152602001826060015161ffff168152602001826080015161ffff1681526020018260a0015161ffff1681526020018260c0015161ffff1681526020018260e0015161ffff1681526020018261010001511515815260200182610120015161ffff16815260200160db5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160cd5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160e15f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160e25f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160e35f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525091505090565b6040516106739190613d76565b348015610d6d575f80fd5b5060c95473ffffffffffffffffffffffffffffffffffffffff166106fb565b348015610d97575f80fd5b506106fb61dead81565b348015610dac575f80fd5b506106fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561064e575f80fd5b348015610dea575f80fd5b5061064e610df9366004613f23565b6117dc565b348015610e09575f80fd5b5060ce546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610e35575f80fd5b5061066960d85481565b348015610e4a575f80fd5b5061066960d65481565b348015610e5f575f80fd5b5061064e610e6e366004613f7f565b611864565b348015610e7e575f80fd5b5061066960d15481565b348015610e93575f80fd5b5060e554610eb99074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610673565b348015610ed4575f80fd5b506106fb7f000000000000000000000000000000000000000000000000000000000000000081565b348015610f07575f80fd5b5061064e611871565b348015610f1b575f80fd5b5061064e6106ca366004613fd4565b348015610f35575f80fd5b506106fb7f000000000000000000000000000000000000000000000000000000000000000081565b348015610f68575f80fd5b506106fb7f000000000000000000000000000000000000000000000000000000000000000081565b348015610f9b575f80fd5b5061064e6106ab3660046140ca565b348015610fb5575f80fd5b5061066960d45481565b348015610fca575f80fd5b5061066960d95481565b348015610fdf575f80fd5b50610fe8611882565b6040516106739190614272565b348015611000575f80fd5b5060335473ffffffffffffffffffffffffffffffffffffffff166106fb565b34801561102a575f80fd5b5061066960e75481565b34801561103f575f80fd5b5060cd5473ffffffffffffffffffffffffffffffffffffffff166106fb565b348015611069575f80fd5b50604080516101408101825260d35461ffff8082168084526201000083048216602085018190526401000000008404831695850186905266010000000000008404831660608601819052680100000000000000008504841660808701526a01000000000000000000008504841660a08701526c010000000000000000000000008504841660c08701526e0100000000000000000000000000008504841660e0870152700100000000000000000000000000000000850460ff161515610100870152710100000000000000000000000000000000009094049092166101209094019390935260cd5460e15460e25460e35473ffffffffffffffffffffffffffffffffffffffff93841697928416959184169316906040805173ffffffffffffffffffffffffffffffffffffffff998a16815261ffff98891660208201529689169087015293861660608601529186166080850152841660a084015290931660c0820152911660e082015261010001610673565b3480156111e6575f80fd5b5061064e6111f536600461431b565b611a77565b348015611205575f80fd5b5061066960e65481565b34801561121a575f80fd5b5060cc546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b348015611246575f80fd5b5061125a611255366004613c84565b611a88565b6040515f9190910b8152602001610673565b348015611277575f80fd5b5061066960cf5481565b34801561128c575f80fd5b506106fb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156112bf575f80fd5b5060de546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156112eb575f80fd5b50610eb9611c47565b3480156112ff575f80fd5b5061066960e45481565b348015611314575f80fd5b5060d35471010000000000000000000000000000000000900461ffff1660405161ffff9091168152602001610673565b34801561134f575f80fd5b5061064e61135e366004613c84565b611c99565b34801561136e575f80fd5b5061064e61137d3660046143a4565b611de8565b34801561138d575f80fd5b5060d254610669565b3480156113a1575f80fd5b5061066960ed5481565b3480156113b6575f80fd5b5061066960d05481565b3480156113cb575f80fd5b5061064e611df7565b3480156113df575f80fd5b5061066960d25481565b3480156113f4575f80fd5b5061064e611403366004613cfe565b611ef7565b348015611413575f80fd5b5060cb546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561143f575f80fd5b5060dc546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b611468611fab565b50565b611473611fab565b5050565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810191909152604080516101408101825260d35461ffff80821683526201000082048116602084019081526401000000008304821684860190815266010000000000008404831660608601908152680100000000000000008504841660808701526a01000000000000000000008504841660a08701526c010000000000000000000000008504841660c0808801919091526e0100000000000000000000000000008604851660e088015260ff7001000000000000000000000000000000008704161515610100880152710100000000000000000000000000000000009095049093166101208601528551938401909552905193519051835193949293849392916115ab91614432565b6115b59190614432565b6115bf9190614432565b61ffff168152602001826080015161ffff1681526020018260a0015161ffff1681526020018260c0015161ffff1681526020018260e0015161ffff168152602001826101000151151581525091505090565b33301461167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f54617850726f636573736f723a206f6e6c792073656c662063616e2063616c6c60448201526064015b60405180910390fd5b5f81116116e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f54617850726f636573736f723a207a65726f20616d6f756e74000000000000006044820152606401611676565b6116f0611fea565b61177c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f54617850726f636573736f723a2074617820746f6b656e206e6f74206f6e204460448201527f45580000000000000000000000000000000000000000000000000000000000006064820152608401611676565b611785816120b9565b505060ca5460405182815273ffffffffffffffffffffffffffffffffffffffff909116907fd59ddd6e632a7c3e5a1918dc34a62f80d61a2c28def271118aeb12eae5a0fcca906020015b60405180910390a250565b565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f54617850726f636573736f723a2056342066656520736f7572636520756e737560448201527f70706f72746564000000000000000000000000000000000000000000000000006064820152608401611676565b61186c611fab565b505050565b611879612447565b6117da5f6124c8565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152604080516101408101825260d35461ffff80821683526201000082048116602084019081526401000000008304821684860190815266010000000000008404831660608601908152680100000000000000008504841660808701526a01000000000000000000008504841660a08701526c010000000000000000000000008504841660c08701526e0100000000000000000000000000008504841660e087015260ff700100000000000000000000000000000000860416151561010080880191909152710100000000000000000000000000000000009095049093166101208601528551938401909552905193519051835193949293849392916119c591614432565b6119cf9190614432565b6119d99190614432565b61ffff168152602001826080015161ffff1681526020018260a0015161ffff1681526020018260c0015161ffff1681526020018260e0015161ffff1681526020018261010001511515815260200182610120015161ffff16815260200160db5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525091505090565b611a7f611fab565b50505050505050565b60ca545f9073ffffffffffffffffffffffffffffffffffffffff163314611b31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f54617850726f636573736f723a2063616c6c6572206973206e6f74207468652060448201527f74617820746f6b656e00000000000000000000000000000000000000000000006064820152608401611676565b5f8211611b9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f54617850726f636573736f723a207a65726f20616d6f756e74000000000000006044820152606401611676565b60ca54611bbf9073ffffffffffffffffffffffffffffffffffffffff1633308561253e565b60ee5460ff1615611c36578160ed5f828254611bdb9190614452565b909155505060ca5460405183815273ffffffffffffffffffffffffffffffffffffffff909116907f8ac203b5426c1ab3d6a3006d3fa7f66fe6f1fb10faa3ee834c4d9f7d653018df9060200160405180910390a2505f919050565b611c3f82612620565b90505b919050565b60db5460c9545f9173ffffffffffffffffffffffffffffffffffffffff90811691168114801590611c93575060ca5473ffffffffffffffffffffffffffffffffffffffff828116911614155b91505090565b5f8111611d02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f54617850726f636573736f723a207a65726f20616d6f756e74000000000000006044820152606401611676565b60c954611d279073ffffffffffffffffffffffffffffffffffffffff1633308461253e565b609754600203611d93578060d85f828254611d429190614452565b909155505060ca5460405182815273ffffffffffffffffffffffffffffffffffffffff909116907fe28939e2584c18d4cf50400652cdf80c00e35aa5bcf60991b33199aabc9d6a4c906020016117cf565b611d9c81612931565b60ca5460405182815273ffffffffffffffffffffffffffffffffffffffff909116907fe28939e2584c18d4cf50400652cdf80c00e35aa5bcf60991b33199aabc9d6a4c906020016117cf565b611df0611fab565b5050505050565b611dff612c47565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18b467f20000000000000000000000000000000000000000000000000000000017905290515f91829173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691611e9c91614465565b5f60405180830381855af49150503d805f8114611ed4576040519150601f19603f3d011682016040523d82523d5f602084013e611ed9565b606091505b509150915081611eeb57805160208201fd5b50506117da6001606555565b611eff612447565b73ffffffffffffffffffffffffffffffffffffffff8116611fa2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611676565b611468816124c8565b7f0000000000000000000000000000000000000000000000000000000000000000365f80375f80365f845af43d5f803e808015611fe6573d5ff35b3d5ffd5b5f600460ca546040517ff1159a4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f1159a499060240161024060405180830381865afa15801561207d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120a191906144e8565b5160058111156120b3576120b361447b565b14905090565b604080516101408101825260d35461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000008104831660808301526a01000000000000000000008104831660a08301526c010000000000000000000000008104831660c08301526e0100000000000000000000000000008104831660e0830181905260ff7001000000000000000000000000000000008304161515610100840152710100000000000000000000000000000000009091049092166101208201525f918291908290612710906121ab90876145f8565b6121b5919061460f565b90505f6121c28287614647565b90505f8084610120015161ffff161180156121f4575060dc5473ffffffffffffffffffffffffffffffffffffffff1615155b156122305761271084610120015161ffff168361221191906145f8565b61221b919061460f565b905080156122305761222d8183614647565b91505b5f846060015161ffff16856040015161ffff16866020015161ffff16875f015161ffff1661225e9190614452565b6122689190614452565b6122729190614452565b90505f61271061228283866145f8565b61228c919061460f565b90505f612710876080015161ffff16866122a691906145f8565b6122b0919061460f565b90505f6127108860a0015161ffff16876122ca91906145f8565b6122d4919061460f565b90505f6127108960c0015161ffff16886122ee91906145f8565b6122f8919061460f565b90505f81836123078688614452565b6123119190614452565b61231b9190614452565b90508781101561233c5761232f8189614647565b612339908a614452565b98505b83156123d65760ca546123869073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000086612cba565b60ca5460405185815273ffffffffffffffffffffffffffffffffffffffff909116907fda45c413684fa670cacf90742f7d728024e578932e771bd9ba72fd22922547289060200160405180910390a25b60db5460ca54839173ffffffffffffffffffffffffffffffffffffffff90811691168114801561240557505f84115b15612424578360e05f82825461241b9190614452565b909155505f9250505b506124328a8786848c612d10565b909f909e509c50505050505050505050505050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146117da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611676565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261261a9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261309a565b50505050565b60ec545f9080820361263c57612635836131a7565b9392505050565b5f6126468261322b565b9050805f0361266057612658846131a7565b949350505050565b60d3545f906126819068010000000000000000900461ffff16612710614647565b60ca5460db5491925073ffffffffffffffffffffffffffffffffffffffff9081169116036126cd5760d3546126ca906c01000000000000000000000000900461ffff1682614647565b90505b805f036126e6576126dd856131a7565b95945050505050565b61271081101561270a57806126fd836127106145f8565b612707919061460f565b91505b5060ca54604080517f4031234c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff1691634031234c9160048083019260209291908290030181865afa9250505080156127b4575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526127b19181019061465a565b60015b6127c1576126dd856131a7565b90505f8282116127d1575f6127db565b6127db8383614647565b9050858111156127e85750845b80156128125760ca546128129073ffffffffffffffffffffffffffffffffffffffff168083612cba565b5f61281d8288614647565b90505f8160ed5461282e9190614452565b90505f61283c60028761460f565b90505f86831161284c575f612856565b6128568784614647565b90505f8183106128665781612868565b825b90505f612875828a614452565b9050848111156128825750835b61288c8186614647565b60ed5580156128f05761289e816120b9565b505060ca5460405182815273ffffffffffffffffffffffffffffffffffffffff909116907f378102bdb1ca1b7701e818b9904c8d2f3d37cbe477c07ad947cacdeea4221d4d9060200160405180910390a25b60ed541561291e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612921565b60015b9c9b505050505050505050505050565b604080516101408101825260d35461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000008104831660808301526a01000000000000000000008104831660a08301526c010000000000000000000000008104831660c08301526e0100000000000000000000000000008104831660e0830181905260ff700100000000000000000000000000000000830416151561010084015271010000000000000000000000000000000000909104909216610120820152905f9061271090612a1f90856145f8565b612a29919061460f565b90505f8083610120015161ffff16118015612a5b575060dc5473ffffffffffffffffffffffffffffffffffffffff1615155b15612a855761271083610120015161ffff1685612a7891906145f8565b612a82919061460f565b90505b5f81612a918487614647565b612a9b9190614647565b90505f846060015161ffff16856040015161ffff16866020015161ffff16875f015161ffff16612acb9190614452565b612ad59190614452565b612adf9190614452565b90505f612710612aef83856145f8565b612af9919061460f565b90505f612710876080015161ffff1685612b1391906145f8565b612b1d919061460f565b90505f6127108860a0015161ffff1686612b3791906145f8565b612b41919061460f565b90505f6127108960c0015161ffff1687612b5b91906145f8565b612b65919061460f565b90505f8183612b748688614452565b612b7e9190614452565b612b889190614452565b905086811015612ba957612b9c8188614647565b612ba6908a614452565b98505b8860cf5f828254612bba9190614452565b90915550508715612bdc578760dd5f828254612bd69190614452565b90915550505b8460d15f828254612bed9190614452565b925050819055508160d25f828254612c059190614452565b925050819055508260d05f828254612c1d9190614452565b925050819055508360d85f828254612c359190614452565b90915550505050505050505050505050565b600260655403612cb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611676565b6002606555565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261186c9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612598565b5f80848015801590612d2357505f60d054115b15612d78575f80612d368860d0546133b6565b9150915081881015612d48575f612d52565b612d528289614647565b92508060d0541015612d64575f612d72565b8060d054612d729190614647565b60d05550505b5f858886612d868c86614452565b612d909190614452565b612d9a9190614452565b612da49190614452565b9050801561308e5760ca546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612e18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e3c919061465a565b90505f612e4883613574565b60ca546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529197508792505f9173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612ebc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ee0919061465a565b905080831115612ef757612ef48184614647565b95505b811561308a575f808d11612f0b575f612f20565b84612f168e856145f8565b612f20919061460f565b90505f808a11612f30575f612f45565b85612f3b8b866145f8565b612f45919061460f565b90505f808e11612f55575f612f6a565b86612f608f876145f8565b612f6a919061460f565b90505f808d11612f7a575f612f8f565b87612f858e886145f8565b612f8f919061460f565b90505f808a11612f9f575f612fb4565b88612faa8b896145f8565b612fb4919061460f565b90508460cf5f828254612fc79190614452565b925050819055508360dd5f828254612fdf9190614452565b925050819055508260d15f828254612ff79190614452565b925050819055508160d25f82825461300f9190614452565b925050819055508060d05f8282546130279190614452565b909155505f905081838561303b888a614452565b6130459190614452565b61304f9190614452565b6130599190614452565b9050878110156130835761306d8189614647565b60cf5f82825461307d9190614452565b90915550505b5050505050505b5050505b50509550959350505050565b5f6130fb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661386e9092919063ffffffff16565b905080515f148061311b57508080602001905181019061311b9190614671565b61186c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611676565b5f808260ed546131b79190614452565b5f60ed819055909150806131ca836120b9565b60ca5460405186815292945090925073ffffffffffffffffffffffffffffffffffffffff16907f378102bdb1ca1b7701e818b9904c8d2f3d37cbe477c07ad947cacdeea4221d4d9060200160405180910390a26126dd828260df548661387c565b5f815f0361323a57505f919050565b6040805160028082526060820183525f92602083019080368337505060ca54825192935073ffffffffffffffffffffffffffffffffffffffff16918391505f906132865761328661468c565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260c9548251911690829060019081106132c4576132c461468c565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260cb546040517f1f00ca74000000000000000000000000000000000000000000000000000000008152911690631f00ca74906133299086908590600401614709565b5f60405180830381865afa92505050801561338357506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526133809190810190614721565b60015b156133b05760028151106133ae57805f815181106133a3576133a361468c565b602002602001015192505b505b50919050565b60cb5460ca545f9182916133e49173ffffffffffffffffffffffffffffffffffffffff918216911683613911565b60cb5460ca5461340e9173ffffffffffffffffffffffffffffffffffffffff918216911686613911565b60cb5460c9546134389173ffffffffffffffffffffffffffffffffffffffff91821691165f613911565b60cb5460c9546134629173ffffffffffffffffffffffffffffffffffffffff918216911685613911565b60cb5460ca5460c9546040517fe8e3370000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015260448101879052606481018690525f6084820181905260a4820181905261dead60c48301524260e4830152928392169063e8e3370090610104016060604051808303815f875af115801561350c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061353091906147c2565b50915091508193508092508360d65f82825461354c9190614452565b925050819055508260d55f8282546135649190614452565b9250508190555050509250929050565b60cb5460ca545f916135a09173ffffffffffffffffffffffffffffffffffffffff908116911683613911565b60cb5460ca546135ca9173ffffffffffffffffffffffffffffffffffffffff918216911684613911565b6040805160028082526060820183525f92602083019080368337505060ca54825192935073ffffffffffffffffffffffffffffffffffffffff16918391505f906136165761361661468c565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260c9548251911690829060019081106136545761365461468c565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260c9546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9291909116906370a0823190602401602060405180830381865afa1580156136d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136f5919061465a565b60ee80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560cb546040517f5c11d79500000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635c11d7959061377f9087905f908790309042906004016147ed565b5f604051808303815f87803b158015613796575f80fd5b505af11580156137a8573d5f803e3d5ffd5b505060ee80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055505060c9546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152829173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015613840573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613864919061465a565b6126589190614647565b606061265884845f85613a91565b5f821580613888575084155b80613891575083155b8061389a575081155b156138a657505f612658565b5f6138b183876145f8565b90505f6138be86866145f8565b9050808211156138f2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92505050612658565b8082101561390557600192505050612658565b505f9695505050505050565b8015806139af57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613989573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139ad919061465a565b155b613a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401611676565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261186c9084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612598565b606082471015613b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611676565b5f808673ffffffffffffffffffffffffffffffffffffffff168587604051613b4b9190614465565b5f6040518083038185875af1925050503d805f8114613b85576040519150601f19603f3d011682016040523d82523d5f602084013e613b8a565b606091505b5091509150613b9b87838387613ba6565b979650505050505050565b60608315613c3b5782515f03613c345773ffffffffffffffffffffffffffffffffffffffff85163b613c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611676565b5081612658565b6126588383815115613c505781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116769190614835565b5f60208284031215613c94575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611468575f80fd5b8035611c4281613c9b565b5f8060408385031215613cd8575f80fd5b8235613ce381613c9b565b91506020830135613cf381613c9b565b809150509250929050565b5f60208284031215613d0e575f80fd5b813561263581613c9b565b803561ffff81168114611c42575f80fd5b5f8060408385031215613d3b575f80fd5b8235613d4681613c9b565b9150613d5460208401613d19565b90509250929050565b5f60208284031215613d6d575f80fd5b61263582613d19565b815161ffff1681526101e081016020830151613d98602084018261ffff169052565b506040830151613dae604084018261ffff169052565b506060830151613dc4606084018261ffff169052565b506080830151613dda608084018261ffff169052565b5060a0830151613df060a084018261ffff169052565b5060c0830151613e0660c084018261ffff169052565b5060e0830151613e1c60e084018261ffff169052565b50610100830151613e3261010084018215159052565b50610120830151613e4a61012084018261ffff169052565b50610140830151613e7461014084018273ffffffffffffffffffffffffffffffffffffffff169052565b50610160830151613e9e61016084018273ffffffffffffffffffffffffffffffffffffffff169052565b50610180830151613ec861018084018273ffffffffffffffffffffffffffffffffffffffff169052565b506101a0830151613ef26101a084018273ffffffffffffffffffffffffffffffffffffffff169052565b506101c0830151613f1c6101c084018273ffffffffffffffffffffffffffffffffffffffff169052565b5092915050565b5f805f805f60a08688031215613f37575f80fd5b853560ff81168114613f47575f80fd5b94506020860135613f5781613c9b565b93506040860135613f6781613c9b565b94979396509394606081013594506080013592915050565b5f805f60608486031215613f91575f80fd5b8335613f9c81613c9b565b92506020840135613fac81613c9b565b91506040840135613fbc81613c9b565b809150509250925092565b8015158114611468575f80fd5b5f8060408385031215613fe5575f80fd5b8235613ff081613c9b565b91506020830135613cf381613fc7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516102c0810167ffffffffffffffff8111828210171561405157614051614000565b60405290565b604051610240810167ffffffffffffffff8111828210171561405157614051614000565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156140c2576140c2614000565b604052919050565b5f6102c08284031280156140dc575f80fd5b506140e561402d565b6140ee83613cbc565b81526140fc60208401613cbc565b602082015261410d60408401613cbc565b604082015261411e60608401613cbc565b606082015261412f60808401613d19565b608082015261414060a08401613cbc565b60a082015261415160c08401613d19565b60c082015261416260e08401613cbc565b60e08201526141746101008401613d19565b6101008201526141876101208401613cbc565b61012082015261419a6101408401613d19565b6101408201526141ad6101608401613cbc565b6101608201526141c06101808401613cbc565b6101808201526141d36101a08401613d19565b6101a08201526141e66101c08401613d19565b6101c08201526141f96101e08401613d19565b6101e082015261420c6102008401613d19565b61020082015261421f6102208401613cbc565b6102208201526142326102408401613cbc565b6102408201526142456102608401613d19565b6102608201526142586102808401613cbc565b6102808201526102a0928301359281019290925250919050565b5f6101008201905061ffff835116825261ffff602084015116602083015261ffff604084015116604083015260608301516142b3606084018261ffff169052565b5060808301516142c9608084018261ffff169052565b5060a08301516142dd60a084018215159052565b5060c08301516142f360c084018261ffff169052565b5060e0830151613f1c60e084018273ffffffffffffffffffffffffffffffffffffffff169052565b5f805f805f805f60e0888a031215614331575f80fd5b873561433c81613c9b565b9650602088013561434c81613c9b565b955061435a60408901613d19565b9450606088013561436a81613c9b565b935061437860808901613d19565b925060a088013561438881613c9b565b915061439660c08901613d19565b905092959891949750929550565b5f805f805f60a086880312156143b8575f80fd5b6143c186613d19565b94506143cf60208701613d19565b93506143dd60408701613d19565b92506143eb60608701613d19565b91506143f960808701613d19565b90509295509295909350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff818116838216019081111561444c5761444c614405565b92915050565b8082018082111561444c5761444c614405565b5f82518060208501845e5f920191825250919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b805160068110611c42575f80fd5b805160088110611c42575f80fd5b8051611c4281613c9b565b8051611c4281613fc7565b805160038110611c42575f80fd5b5f6102408284031280156144fa575f80fd5b50614503614057565b61450c836144a8565b8152602083810151908201526040808401519082015260608084015190820152614538608084016144b6565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261457361012084016144c4565b61012082015261458661014084016144cf565b610140820152610160838101519082015261018080840151908201526101a080840151908201526145ba6101c084016144c4565b6101c08201526101e083810151908201526145d861020084016144da565b6102008201526145eb61022084016144da565b6102208201529392505050565b808202811582820484141761444c5761444c614405565b5f82614642577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8181038181111561444c5761444c614405565b5f6020828403121561466a575f80fd5b5051919050565b5f60208284031215614681575f80fd5b815161263581613fc7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151808452602084019350602083015f5b828110156146ff57815173ffffffffffffffffffffffffffffffffffffffff168652602095860195909101906001016146cb565b5093949350505050565b828152604060208201525f61265860408301846146b9565b5f60208284031215614731575f80fd5b815167ffffffffffffffff811115614747575f80fd5b8201601f81018413614757575f80fd5b805167ffffffffffffffff81111561477157614771614000565b8060051b6147816020820161407b565b9182526020818401810192908101908784111561479c575f80fd5b6020850194505b83851015613b9b578451808352602095860195909350909101906147a3565b5f805f606084860312156147d4575f80fd5b5050815160208301516040909301519094929350919050565b85815284602082015260a060408201525f61480b60a08301866146b9565b73ffffffffffffffffffffffffffffffffffffffff94909416606083015250608001529392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fea2646970667358221220c7848cae04d7edcd9fbe3349c4054f91544d1289e13ab7cb309faa19b0e13e3b64736f6c634300081a0033610100604052348015610010575f80fd5b5060405161488438038061488483398101604081905261002f916101d7565b83838383610078846040518060400160405280601f81526020017f54617850726f636573736f723a207a65726f20574554482061646472657373008152506100ce60201b60201c565b61009a82604051806060016040528060218152602001614863602191396100ce565b6001600160a01b0380851660805283811660a05282811660c052811660e0526100c1610104565b505050505050505061025d565b806001600160a01b0383166100ff5760405162461bcd60e51b81526004016100f69190610228565b60405180910390fd5b505050565b5f54610100900460ff161561016b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100f6565b5f5460ff908116146101ba575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146101d2575f80fd5b919050565b5f805f80608085870312156101ea575f80fd5b6101f3856101bc565b9350610201602086016101bc565b925061020f604086016101bc565b915061021d606086016101bc565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b60805160a05160c05160e05161452461033f5f395f818161051c015281816118be015281816119870152611a0701525f81816104ed01528181610b83015281816112bc015281816115210152818161156501528181611607015281816116bb015281816117a5015281816123f90152818161270301528181612747015281816127e90152613cb201525f818161045601528181610c3a015261295301525f8181610426015281816111d4015281816113550152818161147e01528181612311015281816124920152818161266001528181612b660152612e3801526145245ff3fe608060405234801561000f575f80fd5b506004361061029d575f3560e01c80635d6cafd511610171578063b3f00674116100d2578063e5d9736e11610088578063f2fde38b1161006e578063f2fde38b146105ed578063f887ea4014610600578063f92aa57f14610620575f80fd5b8063e5d9736e146105db578063eed8d78f146105e4575f80fd5b8063bd38837b116100b8578063bd38837b146105a9578063d65d3bf4146105c9578063e57da9b6146105d2575f80fd5b8063b3f0067414610580578063b9f4dbd3146105a0575f80fd5b806386eba252116101275780638da5cb5b1161010d5780638da5cb5b14610550578063912bcc1c1461056e578063b0c161f614610577575f80fd5b806386eba2521461053e57806387eeeb8b14610547575f80fd5b80636425666b116101575780636425666b146104e8578063715018a61461050f578063829676b814610517575f80fd5b80635d6cafd5146104aa57806360f11313146104b3575f80fd5b8063217a4b701161021b5780634e6fd6c4116101d1578063546d08fe116101b7578063546d08fe1461047857806355440c701461049857806359f82602146104a1575f80fd5b80634e6fd6c4146104485780634eeb0fed14610451575f80fd5b8063258b80c411610201578063258b80c41461040f578063313e5bc6146104185780633fc8cef314610421575f80fd5b8063217a4b701461037057806324bd2cc814610390575f80fd5b80631b6d8556116102705780631fc928ae116102565780631fc928ae14610327578063209d2b041461034757806321507b4e14610350575f80fd5b80631b6d8556146103155780631cfde9481461031e575f80fd5b806301215be6146102a1578063019950e1146102bd5780631582358e146102c657806318b467f21461030b575b5f80fd5b6102aa60d55481565b6040519081526020015b60405180910390f35b6102aa60e05481565b60db546102e69073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102b4565b610313610640565b005b6102aa60ec5481565b6102aa60dd5481565b60ca546102e69073ffffffffffffffffffffffffffffffffffffffff1681565b6102aa60d75481565b60e5546102e69073ffffffffffffffffffffffffffffffffffffffff1681565b60c9546102e69073ffffffffffffffffffffffffffffffffffffffff1681565b60e85460e95460ea5460eb546103c99360ff81169373ffffffffffffffffffffffffffffffffffffffff61010090920482169391169185565b6040805160ff96909616865273ffffffffffffffffffffffffffffffffffffffff948516602087015292909316918401919091526060830152608082015260a0016102b4565b6102aa60df5481565b6102aa60da5481565b6102e67f000000000000000000000000000000000000000000000000000000000000000081565b6102e661dead81565b6102e67f000000000000000000000000000000000000000000000000000000000000000081565b60ce546102e69073ffffffffffffffffffffffffffffffffffffffff1681565b6102aa60d85481565b6102aa60d65481565b6102aa60d15481565b60e5546104d89074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020016102b4565b6102e67f000000000000000000000000000000000000000000000000000000000000000081565b61031361064a565b6102e67f000000000000000000000000000000000000000000000000000000000000000081565b6102aa60d45481565b6102aa60d95481565b60335473ffffffffffffffffffffffffffffffffffffffff166102e6565b6102aa60e75481565b6102aa60e65481565b60cc546102e69073ffffffffffffffffffffffffffffffffffffffff1681565b6102aa60cf5481565b60de546102e69073ffffffffffffffffffffffffffffffffffffffff1681565b6102aa60e45481565b6102aa60ed5481565b6102aa60d05481565b6102aa60d25481565b6103136105fb366004613f4a565b61065b565b60cb546102e69073ffffffffffffffffffffffffffffffffffffffff1681565b60dc546102e69073ffffffffffffffffffffffffffffffffffffffff1681565b610648610717565b565b610652610ff8565b6106485f611079565b610663610ff8565b73ffffffffffffffffffffffffffffffffffffffff811661070b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61071481611079565b50565b60e55474010000000000000000000000000000000000000000900460ff168015610758575060e55473ffffffffffffffffffffffffffffffffffffffff1615155b5060cf5460dd5460d15460d85460d25460e054818615610777575f60cf555b8415610782575f60d1555b821561078d575f60d2555b8315610798575f60d8555b85156107a3575f60dd555b81156107ae575f60e0555b604080516101408101825260d35461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000008104831660808301526a01000000000000000000008104831660a08301526c010000000000000000000000008104831660c08301526e0100000000000000000000000000008104831660e083015260ff700100000000000000000000000000000000820416151561010083015271010000000000000000000000000000000000900490911661012082015260db5460c95473ffffffffffffffffffffffffffffffffffffffff918216911681036108c2576108b88585613f92565b93505f9450610a86565b60ca5473ffffffffffffffffffffffffffffffffffffffff908116908216036109b8575f8511801561090b575060ce5473ffffffffffffffffffffffffffffffffffffffff1615155b156109b35760d9545f95908690821061092e57610927826110ef565b9050610945565b8160d25f82825461093f9190613f92565b90915550505b80156109b0576109558187613f92565b6040805173ffffffffffffffffffffffffffffffffffffffff86168152602081018590529081018390529096507f60701cb461445230f9438e157253feed90dcbcea2704843a42282f1a56f0816e9060600160405180910390a15b50505b610a86565b60de5473ffffffffffffffffffffffffffffffffffffffff16331480156109e1575060d9548510155b8015610a04575060ce5473ffffffffffffffffffffffffffffffffffffffff1615155b15610a86575f610a148683611877565b90508015610a8457610a268186613f92565b6040805173ffffffffffffffffffffffffffffffffffffffff85168152602081018990529081018390529095507f60701cb461445230f9438e157253feed90dcbcea2704843a42282f1a56f0816e9060600160405180910390a15f95505b505b8415610aa3578460d25f828254610a9d9190613f92565b90915550505b5f84118015610ac9575060ce5473ffffffffffffffffffffffffffffffffffffffff1615155b15610b3257610ad88482611f93565b610b325760c95473ffffffffffffffffffffffffffffffffffffffff90811690821603610b1b578360d25f828254610b109190613f92565b90915550610b329050565b8360e05f828254610b2c9190613f92565b90915550505b508415610f635760ca546040517ff1159a4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201525f917f0000000000000000000000000000000000000000000000000000000000000000169063f1159a499060240161024060405180830381865afa158015610bc9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bed9190614085565b9050600481516005811115610c0457610c04614195565b03610d66575f610c13876110ef565b90508015610cb95760ca54610c5f9073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000083612150565b60ca54604080518981526020810184905273ffffffffffffffffffffffffffffffffffffffff909216917f24832ef8aef5cd22be32f8514c3e40dfd3eb61517d3f096af6ae47601e4524d1910160405180910390a2610d60565b8660cf5f828254610cca9190613f92565b909155505060ca5473ffffffffffffffffffffffffffffffffffffffff167f8c215e6050de24af9a988a7f8d2a20165cb98bafba26cfa534cc114d86754f00885a604051610d5792919091825260208201526060604082018190526017908201527f447573743a207265646972656374656420746f20666565000000000000000000608082015260a00190565b60405180910390a25b50610f61565b60d9548610610f5b5760c9546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610ddb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dff91906141c2565b9050610e0a87612229565b60c9546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610e76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9a91906141c2565b60d8549091505f818a610ead86866141d9565b610eb791906141ff565b610ec191906141d9565b90505f811315610f52578060d85f828254610edc9190613f92565b909155505060ca5460d3546040805184815270010000000000000000000000000000000090920460ff161515602083015273ffffffffffffffffffffffffffffffffffffffff909216917f84afe921d928113c22409d09e693fd758cecb41b65f4484ad30d6b5d6e018dbc910160405180910390a25b50505050610f61565b60d88690555b505b80610100015115610f7e57610f798887896129d9565b610f89565b610f89888789612ed7565b610f9161314d565b60ca54604080518a81526020810189905290810184905273ffffffffffffffffffffffffffffffffffffffff909116907f172485312163eefa9f05b438339dc7c596fbb24af0cb3e35b9130c68453a0d889060600160405180910390a25050505050505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610702565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60ca546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f91829173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa15801561115f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118391906141c2565b60d354909150700100000000000000000000000000000000900460ff1615611502576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d906024015f604051808303815f87803b15801561122a575f80fd5b505af115801561123c573d5f803e3d5ffd5b50506040805160a0810182525f80825260ca5473ffffffffffffffffffffffffffffffffffffffff9081166020808501919091528385018a90526060840183905284519081018552918252608083019190915260da5492517fef7ec2e70000000000000000000000000000000000000000000000000000000081529194507f000000000000000000000000000000000000000000000000000000000000000016925063ef7ec2e7919087906112f5908690600401614272565b602060405180830381858988f1945050505050801561134f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261134c918101906141c2565b60015b6113d9577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004015f604051808303818588803b1580156113b9575f80fd5b505af11580156113cb573d5f803e3d5ffd5b505f98975050505050505050565b60ca546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611445573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061146991906141c2565b61147391906142e0565b93504780156114fa577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156114e2575f80fd5b505af11580156114f4573d5f803e3d5ffd5b50505050505b5050506117cd565b60c9546115469073ffffffffffffffffffffffffffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000005f6132a1565b60c95461158a9073ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000856132a1565b6040805160a08101825260c95473ffffffffffffffffffffffffffffffffffffffff908116825260ca5481166020808401919091528284018790525f60608401819052845191820185528152608083015260da5492517fef7ec2e700000000000000000000000000000000000000000000000000000000815291927f00000000000000000000000000000000000000000000000000000000000000009091169163ef7ec2e7919061163f908590600401614272565b6020604051808303815f8887f193505050508015611698575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611695918101906141c2565b60015b6116e95760c9546116e09073ffffffffffffffffffffffffffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000005f6132a1565b505f9392505050565b60ca546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611755573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061177991906141c2565b61178391906142e0565b60c9549094506117ca9073ffffffffffffffffffffffffffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000005f6132a1565b50505b815f036118715760ca546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152829173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611840573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061186491906141c2565b61186e91906142e0565b91505b50919050565b6040517ffe575a8700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe575a8790602401602060405180830381865afa158015611905573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192991906142f3565b1561193557505f611f8d565b60c9546040517fae39ecfc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015283821660248201525f917f0000000000000000000000000000000000000000000000000000000000000000169063ae39ecfc9060440160a060405180830381865afa1580156119cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119f0919061431a565b90508060800151611a04575f915050611f8d565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663952b89016040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a92919061439c565b905073ffffffffffffffffffffffffffffffffffffffff8116611b37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f54617850726f636573736f723a206e6f20726f7574657220696e20726567697360448201527f74727900000000000000000000000000000000000000000000000000000000006064820152608401610702565b60c954611b5b9073ffffffffffffffffffffffffffffffffffffffff16825f6132a1565b60c954611b7f9073ffffffffffffffffffffffffffffffffffffffff1682876132a1565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa158015611be9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c0d91906141c2565b9050600183606001516001811115611c2757611c27614195565b03611d7b576040805160e08101825260c95473ffffffffffffffffffffffffffffffffffffffff908116825287811660208084019182528785015162ffffff9081168587019081523060608701908152608087018e8152600160a089019081525f60c08a01908152958d015199517f46a7da7600000000000000000000000000000000000000000000000000000000815260ff909a1660048b01528851881660248b01529551871660448a0152915190921660648801529051841660848701525160a4860152905160c485015251811660e48401529091908416906346a7da7690610104016020604051808303815f875af1925050508015611d64575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611d61918101906141c2565b60015b611d74575f945050505050611f8d565b5050611eef565b6040805160028082526060820183525f92602083019080368337505060c954825192935073ffffffffffffffffffffffffffffffffffffffff16918391505f90611dc757611dc76143b7565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508581600181518110611e1557611e156143b7565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092018101919091528501516040517fb884b0960000000000000000000000000000000000000000000000000000000081529185169163b884b09691611e84918b90600190879030906004016143e4565b6020604051808303815f875af1925050508015611edc575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611ed9918101906141c2565b60015b611eec575f945050505050611f8d565b50505b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152819073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa158015611f59573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f7d91906141c2565b611f8791906142e0565b93505050505b92915050565b60ce545f90611fbc9073ffffffffffffffffffffffffffffffffffffffff8481169116836132a1565b60ce54611fe39073ffffffffffffffffffffffffffffffffffffffff8481169116856132a1565b60ce546040517fb6b55f250000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff9091169063b6b55f25906024016020604051808303815f875af1158015612051573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061207591906142f3565b90508015612099578260d45f82825461208e9190613f92565b90915550611f8d9050565b60ca5460405173ffffffffffffffffffffffffffffffffffffffff909116907f2e823e2fa01b664516ab88e121c51c71a45b9cf55630fd66d92362036110c8e790612142908681526040602082018190526021908201527f4465706f736974206661696c6564206f72206e6f207368617265686f6c64657260608201527f7300000000000000000000000000000000000000000000000000000000000000608082015260a00190565b60405180910390a292915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526122249084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613421565b505050565b600260975560ca546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561229a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122be91906141c2565b60d3549091505f90700100000000000000000000000000000000900460ff16156126e4576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d906024015f604051808303815f87803b158015612367575f80fd5b505af1158015612379573d5f803e3d5ffd5b50506040805160a0810182525f80825260ca5473ffffffffffffffffffffffffffffffffffffffff9081166020808501919091528385018a90526060840183905284519081018552918252608083019190915260da5492517fef7ec2e70000000000000000000000000000000000000000000000000000000081529194507f000000000000000000000000000000000000000000000000000000000000000016925063ef7ec2e791908790612432908690600401614272565b602060405180830381858988f1945050505050801561248c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612489918101906141c2565b60015b6125bb577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004015f604051808303818588803b1580156124f6575f80fd5b505af1158015612508573d5f803e3d5ffd5b50505050508360d85f82825461251e9190613f92565b909155505060ca5473ffffffffffffffffffffffffffffffffffffffff167f8c215e6050de24af9a988a7f8d2a20165cb98bafba26cfa534cc114d86754f00855a6040516125ab9291909182526020820152606060408201819052600b908201527f53776170206661696c6564000000000000000000000000000000000000000000608082015260a00190565b60405180910390a25050506129d1565b60ca546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152859173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612627573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061264b91906141c2565b61265591906142e0565b92504780156126dc577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156126c4575f80fd5b505af11580156126d6573d5f803e3d5ffd5b50505050505b50505061292e565b60c9546127289073ffffffffffffffffffffffffffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000005f6132a1565b60c95461276c9073ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000856132a1565b6040805160a08101825260c95473ffffffffffffffffffffffffffffffffffffffff908116825260ca5481166020808401919091528284018790525f60608401819052845191820185528152608083015260da5492517fef7ec2e700000000000000000000000000000000000000000000000000000000815291927f00000000000000000000000000000000000000000000000000000000000000009091169163ef7ec2e79190612821908590600401614272565b6020604051808303815f8887f19350505050801561287a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612877918101906141c2565b60015b61288f578360d85f82825461251e9190613f92565b60ca546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152859173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156128fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061291f91906141c2565b61292991906142e0565b925050505b80156129ce5760ca546129789073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000083612150565b60ca54604080518581526020810184905273ffffffffffffffffffffffffffffffffffffffff909216917f24832ef8aef5cd22be32f8514c3e40dfd3eb61517d3f096af6ae47601e4524d1910160405180910390a25b50505b506001609755565b604080516101408101825260d35461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000008104831660808301526a01000000000000000000008104831660a08301526c010000000000000000000000008104831660c08301526e0100000000000000000000000000008104831660e083015260ff70010000000000000000000000000000000082041615156101008301527101000000000000000000000000000000000090049091166101208201525f808080612ac1878661352e565b93509350935093505f818385878c612ad99190613f92565b612ae39190613f92565b612aed9190613f92565b612af79190613f92565b90505f87118015612b1f575060dc5473ffffffffffffffffffffffffffffffffffffffff1615155b15612b3157612b2e8782613f92565b90505b8015612bd3576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d906024015f604051808303815f87803b158015612bbc575f80fd5b505af1158015612bce573d5f803e3d5ffd5b505050505b5f8915612c4f5760cc546040515f9173ffffffffffffffffffffffffffffffffffffffff16908c908381818185875af1925050503d805f8114612c31576040519150601f19603f3d011682016040523d82523d5f602084013e612c36565b606091505b505090508015612c4d57612c4a8b83613f92565b91505b505b60cd548751612c759173ffffffffffffffffffffffffffffffffffffffff16908861361c565b612c7f9082613f92565b60e1546020890151919250612cad9173ffffffffffffffffffffffffffffffffffffffff909116908761361c565b612cb79082613f92565b60e2546040890151919250612ce59173ffffffffffffffffffffffffffffffffffffffff909116908661361c565b612cef9082613f92565b60e3546060890151919250612d1d9173ffffffffffffffffffffffffffffffffffffffff909116908561361c565b612d279082613f92565b90505f88118015612d4f575060dc5473ffffffffffffffffffffffffffffffffffffffff1615155b15612e235760dc546040515f9173ffffffffffffffffffffffffffffffffffffffff1690620186a0908b9084818181858888f193505050503d805f8114612db1576040519150601f19603f3d011682016040523d82523d5f602084013e612db6565b606091505b505090508015612e2157612dca8983613f92565b60dc546040805173ffffffffffffffffffffffffffffffffffffffff9092168252602082018c90529193507fdb47f0e114375c6268b1b0831d3e9d4e41cbe21d116f9ed013852da9c2831a56910160405180910390a15b505b5f612e2e82846142e0565b90508015612eca577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015612e9c575f80fd5b505af1158015612eae573d5f803e3d5ffd5b50505050508060cf5f828254612ec49190613f92565b90915550505b5050505050505050505050565b604080516101408101825260d35461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000008104831660808301526a01000000000000000000008104831660a08301526c010000000000000000000000008104831660c08301526e0100000000000000000000000000008104831660e083015260ff70010000000000000000000000000000000082041615156101008301527101000000000000000000000000000000000090049091166101208201525f808080612fbf878661352e565b93509350935093505f881115612ff95760cc5460c954612ff99173ffffffffffffffffffffffffffffffffffffffff91821691168a612150565b60cd54855161301f9173ffffffffffffffffffffffffffffffffffffffff16908661372c565b60e15460208601516130489173ffffffffffffffffffffffffffffffffffffffff16908561372c565b60e25460408601516130719173ffffffffffffffffffffffffffffffffffffffff16908461372c565b60e354606086015161309a9173ffffffffffffffffffffffffffffffffffffffff16908361372c565b5f861180156130c0575060dc5473ffffffffffffffffffffffffffffffffffffffff1615155b156131435760dc5460c9546130ef9173ffffffffffffffffffffffffffffffffffffffff918216911688612150565b60dc546040805173ffffffffffffffffffffffffffffffffffffffff9092168252602082018890527fdb47f0e114375c6268b1b0831d3e9d4e41cbe21d116f9ed013852da9c2831a56910160405180910390a15b5050505050505050565b60c9546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156131b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131dd91906141c2565b90505f60dd5460d85460d05460d25460d15460cf546131fc9190613f92565b6132069190613f92565b6132109190613f92565b61321a9190613f92565b6132249190613f92565b905080821115613295575f61323982846142e0565b9050613244816137eb565b60ca5460405182815273ffffffffffffffffffffffffffffffffffffffff909116907f93db5e4e56d5f88c3982b8ddf0842a8bf780dbc84ae70e9c2f98a9de2df702039060200160405180910390a2505b61329d613aef565b5050565b80158061333f57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613319573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061333d91906141c2565b155b6133cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610702565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526122249084907f095ea7b300000000000000000000000000000000000000000000000000000000906064016121a2565b5f613482826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613c519092919063ffffffff16565b905080515f14806134a25750808060200190518101906134a291906142f3565b612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610702565b5f805f805f856060015161ffff16866040015161ffff16876020015161ffff16885f015161ffff166135609190613f92565b61356a9190613f92565b6135749190613f92565b90508694505f8711801561358757505f81115b156136125780866020015161ffff16886135a19190614477565b6135ab919061448e565b935080866040015161ffff16886135c29190614477565b6135cc919061448e565b925080866060015161ffff16886135e39190614477565b6135ed919061448e565b915081836135fb868a6142e0565b61360591906142e0565b61360f91906142e0565b94505b5092959194509250565b5f81158061363e575073ffffffffffffffffffffffffffffffffffffffff8416155b1561364a57505f613725565b5f8473ffffffffffffffffffffffffffffffffffffffff16836040515f6040518083038185875af1925050503d805f81146136a0576040519150601f19603f3d011682016040523d82523d5f602084013e6136a5565b606091505b505090508015613723578260d75f8282546136c09190613f92565b90915550506040805161ffff861681526020810185905273ffffffffffffffffffffffffffffffffffffffff8716917f42a48cee411a2f942d4fbc9db28388a56da007d12ec3ac7498884f794f680693910160405180910390a282915050613725565b505b9392505050565b80158061374d575073ffffffffffffffffffffffffffffffffffffffff8316155b1561375757505050565b60c95461377b9073ffffffffffffffffffffffffffffffffffffffff168483612150565b8060d75f82825461378c9190613f92565b90915550506040805161ffff841681526020810183905273ffffffffffffffffffffffffffffffffffffffff8516917f42a48cee411a2f942d4fbc9db28388a56da007d12ec3ac7498884f794f680693910160405180910390a2505050565b604080516101408101825260d35461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000008104831660808301526a01000000000000000000008104831660a08301526c010000000000000000000000008104831660c08301526e0100000000000000000000000000008104831660e0830181905260ff700100000000000000000000000000000000830416151561010084015271010000000000000000000000000000000000909104909216610120820152905f90612710906138d99085614477565b6138e3919061448e565b90505f8083610120015161ffff16118015613915575060dc5473ffffffffffffffffffffffffffffffffffffffff1615155b1561393f5761271083610120015161ffff16856139329190614477565b61393c919061448e565b90505b5f8161394b84876142e0565b61395591906142e0565b90505f846060015161ffff16856040015161ffff16866020015161ffff16875f015161ffff166139859190613f92565b61398f9190613f92565b6139999190613f92565b90505f6127106139a98385614477565b6139b3919061448e565b90505f612710876080015161ffff16856139cd9190614477565b6139d7919061448e565b90505f6127108860a0015161ffff16866139f19190614477565b6139fb919061448e565b90505f6127108960c0015161ffff1687613a159190614477565b613a1f919061448e565b90505f8183613a2e8688613f92565b613a389190613f92565b613a429190613f92565b905086811015613a6357613a5681886142e0565b613a60908a613f92565b98505b8860cf5f828254613a749190613f92565b90915550508715613a96578760dd5f828254613a909190613f92565b90915550505b8460d15f828254613aa79190613f92565b925050819055508160d25f828254613abf9190613f92565b925050819055508260d05f828254613ad79190613f92565b925050819055508360d85f828254612ec49190613f92565b60ed5460ca5460db5473ffffffffffffffffffffffffffffffffffffffff918216911603613b275760e054613b249082613f92565b90505b60ca546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015613b93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613bb791906141c2565b9050818111613bc4575050565b613bcc613c67565b613bd4575050565b5f613bdf83836142e0565b90508015612224576040517f42a927b20000000000000000000000000000000000000000000000000000000081526004810182905230906342a927b2906024015f604051808303815f87803b158015613c36575f80fd5b505af1925050508015613c47575060015b1561222457505050565b6060613c5f84845f85613d36565b949350505050565b5f600460ca546040517ff1159a4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f1159a499060240161024060405180830381865afa158015613cfa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d1e9190614085565b516005811115613d3057613d30614195565b14905090565b606082471015613dc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610702565b5f808673ffffffffffffffffffffffffffffffffffffffff168587604051613df091906144c6565b5f6040518083038185875af1925050503d805f8114613e2a576040519150601f19603f3d011682016040523d82523d5f602084013e613e2f565b606091505b5091509150613e4087838387613e4b565b979650505050505050565b60608315613ee05782515f03613ed95773ffffffffffffffffffffffffffffffffffffffff85163b613ed9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610702565b5081613c5f565b613c5f8383815115613ef55781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070291906144dc565b73ffffffffffffffffffffffffffffffffffffffff81168114610714575f80fd5b5f60208284031215613f5a575f80fd5b813561372581613f29565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115611f8d57611f8d613f65565b604051610240810167ffffffffffffffff81118282101715613fee577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405290565b60405160a0810167ffffffffffffffff81118282101715613fee577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b80516006811061404a575f80fd5b919050565b80516008811061404a575f80fd5b805161404a81613f29565b8051801515811461404a575f80fd5b80516003811061404a575f80fd5b5f610240828403128015614097575f80fd5b506140a0613fa5565b6140a98361403c565b81526020838101519082015260408084015190820152606080840151908201526140d56080840161404f565b608082015260a0838101519082015260c0808401519082015260e080840151908201526101008084015190820152614110610120840161405d565b6101208201526141236101408401614068565b610140820152610160838101519082015261018080840151908201526101a080840151908201526141576101c0840161405d565b6101c08201526101e083810151908201526141756102008401614077565b6102008201526141886102208401614077565b6102208201529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312156141d2575f80fd5b5051919050565b8181035f8312801583831316838312821617156141f8576141f8613f65565b5092915050565b8082018281125f83128015821682158216171561421e5761421e613f65565b505092915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815273ffffffffffffffffffffffffffffffffffffffff825116602082015273ffffffffffffffffffffffffffffffffffffffff602083015116604082015260408201516060820152606082015160808201525f608083015160a080840152613c5f60c0840182614226565b81810381811115611f8d57611f8d613f65565b5f60208284031215614303575f80fd5b61372582614068565b80516002811061404a575f80fd5b5f60a082840312801561432b575f80fd5b50614334613ff4565b825161433f81613f29565b8152602083015160ff81168114614354575f80fd5b6020820152604083015162ffffff8116811461436e575f80fd5b604082015261437f6060840161430c565b606082015261439060808401614068565b60808201529392505050565b5f602082840312156143ac575f80fd5b815161372581613f29565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60a0820160ff8816835286602084015285604084015260a0606084015280855180835260c0850191506020870192505f5b8181101561444a57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101614416565b5050809250505073ffffffffffffffffffffffffffffffffffffffff831660808301529695505050505050565b8082028115828204841417611f8d57611f8d613f65565b5f826144c1577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f82518060208501845e5f920191825250919050565b602081525f613725602083018461422656fea26469706673582212205243046a15525cc0f55b2dd7d156bb33fee6c11b8124e7503d6f01f6a329c4d264736f6c634300081a003354617850726f636573736f723a207a65726f20706f7274616c206164647265737354617850726f636573736f723a207a65726f20706f7274616c20616464726573730000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000026605f322f7ff986f381bb9a6e3f5dab0beaeb0900000000000000000000000035bae0b77753a586f68f9c4cd0e8d1a4681690310000000000000000000000007da4e0356cfd42650339486a3a87553068167935
0x608060405260043610610486575f3560e01c80637025543811610251578063b8c06c571161013c578063e39a13d6116100b7578063ed86df4011610087578063f2fde38b1161006d578063f2fde38b146113e9578063f887ea4014611408578063f92aa57f14611434575f80fd5b8063ed86df4014610691578063eed8d78f146113d4575f80fd5b8063e39a13d614611382578063e57da9b614611396578063e5d9736e146113ab578063e9c4a3ac146113c0575f80fd5b8063ccfc84cb1161010c578063d6b45038116100f2578063d6b4503814611309578063d99f8de314611344578063de116bf414611363575f80fd5b8063ccfc84cb146112e0578063d65d3bf4146112f4575f80fd5b8063b8c06c571461123b578063b9f4dbd31461126c578063bba454e914611281578063bd38837b146112b4575f80fd5b80638da5cb5b116101cc5780639d9c90471161019c578063b0c161f611610182578063b0c161f6146111fa578063b19337a414610800578063b3f006741461120f575f80fd5b80639d9c9047146111db578063af51183414610691575f80fd5b80638da5cb5b14610ff5578063912bcc1c1461101f57806395623641146110345780639c93ef961461105e575f80fd5b8063829676b81161022157806386eba2521161020757806386eba25214610faa57806387eeeb8b14610fbf5780638856bc5814610fd4575f80fd5b8063829676b814610f5d57806382b4f5bd14610f90575f80fd5b80637025543814610691578063715018a614610efc57806378e5005614610f105780637b70f0b814610f2a575f80fd5b8063313e5bc61161037157806352ddd8a5116102ec57806359f82602116102bc5780635d6cafd5116102a25780635d6cafd514610e7357806360f1131314610e885780636425666b14610ec9575f80fd5b806359f8260214610e3f5780635d1c985b14610e54575f80fd5b806352ddd8a514610dd457806353aaa68814610ddf578063546d08fe14610dfe57806355440c7014610e2a575f80fd5b80634a64d67d116103415780634eeb0fed116103275780634eeb0fed14610da15780634ff7460e146106915780635245a61614610691575f80fd5b80634a64d67d14610d625780634e6fd6c414610d8c575f80fd5b8063313e5bc61461095a5780633fc8cef31461096f57806342a927b2146109a257806346e62d07146109c1575f80fd5b8063209d2b041161040157806324bd2cc8116103d157806325b1a48c116103b757806325b1a48c1461091257806329ff07731461092c5780632b44a6ad14610946575f80fd5b806324bd2cc814610872578063258b80c4146108fd575f80fd5b8063209d2b04146107eb57806320ffe2fd1461080057806321507b4e1461081a578063217a4b7014610846575f80fd5b80631582358e116104565780631cfde9481161043c5780631cfde948146107355780631e5eb1d01461074a5780631fc928ae146107bf575f80fd5b80631582358e146106cf5780631b6d855614610720575f80fd5b806301215be614610654578063019950e11461067c57806303c3c9ca1461069157806309cae2c8146106b0575f80fd5b36610650573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad7316148061050457503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000026605f322f7ff986f381bb9a6e3f5dab0beaeb0916145b1561050b57005b60e55474010000000000000000000000000000000000000000900460ff1661052f57005b60e55473ffffffffffffffffffffffffffffffffffffffff168061054f57005b5f8173ffffffffffffffffffffffffffffffffffffffff16346040515f6040518083038185875af1925050503d805f81146105a5576040519150601f19603f3d011682016040523d82523d5f602084013e6105aa565b606091505b5050905080156106045760405134815273ffffffffffffffffffffffffffffffffffffffff83169033907fdd9ffa8f38d0a7341f635ad9a93c753fb75873eab0063aa2e54df304ac7f12a6906020015b60405180910390a3005b60405134815273ffffffffffffffffffffffffffffffffffffffff83169033907f795d0f017e5676efa96070bb794ce6ff32d6e4a6ecb59aced45952c0562e8286906020016105fa565b005b5f80fd5b34801561065f575f80fd5b5061066960d55481565b6040519081526020015b60405180910390f35b348015610687575f80fd5b5061066960e05481565b34801561069c575f80fd5b5061064e6106ab366004613c84565b611460565b3480156106bb575f80fd5b5061064e6106ca366004613cc7565b61146b565b3480156106da575f80fd5b5060db546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610673565b34801561072b575f80fd5b5061066960ec5481565b348015610740575f80fd5b5061066960dd5481565b348015610755575f80fd5b5061075e611477565b60405161067391905f60c08201905061ffff835116825261ffff602084015116602083015261ffff604084015116604083015261ffff606084015116606083015261ffff608084015116608083015260a0830151151560a083015292915050565b3480156107ca575f80fd5b5060ca546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156107f6575f80fd5b5061066960d75481565b34801561080b575f80fd5b5061064e6106ab366004613cfe565b348015610825575f80fd5b5060e5546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610851575f80fd5b5060c9546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561087d575f80fd5b5060e85460e95460ea5460eb546108b79360ff81169373ffffffffffffffffffffffffffffffffffffffff61010090920482169391169185565b6040805160ff96909616865273ffffffffffffffffffffffffffffffffffffffff948516602087015292909316918401919091526060830152608082015260a001610673565b348015610908575f80fd5b5061066960df5481565b34801561091d575f80fd5b5061064e6106ca366004613d2a565b348015610937575f80fd5b5061064e6106ab366004613d5d565b348015610951575f80fd5b5060d454610669565b348015610965575f80fd5b5061066960da5481565b34801561097a575f80fd5b506106fb7f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad7381565b3480156109ad575f80fd5b5061064e6109bc366004613c84565b611611565b3480156109cc575f80fd5b50610d55604080516101e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091525f60d3604051806101400160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900461ffff1661ffff1661ffff1681526020015f820160049054906101000a900461ffff1661ffff1661ffff1681526020015f820160069054906101000a900461ffff1661ffff1661ffff1681526020015f820160089054906101000a900461ffff1661ffff1661ffff1681526020015f8201600a9054906101000a900461ffff1661ffff1661ffff1681526020015f8201600c9054906101000a900461ffff1661ffff1661ffff1681526020015f8201600e9054906101000a900461ffff1661ffff1661ffff1681526020015f820160109054906101000a900460ff161515151581526020015f820160119054906101000a900461ffff1661ffff1661ffff16815250509050604051806101e00160405280825f015161ffff168152602001826020015161ffff168152602001826040015161ffff168152602001826060015161ffff168152602001826080015161ffff1681526020018260a0015161ffff1681526020018260c0015161ffff1681526020018260e0015161ffff1681526020018261010001511515815260200182610120015161ffff16815260200160db5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160cd5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160e15f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160e25f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160e35f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525091505090565b6040516106739190613d76565b348015610d6d575f80fd5b5060c95473ffffffffffffffffffffffffffffffffffffffff166106fb565b348015610d97575f80fd5b506106fb61dead81565b348015610dac575f80fd5b506106fb7f000000000000000000000000000000000000000000000000000000000000dead81565b34801561064e575f80fd5b348015610dea575f80fd5b5061064e610df9366004613f23565b6117dc565b348015610e09575f80fd5b5060ce546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610e35575f80fd5b5061066960d85481565b348015610e4a575f80fd5b5061066960d65481565b348015610e5f575f80fd5b5061064e610e6e366004613f7f565b611864565b348015610e7e575f80fd5b5061066960d15481565b348015610e93575f80fd5b5060e554610eb99074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610673565b348015610ed4575f80fd5b506106fb7f00000000000000000000000026605f322f7ff986f381bb9a6e3f5dab0beaeb0981565b348015610f07575f80fd5b5061064e611871565b348015610f1b575f80fd5b5061064e6106ca366004613fd4565b348015610f35575f80fd5b506106fb7f0000000000000000000000007da4e0356cfd42650339486a3a8755306816793581565b348015610f68575f80fd5b506106fb7f00000000000000000000000035bae0b77753a586f68f9c4cd0e8d1a46816903181565b348015610f9b575f80fd5b5061064e6106ab3660046140ca565b348015610fb5575f80fd5b5061066960d45481565b348015610fca575f80fd5b5061066960d95481565b348015610fdf575f80fd5b50610fe8611882565b6040516106739190614272565b348015611000575f80fd5b5060335473ffffffffffffffffffffffffffffffffffffffff166106fb565b34801561102a575f80fd5b5061066960e75481565b34801561103f575f80fd5b5060cd5473ffffffffffffffffffffffffffffffffffffffff166106fb565b348015611069575f80fd5b50604080516101408101825260d35461ffff8082168084526201000083048216602085018190526401000000008404831695850186905266010000000000008404831660608601819052680100000000000000008504841660808701526a01000000000000000000008504841660a08701526c010000000000000000000000008504841660c08701526e0100000000000000000000000000008504841660e0870152700100000000000000000000000000000000850460ff161515610100870152710100000000000000000000000000000000009094049092166101209094019390935260cd5460e15460e25460e35473ffffffffffffffffffffffffffffffffffffffff93841697928416959184169316906040805173ffffffffffffffffffffffffffffffffffffffff998a16815261ffff98891660208201529689169087015293861660608601529186166080850152841660a084015290931660c0820152911660e082015261010001610673565b3480156111e6575f80fd5b5061064e6111f536600461431b565b611a77565b348015611205575f80fd5b5061066960e65481565b34801561121a575f80fd5b5060cc546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b348015611246575f80fd5b5061125a611255366004613c84565b611a88565b6040515f9190910b8152602001610673565b348015611277575f80fd5b5061066960cf5481565b34801561128c575f80fd5b506106fb7f000000000000000000000000571e32cdf6a8e430b689ed0bce2c6b030ef7d15881565b3480156112bf575f80fd5b5060de546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156112eb575f80fd5b50610eb9611c47565b3480156112ff575f80fd5b5061066960e45481565b348015611314575f80fd5b5060d35471010000000000000000000000000000000000900461ffff1660405161ffff9091168152602001610673565b34801561134f575f80fd5b5061064e61135e366004613c84565b611c99565b34801561136e575f80fd5b5061064e61137d3660046143a4565b611de8565b34801561138d575f80fd5b5060d254610669565b3480156113a1575f80fd5b5061066960ed5481565b3480156113b6575f80fd5b5061066960d05481565b3480156113cb575f80fd5b5061064e611df7565b3480156113df575f80fd5b5061066960d25481565b3480156113f4575f80fd5b5061064e611403366004613cfe565b611ef7565b348015611413575f80fd5b5060cb546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561143f575f80fd5b5060dc546106fb9073ffffffffffffffffffffffffffffffffffffffff1681565b611468611fab565b50565b611473611fab565b5050565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810191909152604080516101408101825260d35461ffff80821683526201000082048116602084019081526401000000008304821684860190815266010000000000008404831660608601908152680100000000000000008504841660808701526a01000000000000000000008504841660a08701526c010000000000000000000000008504841660c0808801919091526e0100000000000000000000000000008604851660e088015260ff7001000000000000000000000000000000008704161515610100880152710100000000000000000000000000000000009095049093166101208601528551938401909552905193519051835193949293849392916115ab91614432565b6115b59190614432565b6115bf9190614432565b61ffff168152602001826080015161ffff1681526020018260a0015161ffff1681526020018260c0015161ffff1681526020018260e0015161ffff168152602001826101000151151581525091505090565b33301461167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f54617850726f636573736f723a206f6e6c792073656c662063616e2063616c6c60448201526064015b60405180910390fd5b5f81116116e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f54617850726f636573736f723a207a65726f20616d6f756e74000000000000006044820152606401611676565b6116f0611fea565b61177c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f54617850726f636573736f723a2074617820746f6b656e206e6f74206f6e204460448201527f45580000000000000000000000000000000000000000000000000000000000006064820152608401611676565b611785816120b9565b505060ca5460405182815273ffffffffffffffffffffffffffffffffffffffff909116907fd59ddd6e632a7c3e5a1918dc34a62f80d61a2c28def271118aeb12eae5a0fcca906020015b60405180910390a250565b565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f54617850726f636573736f723a2056342066656520736f7572636520756e737560448201527f70706f72746564000000000000000000000000000000000000000000000000006064820152608401611676565b61186c611fab565b505050565b611879612447565b6117da5f6124c8565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152604080516101408101825260d35461ffff80821683526201000082048116602084019081526401000000008304821684860190815266010000000000008404831660608601908152680100000000000000008504841660808701526a01000000000000000000008504841660a08701526c010000000000000000000000008504841660c08701526e0100000000000000000000000000008504841660e087015260ff700100000000000000000000000000000000860416151561010080880191909152710100000000000000000000000000000000009095049093166101208601528551938401909552905193519051835193949293849392916119c591614432565b6119cf9190614432565b6119d99190614432565b61ffff168152602001826080015161ffff1681526020018260a0015161ffff1681526020018260c0015161ffff1681526020018260e0015161ffff1681526020018261010001511515815260200182610120015161ffff16815260200160db5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525091505090565b611a7f611fab565b50505050505050565b60ca545f9073ffffffffffffffffffffffffffffffffffffffff163314611b31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f54617850726f636573736f723a2063616c6c6572206973206e6f74207468652060448201527f74617820746f6b656e00000000000000000000000000000000000000000000006064820152608401611676565b5f8211611b9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f54617850726f636573736f723a207a65726f20616d6f756e74000000000000006044820152606401611676565b60ca54611bbf9073ffffffffffffffffffffffffffffffffffffffff1633308561253e565b60ee5460ff1615611c36578160ed5f828254611bdb9190614452565b909155505060ca5460405183815273ffffffffffffffffffffffffffffffffffffffff909116907f8ac203b5426c1ab3d6a3006d3fa7f66fe6f1fb10faa3ee834c4d9f7d653018df9060200160405180910390a2505f919050565b611c3f82612620565b90505b919050565b60db5460c9545f9173ffffffffffffffffffffffffffffffffffffffff90811691168114801590611c93575060ca5473ffffffffffffffffffffffffffffffffffffffff828116911614155b91505090565b5f8111611d02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f54617850726f636573736f723a207a65726f20616d6f756e74000000000000006044820152606401611676565b60c954611d279073ffffffffffffffffffffffffffffffffffffffff1633308461253e565b609754600203611d93578060d85f828254611d429190614452565b909155505060ca5460405182815273ffffffffffffffffffffffffffffffffffffffff909116907fe28939e2584c18d4cf50400652cdf80c00e35aa5bcf60991b33199aabc9d6a4c906020016117cf565b611d9c81612931565b60ca5460405182815273ffffffffffffffffffffffffffffffffffffffff909116907fe28939e2584c18d4cf50400652cdf80c00e35aa5bcf60991b33199aabc9d6a4c906020016117cf565b611df0611fab565b5050505050565b611dff612c47565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18b467f20000000000000000000000000000000000000000000000000000000017905290515f91829173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000571e32cdf6a8e430b689ed0bce2c6b030ef7d1581691611e9c91614465565b5f60405180830381855af49150503d805f8114611ed4576040519150601f19603f3d011682016040523d82523d5f602084013e611ed9565b606091505b509150915081611eeb57805160208201fd5b50506117da6001606555565b611eff612447565b73ffffffffffffffffffffffffffffffffffffffff8116611fa2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611676565b611468816124c8565b7f0000000000000000000000007da4e0356cfd42650339486a3a87553068167935365f80375f80365f845af43d5f803e808015611fe6573d5ff35b3d5ffd5b5f600460ca546040517ff1159a4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527f00000000000000000000000026605f322f7ff986f381bb9a6e3f5dab0beaeb099091169063f1159a499060240161024060405180830381865afa15801561207d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120a191906144e8565b5160058111156120b3576120b361447b565b14905090565b604080516101408101825260d35461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000008104831660808301526a01000000000000000000008104831660a08301526c010000000000000000000000008104831660c08301526e0100000000000000000000000000008104831660e0830181905260ff7001000000000000000000000000000000008304161515610100840152710100000000000000000000000000000000009091049092166101208201525f918291908290612710906121ab90876145f8565b6121b5919061460f565b90505f6121c28287614647565b90505f8084610120015161ffff161180156121f4575060dc5473ffffffffffffffffffffffffffffffffffffffff1615155b156122305761271084610120015161ffff168361221191906145f8565b61221b919061460f565b905080156122305761222d8183614647565b91505b5f846060015161ffff16856040015161ffff16866020015161ffff16875f015161ffff1661225e9190614452565b6122689190614452565b6122729190614452565b90505f61271061228283866145f8565b61228c919061460f565b90505f612710876080015161ffff16866122a691906145f8565b6122b0919061460f565b90505f6127108860a0015161ffff16876122ca91906145f8565b6122d4919061460f565b90505f6127108960c0015161ffff16886122ee91906145f8565b6122f8919061460f565b90505f81836123078688614452565b6123119190614452565b61231b9190614452565b90508781101561233c5761232f8189614647565b612339908a614452565b98505b83156123d65760ca546123869073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000dead86612cba565b60ca5460405185815273ffffffffffffffffffffffffffffffffffffffff909116907fda45c413684fa670cacf90742f7d728024e578932e771bd9ba72fd22922547289060200160405180910390a25b60db5460ca54839173ffffffffffffffffffffffffffffffffffffffff90811691168114801561240557505f84115b15612424578360e05f82825461241b9190614452565b909155505f9250505b506124328a8786848c612d10565b909f909e509c50505050505050505050505050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146117da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611676565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261261a9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261309a565b50505050565b60ec545f9080820361263c57612635836131a7565b9392505050565b5f6126468261322b565b9050805f0361266057612658846131a7565b949350505050565b60d3545f906126819068010000000000000000900461ffff16612710614647565b60ca5460db5491925073ffffffffffffffffffffffffffffffffffffffff9081169116036126cd5760d3546126ca906c01000000000000000000000000900461ffff1682614647565b90505b805f036126e6576126dd856131a7565b95945050505050565b61271081101561270a57806126fd836127106145f8565b612707919061460f565b91505b5060ca54604080517f4031234c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff1691634031234c9160048083019260209291908290030181865afa9250505080156127b4575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526127b19181019061465a565b60015b6127c1576126dd856131a7565b90505f8282116127d1575f6127db565b6127db8383614647565b9050858111156127e85750845b80156128125760ca546128129073ffffffffffffffffffffffffffffffffffffffff168083612cba565b5f61281d8288614647565b90505f8160ed5461282e9190614452565b90505f61283c60028761460f565b90505f86831161284c575f612856565b6128568784614647565b90505f8183106128665781612868565b825b90505f612875828a614452565b9050848111156128825750835b61288c8186614647565b60ed5580156128f05761289e816120b9565b505060ca5460405182815273ffffffffffffffffffffffffffffffffffffffff909116907f378102bdb1ca1b7701e818b9904c8d2f3d37cbe477c07ad947cacdeea4221d4d9060200160405180910390a25b60ed541561291e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612921565b60015b9c9b505050505050505050505050565b604080516101408101825260d35461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000008104831660808301526a01000000000000000000008104831660a08301526c010000000000000000000000008104831660c08301526e0100000000000000000000000000008104831660e0830181905260ff700100000000000000000000000000000000830416151561010084015271010000000000000000000000000000000000909104909216610120820152905f9061271090612a1f90856145f8565b612a29919061460f565b90505f8083610120015161ffff16118015612a5b575060dc5473ffffffffffffffffffffffffffffffffffffffff1615155b15612a855761271083610120015161ffff1685612a7891906145f8565b612a82919061460f565b90505b5f81612a918487614647565b612a9b9190614647565b90505f846060015161ffff16856040015161ffff16866020015161ffff16875f015161ffff16612acb9190614452565b612ad59190614452565b612adf9190614452565b90505f612710612aef83856145f8565b612af9919061460f565b90505f612710876080015161ffff1685612b1391906145f8565b612b1d919061460f565b90505f6127108860a0015161ffff1686612b3791906145f8565b612b41919061460f565b90505f6127108960c0015161ffff1687612b5b91906145f8565b612b65919061460f565b90505f8183612b748688614452565b612b7e9190614452565b612b889190614452565b905086811015612ba957612b9c8188614647565b612ba6908a614452565b98505b8860cf5f828254612bba9190614452565b90915550508715612bdc578760dd5f828254612bd69190614452565b90915550505b8460d15f828254612bed9190614452565b925050819055508160d25f828254612c059190614452565b925050819055508260d05f828254612c1d9190614452565b925050819055508360d85f828254612c359190614452565b90915550505050505050505050505050565b600260655403612cb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611676565b6002606555565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261186c9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612598565b5f80848015801590612d2357505f60d054115b15612d78575f80612d368860d0546133b6565b9150915081881015612d48575f612d52565b612d528289614647565b92508060d0541015612d64575f612d72565b8060d054612d729190614647565b60d05550505b5f858886612d868c86614452565b612d909190614452565b612d9a9190614452565b612da49190614452565b9050801561308e5760ca546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612e18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e3c919061465a565b90505f612e4883613574565b60ca546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529197508792505f9173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612ebc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ee0919061465a565b905080831115612ef757612ef48184614647565b95505b811561308a575f808d11612f0b575f612f20565b84612f168e856145f8565b612f20919061460f565b90505f808a11612f30575f612f45565b85612f3b8b866145f8565b612f45919061460f565b90505f808e11612f55575f612f6a565b86612f608f876145f8565b612f6a919061460f565b90505f808d11612f7a575f612f8f565b87612f858e886145f8565b612f8f919061460f565b90505f808a11612f9f575f612fb4565b88612faa8b896145f8565b612fb4919061460f565b90508460cf5f828254612fc79190614452565b925050819055508360dd5f828254612fdf9190614452565b925050819055508260d15f828254612ff79190614452565b925050819055508160d25f82825461300f9190614452565b925050819055508060d05f8282546130279190614452565b909155505f905081838561303b888a614452565b6130459190614452565b61304f9190614452565b6130599190614452565b9050878110156130835761306d8189614647565b60cf5f82825461307d9190614452565b90915550505b5050505050505b5050505b50509550959350505050565b5f6130fb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661386e9092919063ffffffff16565b905080515f148061311b57508080602001905181019061311b9190614671565b61186c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611676565b5f808260ed546131b79190614452565b5f60ed819055909150806131ca836120b9565b60ca5460405186815292945090925073ffffffffffffffffffffffffffffffffffffffff16907f378102bdb1ca1b7701e818b9904c8d2f3d37cbe477c07ad947cacdeea4221d4d9060200160405180910390a26126dd828260df548661387c565b5f815f0361323a57505f919050565b6040805160028082526060820183525f92602083019080368337505060ca54825192935073ffffffffffffffffffffffffffffffffffffffff16918391505f906132865761328661468c565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260c9548251911690829060019081106132c4576132c461468c565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260cb546040517f1f00ca74000000000000000000000000000000000000000000000000000000008152911690631f00ca74906133299086908590600401614709565b5f60405180830381865afa92505050801561338357506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526133809190810190614721565b60015b156133b05760028151106133ae57805f815181106133a3576133a361468c565b602002602001015192505b505b50919050565b60cb5460ca545f9182916133e49173ffffffffffffffffffffffffffffffffffffffff918216911683613911565b60cb5460ca5461340e9173ffffffffffffffffffffffffffffffffffffffff918216911686613911565b60cb5460c9546134389173ffffffffffffffffffffffffffffffffffffffff91821691165f613911565b60cb5460c9546134629173ffffffffffffffffffffffffffffffffffffffff918216911685613911565b60cb5460ca5460c9546040517fe8e3370000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015260448101879052606481018690525f6084820181905260a4820181905261dead60c48301524260e4830152928392169063e8e3370090610104016060604051808303815f875af115801561350c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061353091906147c2565b50915091508193508092508360d65f82825461354c9190614452565b925050819055508260d55f8282546135649190614452565b9250508190555050509250929050565b60cb5460ca545f916135a09173ffffffffffffffffffffffffffffffffffffffff908116911683613911565b60cb5460ca546135ca9173ffffffffffffffffffffffffffffffffffffffff918216911684613911565b6040805160028082526060820183525f92602083019080368337505060ca54825192935073ffffffffffffffffffffffffffffffffffffffff16918391505f906136165761361661468c565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260c9548251911690829060019081106136545761365461468c565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260c9546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9291909116906370a0823190602401602060405180830381865afa1580156136d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136f5919061465a565b60ee80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560cb546040517f5c11d79500000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690635c11d7959061377f9087905f908790309042906004016147ed565b5f604051808303815f87803b158015613796575f80fd5b505af11580156137a8573d5f803e3d5ffd5b505060ee80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055505060c9546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152829173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015613840573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613864919061465a565b6126589190614647565b606061265884845f85613a91565b5f821580613888575084155b80613891575083155b8061389a575081155b156138a657505f612658565b5f6138b183876145f8565b90505f6138be86866145f8565b9050808211156138f2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92505050612658565b8082101561390557600192505050612658565b505f9695505050505050565b8015806139af57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613989573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139ad919061465a565b155b613a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401611676565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261186c9084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612598565b606082471015613b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611676565b5f808673ffffffffffffffffffffffffffffffffffffffff168587604051613b4b9190614465565b5f6040518083038185875af1925050503d805f8114613b85576040519150601f19603f3d011682016040523d82523d5f602084013e613b8a565b606091505b5091509150613b9b87838387613ba6565b979650505050505050565b60608315613c3b5782515f03613c345773ffffffffffffffffffffffffffffffffffffffff85163b613c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611676565b5081612658565b6126588383815115613c505781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116769190614835565b5f60208284031215613c94575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611468575f80fd5b8035611c4281613c9b565b5f8060408385031215613cd8575f80fd5b8235613ce381613c9b565b91506020830135613cf381613c9b565b809150509250929050565b5f60208284031215613d0e575f80fd5b813561263581613c9b565b803561ffff81168114611c42575f80fd5b5f8060408385031215613d3b575f80fd5b8235613d4681613c9b565b9150613d5460208401613d19565b90509250929050565b5f60208284031215613d6d575f80fd5b61263582613d19565b815161ffff1681526101e081016020830151613d98602084018261ffff169052565b506040830151613dae604084018261ffff169052565b506060830151613dc4606084018261ffff169052565b506080830151613dda608084018261ffff169052565b5060a0830151613df060a084018261ffff169052565b5060c0830151613e0660c084018261ffff169052565b5060e0830151613e1c60e084018261ffff169052565b50610100830151613e3261010084018215159052565b50610120830151613e4a61012084018261ffff169052565b50610140830151613e7461014084018273ffffffffffffffffffffffffffffffffffffffff169052565b50610160830151613e9e61016084018273ffffffffffffffffffffffffffffffffffffffff169052565b50610180830151613ec861018084018273ffffffffffffffffffffffffffffffffffffffff169052565b506101a0830151613ef26101a084018273ffffffffffffffffffffffffffffffffffffffff169052565b506101c0830151613f1c6101c084018273ffffffffffffffffffffffffffffffffffffffff169052565b5092915050565b5f805f805f60a08688031215613f37575f80fd5b853560ff81168114613f47575f80fd5b94506020860135613f5781613c9b565b93506040860135613f6781613c9b565b94979396509394606081013594506080013592915050565b5f805f60608486031215613f91575f80fd5b8335613f9c81613c9b565b92506020840135613fac81613c9b565b91506040840135613fbc81613c9b565b809150509250925092565b8015158114611468575f80fd5b5f8060408385031215613fe5575f80fd5b8235613ff081613c9b565b91506020830135613cf381613fc7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516102c0810167ffffffffffffffff8111828210171561405157614051614000565b60405290565b604051610240810167ffffffffffffffff8111828210171561405157614051614000565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156140c2576140c2614000565b604052919050565b5f6102c08284031280156140dc575f80fd5b506140e561402d565b6140ee83613cbc565b81526140fc60208401613cbc565b602082015261410d60408401613cbc565b604082015261411e60608401613cbc565b606082015261412f60808401613d19565b608082015261414060a08401613cbc565b60a082015261415160c08401613d19565b60c082015261416260e08401613cbc565b60e08201526141746101008401613d19565b6101008201526141876101208401613cbc565b61012082015261419a6101408401613d19565b6101408201526141ad6101608401613cbc565b6101608201526141c06101808401613cbc565b6101808201526141d36101a08401613d19565b6101a08201526141e66101c08401613d19565b6101c08201526141f96101e08401613d19565b6101e082015261420c6102008401613d19565b61020082015261421f6102208401613cbc565b6102208201526142326102408401613cbc565b6102408201526142456102608401613d19565b6102608201526142586102808401613cbc565b6102808201526102a0928301359281019290925250919050565b5f6101008201905061ffff835116825261ffff602084015116602083015261ffff604084015116604083015260608301516142b3606084018261ffff169052565b5060808301516142c9608084018261ffff169052565b5060a08301516142dd60a084018215159052565b5060c08301516142f360c084018261ffff169052565b5060e0830151613f1c60e084018273ffffffffffffffffffffffffffffffffffffffff169052565b5f805f805f805f60e0888a031215614331575f80fd5b873561433c81613c9b565b9650602088013561434c81613c9b565b955061435a60408901613d19565b9450606088013561436a81613c9b565b935061437860808901613d19565b925060a088013561438881613c9b565b915061439660c08901613d19565b905092959891949750929550565b5f805f805f60a086880312156143b8575f80fd5b6143c186613d19565b94506143cf60208701613d19565b93506143dd60408701613d19565b92506143eb60608701613d19565b91506143f960808701613d19565b90509295509295909350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff818116838216019081111561444c5761444c614405565b92915050565b8082018082111561444c5761444c614405565b5f82518060208501845e5f920191825250919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b805160068110611c42575f80fd5b805160088110611c42575f80fd5b8051611c4281613c9b565b8051611c4281613fc7565b805160038110611c42575f80fd5b5f6102408284031280156144fa575f80fd5b50614503614057565b61450c836144a8565b8152602083810151908201526040808401519082015260608084015190820152614538608084016144b6565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261457361012084016144c4565b61012082015261458661014084016144cf565b610140820152610160838101519082015261018080840151908201526101a080840151908201526145ba6101c084016144c4565b6101c08201526101e083810151908201526145d861020084016144da565b6102008201526145eb61022084016144da565b6102208201529392505050565b808202811582820484141761444c5761444c614405565b5f82614642577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8181038181111561444c5761444c614405565b5f6020828403121561466a575f80fd5b5051919050565b5f60208284031215614681575f80fd5b815161263581613fc7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151808452602084019350602083015f5b828110156146ff57815173ffffffffffffffffffffffffffffffffffffffff168652602095860195909101906001016146cb565b5093949350505050565b828152604060208201525f61265860408301846146b9565b5f60208284031215614731575f80fd5b815167ffffffffffffffff811115614747575f80fd5b8201601f81018413614757575f80fd5b805167ffffffffffffffff81111561477157614771614000565b8060051b6147816020820161407b565b9182526020818401810192908101908784111561479c575f80fd5b6020850194505b83851015613b9b578451808352602095860195909350909101906147a3565b5f805f606084860312156147d4575f80fd5b5050815160208301516040909301519094929350919050565b85815284602082015260a060408201525f61480b60a08301866146b9565b73ffffffffffffffffffffffffffffffffffffffff94909416606083015250608001529392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fea2646970667358221220c7848cae04d7edcd9fbe3349c4054f91544d1289e13ab7cb309faa19b0e13e3b64736f6c634300081a0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x34c545…0e400a | 38 days agoFri, 10 Jul 2026 09:03:52 UTC | 0x7f26b8…2498 | data: 0x000000000000000000…000000ff |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| No direct transactions — this address is only ever reached via internal calls (common for a contract only invoked through a router or proxy). View Internal Transactions → | |||||||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 37,859,506 | 1 day agoSun, 16 Aug 2026 09:13:54 UTC | 0x974fa0…aa67a2 | DELEGATECALL | batchDispatch | 0x4820…4023 | IN | 0x2c52…7f7c | 0.00130 ETH |
| 37,382,538 | 1 day agoSat, 15 Aug 2026 19:56:01 UTC | 0x36a66f…22f8bd | DELEGATECALL | batchDispatch | 0xad0f…ce9b | IN | 0x2c52…7f7c | 0.00000 ETH |
| 36,511,470 | 2 days agoFri, 14 Aug 2026 19:40:29 UTC | 0x098721…ac3ae6 | DELEGATECALL | batchDispatch | 0xad0f…ce9b | IN | 0x2c52…7f7c | 0.00000 ETH |
| 36,137,732 | 3 days agoFri, 14 Aug 2026 09:16:16 UTC | 0x189a28…03f144 | DELEGATECALL | batchDispatch | 0x2dab…9a86 | IN | 0x2c52…7f7c | 0.00155 ETH |
| 35,877,467 | 3 days agoFri, 14 Aug 2026 02:01:38 UTC | 0x47ba3e…770b20 | DELEGATECALL | batchDispatch | 0x2dab…9a86 | IN | 0x2c52…7f7c | 0.00189 ETH |
| 35,668,650 | 3 days agoThu, 13 Aug 2026 20:13:08 UTC | 0xa3bfdb…41fa2a | DELEGATECALL | batchDispatch | 0x2dab…9a86 | IN | 0x2c52…7f7c | 0.00177 ETH |
| 35,236,205 | 4 days agoThu, 13 Aug 2026 08:10:20 UTC | 0x8a5f54…d88680 | DELEGATECALL | batchDispatch | 0x2dab…9a86 | IN | 0x2c52…7f7c | 0.00128 ETH |
| 35,184,902 | 4 days agoThu, 13 Aug 2026 06:44:30 UTC | 0xd4ac73…2c8149 | DELEGATECALL | batchDispatch | 0x2dab…9a86 | IN | 0x2c52…7f7c | 0.00222 ETH |
| 35,140,287 | 4 days agoThu, 13 Aug 2026 05:29:53 UTC | 0x832542…4fd050 | DELEGATECALL | batchDispatch | 0x2dab…9a86 | IN | 0x2c52…7f7c | 0.00219 ETH |
| 33,875,606 | 6 days agoTue, 11 Aug 2026 18:24:38 UTC | 0x63625a…91e4cb | DELEGATECALL | batchDispatch | 0xe29e…24ed | IN | 0x2c52…7f7c | 0.00100 ETH |
| 33,780,487 | 6 days agoTue, 11 Aug 2026 15:46:24 UTC | 0xeed35c…3a6df9 | DELEGATECALL | batchDispatch | 0x38cd…0cdc | IN | 0x2c52…7f7c | 0.00078 ETH |
| 33,650,592 | 6 days agoTue, 11 Aug 2026 12:09:56 UTC | 0x15d892…7a9c01 | DELEGATECALL | batchDispatch | 0x76e2…0440 | IN | 0x2c52…7f7c | 0.00000 ETH |
| 32,866,557 | 7 days agoMon, 10 Aug 2026 14:22:05 UTC | 0x73ca46…e4625d | DELEGATECALL | batchDispatch | 0xe7d6…395d | IN | 0x2c52…7f7c | 0.00013 ETH |
| 32,639,911 | 7 days agoMon, 10 Aug 2026 08:03:37 UTC | 0xe76957…febe17 | DELEGATECALL | batchDispatch | 0xaf1e…f75d | IN | 0x2c52…7f7c | 0.00064 ETH |
| 32,616,119 | 7 days agoMon, 10 Aug 2026 07:23:50 UTC | 0xf7bb63…e64133 | DELEGATECALL | batchDispatch | 0xb95b…7842 | IN | 0x2c52…7f7c | 0.00089 ETH |
| 32,137,223 | 8 days agoSun, 09 Aug 2026 18:04:34 UTC | 0x862166…2d647b | DELEGATECALL | batchDispatch | 0xb95b…7842 | IN | 0x2c52…7f7c | 0.00001 ETH |
| 32,088,471 | 8 days agoSun, 09 Aug 2026 16:43:12 UTC | 0x5905b4…0a6775 | DELEGATECALL | batchDispatch | 0x38cd…0cdc | IN | 0x2c52…7f7c | 0.00125 ETH |
| 32,069,840 | 8 days agoSun, 09 Aug 2026 16:12:08 UTC | 0x8ca1a7…fc2db6 | DELEGATECALL | batchDispatch | 0xec92…0c38 | IN | 0x2c52…7f7c | 0.00098 ETH |
| 32,062,709 | 8 days agoSun, 09 Aug 2026 16:00:14 UTC | 0xa3f8ce…32b861 | DELEGATECALL | batchDispatch | 0x2dab…9a86 | IN | 0x2c52…7f7c | 0.00193 ETH |
| 31,891,285 | 8 days agoSun, 09 Aug 2026 11:13:57 UTC | 0x015246…2eda63 | DELEGATECALL | batchDispatch | 0xe4e4…9db7 | IN | 0x2c52…7f7c | 0.00002 ETH |
| 31,644,863 | 8 days agoSun, 09 Aug 2026 04:22:06 UTC | 0x2198f1…d88480 | DELEGATECALL | batchDispatch | 0xb95b…7842 | IN | 0x2c52…7f7c | 0.00001 ETH |
| 31,481,701 | 8 days agoSat, 08 Aug 2026 23:49:41 UTC | 0x1bd713…deaa5e | DELEGATECALL | batchDispatch | 0x241d…813a | IN | 0x2c52…7f7c | 0.00072 ETH |
| 31,378,774 | 8 days agoSat, 08 Aug 2026 20:57:54 UTC | 0x7660f3…f0853b | DELEGATECALL | batchDispatch | 0x2dab…9a86 | IN | 0x2c52…7f7c | 0.00142 ETH |
| 30,660,278 | 9 days agoSat, 08 Aug 2026 00:58:09 UTC | 0xaed24b…560786 | DELEGATECALL | batchDispatch | 0xabfb…fcb2 | IN | 0x2c52…7f7c | 0.00347 ETH |
| 30,659,990 | 9 days agoSat, 08 Aug 2026 00:57:40 UTC | 0x190861…74c8f7 | DELEGATECALL | batchDispatch | 0xb891…8835 | IN | 0x2c52…7f7c | 0.00018 ETH |