ERC-20
Source Code
Overview
Max Total Supply
10,000,000 FLO
Holders
421
Transfers
-
0
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
Flo
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-07-30
*/
/*
Flo - Build, Hire and Deploy in Web3 with no code needed.
Website : www.floai.org
Telegram : https://t.me/Flo_AI
X : https://x.com/flo1click
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.28;
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
interface IERC20Errors {
error ERC20InsufficientBalance(address sender,uint256 balance,uint256 needed);
error ERC20InvalidSender(address sender);
error ERC20InvalidReceiver(address receiver);
error ERC20InsufficientAllowance(address spender,uint256 allowance,uint256 needed);
error ERC20InvalidApprover(address approver);
error ERC20InvalidSpender(address spender);
}
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual returns (string memory) { return _name; }
function symbol() public view virtual returns (string memory) { return _symbol; }
function decimals() public view virtual returns (uint8) { return 18; }
function totalSupply() public view virtual returns (uint256) { return _totalSupply; }
function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; }
function transfer(address to, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_transfer(owner, to, value);
return true;
}
function allowance(address owner,address spender) public view virtual returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, value);
return true;
}
function transferFrom(address from,address to,uint256 value) public virtual returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, value);
_transfer(from, to, value);
return true;
}
function _transfer(address from, address to, uint256 value) internal {
if (from == address(0)) { revert ERC20InvalidSender(address(0)); }
if (to == address(0)) { revert ERC20InvalidReceiver(address(0)); }
_update(from, to, value);
}
function _update(address from,address to,uint256 value) internal virtual {
if (from == address(0)) {
_totalSupply += value;
} else {
uint256 fromBalance = _balances[from];
if (fromBalance < value) { revert ERC20InsufficientBalance(from, fromBalance, value); }
unchecked { _balances[from] = fromBalance - value; }
}
if (to == address(0)) {
unchecked { _totalSupply -= value; }
} else {
unchecked { _balances[to] += value; }
}
emit Transfer(from, to, value);
}
function _mint(address account, uint256 value) internal {
if (account == address(0)) { revert ERC20InvalidReceiver(address(0)); }
_update(address(0), account, value);
}
function _burn(address account, uint256 value) internal {
if (account == address(0)) { revert ERC20InvalidSender(address(0)); }
_update(account, address(0), value);
}
function _approve(address owner, address spender, uint256 value) internal {
_approve(owner, spender, value, true);
}
function _approve(address owner,address spender,uint256 value,bool emitEvent) internal virtual {
if (owner == address(0)) { revert ERC20InvalidApprover(address(0)); }
if (spender == address(0)) { revert ERC20InvalidSpender(address(0)); }
_allowances[owner][spender] = value;
if (emitEvent) { emit Approval(owner, spender, value); }
}
function _spendAllowance(address owner,address spender,uint256 value) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
if (currentAllowance < value) { revert ERC20InsufficientAllowance(spender, currentAllowance, value); }
unchecked { _approve(owner, spender, currentAllowance - value, false); }
}
}
}
abstract contract Ownable is Context {
address private _owner;
error OwnableUnauthorizedAccount(address account);
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor(address initialOwner) {
if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); }
_transferOwnership(initialOwner);
}
modifier onlyOwner() { _checkOwner(); _; }
function owner() public view virtual returns (address) { return _owner; }
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); }
}
function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); }
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); }
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
interface IUniswapV2Factory {
function createPair(address tokenA,address tokenB) external returns (address pair);
}
interface IUniswapV2Router {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,uint256 amountOutMin,address[] calldata path,address to,uint256 deadline
) external;
}
contract Flo is Ownable, ERC20 {
IUniswapV2Router public immutable swapRouter;
address public constant ZERO_ADDRESS = address(0);
address public constant BURN_ADDRESS = address(0xdEaD);
address public immutable swapPair;
address public marketingWallet;
address public devWallet;
address public originalOwner;
bool public taxesRevoked;
bool public limitsEnabled;
bool public cooldownEnabled;
bool public feesEnabled;
bool private inSwapProcess;
bool public isActivated;
bool public whitelistEnabled;
uint256 public activationBlock;
uint256 public activationTime;
uint256 private lastSwapBlock;
uint256 public constant MAX_TOTAL_FEE = 10;
uint256 public constant BLOCK_0_TAX = 0;
uint256 public constant BLOCK_0_WALLET_LIMIT = 125;
uint256 public maxBuyLimit;
uint256 public maxSellLimit;
uint256 public maxWalletLimit;
uint256 public tokensForSwap;
uint256 public buyTax;
uint256 public sellTax;
uint256 public transferTax;
mapping(address => bool) public blacklistedBots;
mapping(address => bool) public excludedFromFees;
mapping(address => bool) public excludedFromLimits;
mapping(address => bool) public marketPairs;
mapping(address => bool) public whitelistedAddresses;
mapping(address => uint256) private _lastTransferBlock;
event Activation();
event taxWalletUpdated(address newWallet, address oldWallet);
event DevWalletUpdated(address newWallet, address oldWallet);
event LimitsStatusChanged(bool status);
event CooldownStatusChanged(bool status);
event FeesStatusChanged(bool status);
event WhitelistStatusChanged(bool status);
event MaxBuyLimitUpdated(uint256 amount);
event MaxSellLimitUpdated(uint256 amount);
event MaxWalletLimitUpdated(uint256 amount);
event TokensForSwapUpdated(uint256 newValue, uint256 oldValue);
event BuyTaxUpdated(uint256 newValue, uint256 oldValue);
event SellTaxUpdated(uint256 newValue, uint256 oldValue);
event TransferTaxUpdated(uint256 newValue, uint256 oldValue);
event ExcludedFromFees(address account, bool isExcluded);
event ExcludedFromLimits(address account, bool isExcluded);
event BotStatusUpdated(address account, bool isBlacklisted);
event MarketPairStatusUpdated(address pair, bool value);
event WhitelistAddressUpdated(address account, bool isWhitelisted);
event StuckTokensWithdrawn(address token, uint256 amount);
event TaxesRevoked(address indexed caller,uint256 previousBuyTax,uint256 previousSellTax,uint256 previousTransferTax);
error AlreadyActivated();
error InvalidAddress();
error AmountTooSmall();
error AmountTooLarge();
error FeeTooHigh();
error PairAlreadySet();
error NoETHToWithdraw();
error NoTokensToWithdraw();
error ETHWithdrawalFailed();
error BotActivityDetected();
error TransferCooldown();
error ExceedsMaxBuyLimit();
error ExceedsMaxSellLimit();
error ExceedsMaxWalletLimit();
error NotActivated();
error NotOriginalOwner();
error TaxesAlreadyRevoked();
error TaxSplitAlreadyRevoked();
error NotWhitelisted();
modifier lockSwapProcess() {
inSwapProcess = true;
_;
inSwapProcess = false;
}
modifier onlyOriginalOwner() {
require(msg.sender == originalOwner, NotOriginalOwner());
_;
}
struct TaxSplit {
uint256 marketing;
uint256 dev;
uint256 ecosystem;
}
TaxSplit public taxSplit;
address public ecosystemWallet;
uint256 public totalEthCollected;
uint256 public constant ETH_SPLIT_THRESHOLD = 53 ether;
constructor() Ownable(msg.sender) ERC20("Flo", "FLO") {
address owner = msg.sender;
originalOwner = owner;
_mint(owner, 10_000_000 ether);
uint256 totalSupplyTokens = totalSupply();
marketingWallet = 0xfe907736A730062B256167C5B47C5837d689a1A1;
devWallet = 0xeeB18E6fF7849665E45a88C7dFB42B5F485d9EAD;
ecosystemWallet = 0x2d8918e0eC14d83a9f12D133E4c75e62542765fA;
maxBuyLimit = (totalSupplyTokens * 125) / 10000;
maxSellLimit = (totalSupplyTokens * 125) / 10000;
maxWalletLimit = (totalSupplyTokens * 125) / 10000;
tokensForSwap = (totalSupplyTokens * 200) / 1000000;
limitsEnabled = true;
cooldownEnabled = false;
feesEnabled = true;
whitelistEnabled = false;
buyTax = 35; // Default, changeable after block 1
sellTax = 15; // Default, changeable after block 1
transferTax = 0;
swapRouter = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH());
SetMarketPair(swapPair, true);
_approve(address(this), address(swapRouter), type(uint256).max);
_excludeFromFees(address(this), true);
_excludeFromFees(BURN_ADDRESS, true);
_excludeFromFees(owner, true);
_excludeFromFees(marketingWallet, true);
_excludeFromFees(devWallet, true);
ExcludeFromLimits(address(this), true);
ExcludeFromLimits(BURN_ADDRESS, true);
ExcludeFromLimits(owner, true);
ExcludeFromLimits(marketingWallet, true);
ExcludeFromLimits(devWallet, true);
taxSplit = TaxSplit(51, 34, 15);
}
receive() external payable {}
fallback() external payable {}
function _transferOwnership(address newOwner) internal override {
address oldOwner = owner();
if (oldOwner != ZERO_ADDRESS) {
_excludeFromFees(oldOwner, false);
ExcludeFromLimits(oldOwner, false);
}
_excludeFromFees(newOwner, true);
ExcludeFromLimits(newOwner, true);
super._transferOwnership(newOwner);
}
function Launch() external onlyOwner {
require(!isActivated, AlreadyActivated());
isActivated = true;
activationBlock = block.number;
activationTime = block.timestamp;
emit Activation();
}
function _updatetaxWallet(address _taxWallet) external onlyOwner {
require(_taxWallet != ZERO_ADDRESS, InvalidAddress());
address oldWallet = marketingWallet;
marketingWallet = _taxWallet;
emit taxWalletUpdated(marketingWallet, oldWallet);
}
function _updateDevWallet(address _devWallet) external onlyOwner {
require(_devWallet != ZERO_ADDRESS, InvalidAddress());
address oldWallet = devWallet;
devWallet = _devWallet;
emit DevWalletUpdated(devWallet, oldWallet);
}
function changeLimitsEnabled(bool value) external onlyOwner {
limitsEnabled = value;
emit LimitsStatusChanged(value);
}
function changeCooldownEnabled(bool value) external onlyOwner {
cooldownEnabled = value;
emit CooldownStatusChanged(value);
}
function setFeesEnabled(bool value) external onlyOwner {
feesEnabled = value;
emit FeesStatusChanged(value);
}
function setMaxBuyLimit(uint256 amount) external onlyOwner {
require(amount >= ((totalSupply() * 2) / 1000), AmountTooSmall());
maxBuyLimit = amount;
emit MaxBuyLimitUpdated(maxBuyLimit);
}
function setMaxSellLimit(uint256 amount) external onlyOwner {
require(amount >= ((totalSupply() * 2) / 1000), AmountTooSmall());
maxSellLimit = amount;
emit MaxSellLimitUpdated(maxSellLimit);
}
function setMaxWalletLimit(uint256 amount) external onlyOwner {
require(amount >= ((totalSupply() * 3) / 1000), AmountTooSmall());
maxWalletLimit = amount;
emit MaxWalletLimitUpdated(maxWalletLimit);
}
function setTokensForSwap(uint256 amount) external onlyOwner {
uint256 totalSupplyTokens = totalSupply();
require(amount >= (totalSupplyTokens * 1) / 1000000, AmountTooSmall());
require(amount <= (totalSupplyTokens * 5) / 1000, AmountTooLarge());
uint256 oldValue = tokensForSwap;
tokensForSwap = amount;
emit TokensForSwapUpdated(amount, oldValue);
}
function setTax(uint256 _buyTax, uint256 _sellTax) external onlyOwner {
require(!taxesRevoked, TaxesAlreadyRevoked());
require(_buyTax <= MAX_TOTAL_FEE, FeeTooHigh());
require(_sellTax <= MAX_TOTAL_FEE, FeeTooHigh());
buyTax = _buyTax;
sellTax = _sellTax;
}
function changeTransferTax(uint256 _transferTax) external onlyOwner {
require(!taxesRevoked, TaxesAlreadyRevoked());
require(_transferTax <= MAX_TOTAL_FEE, FeeTooHigh());
uint256 oldValue = transferTax;
transferTax = _transferTax;
emit TransferTaxUpdated(_transferTax, oldValue);
}
function excludeFromFees(address[] calldata accounts,bool value) external onlyOwner {
for (uint256 i = 0; i < accounts.length; i++) {
_excludeFromFees(accounts[i], value);
}
}
function excludeFromLimits(address[] calldata accounts,bool value) external onlyOwner {
for (uint256 i = 0; i < accounts.length; i++) {
ExcludeFromLimits(accounts[i], value);
}
}
function setBlacklistedBots(address[] calldata accounts,bool value) external onlyOriginalOwner {
for (uint256 i = 0; i < accounts.length; i++) {
if ((!marketPairs[accounts[i]]) &&
(accounts[i] != address(swapRouter)) &&
(accounts[i] != address(this)) &&
(accounts[i] != ZERO_ADDRESS) &&
(!excludedFromFees[accounts[i]] && !excludedFromLimits[accounts[i]])
) UpdateBotStatus(accounts[i], value);
}
}
function setMarketPair(address pair, bool value) external onlyOwner {
require(!marketPairs[pair], PairAlreadySet());
SetMarketPair(pair, value);
}
function clearStuckTokens(address _token) external onlyOwner {
address owner = msg.sender;
uint256 amount;
if (_token == ZERO_ADDRESS) {
bool success;
amount = address(this).balance;
require(amount > 0, NoETHToWithdraw());
(success, ) = address(owner).call{value: amount}("");
require(success, ETHWithdrawalFailed());
} else {
amount = IERC20(_token).balanceOf(address(this));
require(amount > 0, NoTokensToWithdraw());
IERC20(_token).transfer(msg.sender, amount);
}
emit StuckTokensWithdrawn(_token, amount);
}
function setWhitelistEnabled(bool value) external onlyOwner {
whitelistEnabled = value;
emit WhitelistStatusChanged(value);
}
function setWhitelistedAddresses(address[] calldata accounts,bool value) external onlyOwner {
for (uint256 i = 0; i < accounts.length; i++) {
whitelistedAddresses[accounts[i]] = value;
emit WhitelistAddressUpdated(accounts[i], value);
}
}
function isWhitelisted(address account) public view returns (bool) {
return whitelistedAddresses[account];
}
function _update(address from,address to,uint256 amount) internal virtual override {
address sender = msg.sender;
address origin = tx.origin;
require(!blacklistedBots[from], BotActivityDetected());
require(sender == from || !blacklistedBots[sender], BotActivityDetected());
require(origin == from || origin == sender || !blacklistedBots[origin], BotActivityDetected());
require(isActivated || excludedFromLimits[from] || excludedFromLimits[to], NotActivated());
if (isActivated && whitelistEnabled) {
uint256 blocksSinceActivation = block.number - activationBlock;
if (blocksSinceActivation == 0) {
if (marketPairs[from] && !excludedFromLimits[to]) {
require(whitelistedAddresses[to], NotWhitelisted());
}
}
}
bool applyLimits = limitsEnabled && !inSwapProcess && !(excludedFromLimits[from] || excludedFromLimits[to]);
if (applyLimits) {
if (from != owner() && to != owner() && to != ZERO_ADDRESS && to != BURN_ADDRESS) {
if (cooldownEnabled) {
if (to != address(swapRouter) && to != swapPair) {
require(_lastTransferBlock[origin] < block.number - 3 && _lastTransferBlock[to] < block.number - 3, TransferCooldown());
_lastTransferBlock[origin] = block.number;
_lastTransferBlock[to] = block.number;
}
}
uint256 currentLimit;
if (isActivated) {
uint256 blocksSinceActivation = block.number - activationBlock;
if (blocksSinceActivation == 0) {
currentLimit = (totalSupply() * BLOCK_0_WALLET_LIMIT) / 10000;
} else {
currentLimit = totalSupply();
limitsEnabled = false;
}
} else {
currentLimit = maxBuyLimit;
}
if (marketPairs[from] && !excludedFromLimits[to]) {
require(amount <= currentLimit, ExceedsMaxBuyLimit());
require(amount + balanceOf(to) <= currentLimit, ExceedsMaxWalletLimit());
} else if (marketPairs[to] && !excludedFromLimits[from]) {
require(amount <= currentLimit, ExceedsMaxSellLimit());
} else if (!excludedFromLimits[to]) {
require(amount + balanceOf(to) <= currentLimit, ExceedsMaxWalletLimit());
}
}
}
bool applyFee = feesEnabled && !inSwapProcess && !(excludedFromFees[from] || excludedFromFees[to]);
if (applyFee) {
uint256 feeAmount = 0;
uint256 currentSellTax;
uint256 currentBuyTax;
if (isActivated) {
uint256 blocksSinceActivation = block.number - activationBlock;
if (blocksSinceActivation == 0) {
currentBuyTax = 0;
currentSellTax = 0;
} else {
currentBuyTax = buyTax;
currentSellTax = sellTax;
}
} else {
currentBuyTax = buyTax;
currentSellTax = sellTax;
}
if (marketPairs[to] && currentSellTax > 0) {
feeAmount = (amount * currentSellTax) / 100;
} else if (marketPairs[from] && currentBuyTax > 0) {
feeAmount = (amount * currentBuyTax) / 100;
} else if (!marketPairs[to] && !marketPairs[from] && transferTax > 0) {
feeAmount = (amount * transferTax) / 100;
}
if (feeAmount > 0) {
amount -= feeAmount;
super._update(from, address(this), feeAmount);
}
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= tokensForSwap;
if (applyFee && !marketPairs[from] && canSwap) {
if (block.number > lastSwapBlock && block.number > activationBlock) {
_swapTokens(contractTokenBalance);
lastSwapBlock = block.number;
}
}
super._update(from, to, amount);
}
function _swapTokens(uint256 tokenAmount) internal virtual lockSwapProcess {
bool success;
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = swapRouter.WETH();
uint256 maxSwapAmount = tokensForSwap * 20;
if (tokenAmount > maxSwapAmount) {
tokenAmount = maxSwapAmount;
}
swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
uint256 ethBalance = address(this).balance;
totalEthCollected += ethBalance;
TaxSplit memory currentTaxSplit = taxSplit;
if (totalEthCollected < ETH_SPLIT_THRESHOLD) {
currentTaxSplit = TaxSplit(60, 40, 0);
}
uint256 ethForMarketing = (ethBalance * currentTaxSplit.marketing) / 100;
uint256 ethForDev = (ethBalance * currentTaxSplit.dev) / 100;
uint256 ethForEco = ethBalance - ethForMarketing - ethForDev;
(success, ) = address(marketingWallet).call{value: ethForMarketing}("");
(success, ) = address(devWallet).call{value: ethForDev}("");
(success, ) = address(ecosystemWallet).call{value: ethForEco}("");
}
function _excludeFromFees(address account, bool value) internal virtual {
excludedFromFees[account] = value;
emit ExcludedFromFees(account, value);
}
function ExcludeFromLimits(address account, bool value) internal virtual {
excludedFromLimits[account] = value;
emit ExcludedFromLimits(account, value);
}
function UpdateBotStatus(address account, bool value) internal virtual {
blacklistedBots[account] = value;
emit BotStatusUpdated(account, value);
}
function SetMarketPair(address pair, bool value) internal virtual {
marketPairs[pair] = value;
emit MarketPairStatusUpdated(pair, value);
}
function revokeTaxes() external onlyOriginalOwner {
require(!taxesRevoked, TaxesAlreadyRevoked());
uint256 previousBuyTax = buyTax;
uint256 previousSellTax = sellTax;
uint256 previousTransferTax = transferTax;
buyTax = 0;
sellTax = 0;
transferTax = 0;
taxesRevoked = true;
emit TaxesRevoked(msg.sender, previousBuyTax, previousSellTax, previousTransferTax);
}
function areTaxesRevoked() external view returns (bool) {
return taxesRevoked;
}
function setTaxSplit(uint256 marketing,uint256 dev,uint256 ecosystem) external onlyOwner {
require(marketing + dev + ecosystem == 100, "Split must sum to 100");
taxSplit = TaxSplit(marketing, dev, ecosystem);
}
function setEcosystemWallet(address _eco) external onlyOwner {
require(_eco != address(0), "Zero address");
ecosystemWallet = _eco;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyActivated","type":"error"},{"inputs":[],"name":"AmountTooLarge","type":"error"},{"inputs":[],"name":"AmountTooSmall","type":"error"},{"inputs":[],"name":"BotActivityDetected","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"ETHWithdrawalFailed","type":"error"},{"inputs":[],"name":"ExceedsMaxBuyLimit","type":"error"},{"inputs":[],"name":"ExceedsMaxSellLimit","type":"error"},{"inputs":[],"name":"ExceedsMaxWalletLimit","type":"error"},{"inputs":[],"name":"FeeTooHigh","type":"error"},{"inputs":[],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"NoETHToWithdraw","type":"error"},{"inputs":[],"name":"NoTokensToWithdraw","type":"error"},{"inputs":[],"name":"NotActivated","type":"error"},{"inputs":[],"name":"NotOriginalOwner","type":"error"},{"inputs":[],"name":"NotWhitelisted","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"PairAlreadySet","type":"error"},{"inputs":[],"name":"TaxSplitAlreadyRevoked","type":"error"},{"inputs":[],"name":"TaxesAlreadyRevoked","type":"error"},{"inputs":[],"name":"TransferCooldown","type":"error"},{"anonymous":false,"inputs":[],"name":"Activation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"BotStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"BuyTaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"CooldownStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWallet","type":"address"},{"indexed":false,"internalType":"address","name":"oldWallet","type":"address"}],"name":"DevWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"FeesStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"LimitsStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"MarketPairStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MaxBuyLimitUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MaxSellLimitUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MaxWalletLimitUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"SellTaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"StuckTokensWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBuyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"previousSellTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"previousTransferTax","type":"uint256"}],"name":"TaxesRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"TokensForSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isWhitelisted","type":"bool"}],"name":"WhitelistAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"WhitelistStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWallet","type":"address"},{"indexed":false,"internalType":"address","name":"oldWallet","type":"address"}],"name":"taxWalletUpdated","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"BLOCK_0_TAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BLOCK_0_WALLET_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BURN_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ETH_SPLIT_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MAX_TOTAL_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZERO_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_devWallet","type":"address"}],"name":"_updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxWallet","type":"address"}],"name":"_updatetaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"activationBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activationTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"areTaxesRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklistedBots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"changeCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"changeLimitsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_transferTax","type":"uint256"}],"name":"changeTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ecosystemWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isActivated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"originalOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBlacklistedBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_eco","type":"address"}],"name":"setEcosystemWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setFeesEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxSellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTax","type":"uint256"},{"internalType":"uint256","name":"_sellTax","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"ecosystem","type":"uint256"}],"name":"setTaxSplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTokensForSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setWhitelistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setWhitelistedAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSplit","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"ecosystem","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxesRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalEthCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c060405234801561000f575f5ffd5b50604080518082018252600380825262466c6f60e81b602080840191909152835180850190945290835262464c4f60e81b9083015290338061006b57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100748161041c565b506004610081838261141d565b50600561008e828261141d565b5050600880546001600160a01b0319163390811790915590506100bc816a084595161401484a000000610464565b5f6100c660035490565b600680546001600160a01b031990811673fe907736a730062b256167c5b47c5837d689a1a11790915560078054821673eeb18e6ff7849665e45a88c7dfb42b5f485d9ead179055601c8054909116732d8918e0ec14d83a9f12d133e4c75e62542765fa179055905061271061013c82607d6114eb565b6101469190611508565b600c5561271061015782607d6114eb565b6101619190611508565b600d5561271061017282607d6114eb565b61017c9190611508565b600e55620f424061018e8260c86114eb565b6101989190611508565b600f9081556008805465ff0000ffffff60a81b19166201000160a81b17905560236010556011555f601255737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610216573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023a9190611527565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610287573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ab9190611527565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156102f5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103199190611527565b6001600160a01b031660a0819052610332906001610498565b610346306080515f196104fb60201b60201c565b61035130600161050d565b61035e61dead600161050d565b61036982600161050d565b600654610380906001600160a01b0316600161050d565b600754610397906001600160a01b0316600161050d565b6103a2306001610568565b6103af61dead6001610568565b6103ba826001610568565b6006546103d1906001600160a01b03166001610568565b6007546103e8906001600160a01b03166001610568565b5050604080516060810182526033808252602260208301819052600f92909301829052601955601a91909155601b556115fe565b5f546001600160a01b0316801561044157610437815f61050d565b610441815f610568565b61044c82600161050d565b610457826001610568565b610460826105c3565b5050565b6001600160a01b03821661048d5760405163ec442f0560e01b81525f6004820152602401610062565b6104605f8383610612565b6001600160a01b0382165f81815260166020908152604091829020805460ff19168515159081179091558251938452908301527f024f6c8d60a57c94822c46d989fd6935057590269281b07fe8327d7e9bc4242191015b60405180910390a15050565b6105088383836001610e3e565b505050565b6001600160a01b0382165f81815260146020908152604091829020805460ff19168515159081179091558251938452908301527f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb91016104ef565b6001600160a01b0382165f81815260156020908152604091829020805460ff19168515159081179091558251938452908301527f74392251b09500cc108c71712e5e7e0392be9075a74a24f1494551cfa8e0687091016104ef565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383165f908152601360205260409020543390329060ff161561064f57604051631a30f03760e31b815260040160405180910390fd5b846001600160a01b0316826001600160a01b0316148061068757506001600160a01b0382165f9081526013602052604090205460ff16155b6106a457604051631a30f03760e31b815260040160405180910390fd5b846001600160a01b0316816001600160a01b031614806106d55750816001600160a01b0316816001600160a01b0316145b806106f857506001600160a01b0381165f9081526013602052604090205460ff16155b61071557604051631a30f03760e31b815260040160405180910390fd5b600854600160c81b900460ff168061074457506001600160a01b0385165f9081526015602052604090205460ff165b8061076657506001600160a01b0384165f9081526015602052604090205460ff165b6107835760405163037c597f60e01b815260040160405180910390fd5b600854600160c81b900460ff1680156107a55750600854600160d01b900460ff165b15610840575f600954436107b99190611554565b9050805f0361083e576001600160a01b0386165f9081526016602052604090205460ff16801561080157506001600160a01b0385165f9081526015602052604090205460ff16155b1561083e576001600160a01b0385165f9081526017602052604090205460ff1661083e57604051630b094f2760e31b815260040160405180910390fd5b505b6008545f90600160a81b900460ff1680156108655750600854600160c01b900460ff16155b80156108ab57506001600160a01b0386165f9081526015602052604090205460ff16806108a957506001600160a01b0385165f9081526015602052604090205460ff165b155b90508015610be3575f546001600160a01b038781169116148015906108dd57505f546001600160a01b03868116911614155b80156108f157506001600160a01b03851615155b801561090857506001600160a01b03851661dead14155b15610be357600854600160b01b900460ff16156109f0576080516001600160a01b0316856001600160a01b031614158015610957575060a0516001600160a01b0316856001600160a01b031614155b156109f057610967600343611554565b6001600160a01b0383165f908152601860205260409020541080156109ac5750610992600343611554565b6001600160a01b0386165f90815260186020526040902054105b6109c9576040516329a226cf60e11b815260040160405180910390fd5b6001600160a01b038083165f90815260186020526040808220439081905592881682529020555b6008545f90600160c81b900460ff1615610a5e575f60095443610a139190611554565b9050805f03610a4557612710607d610a2a60035490565b610a3491906114eb565b610a3e9190611508565b9150610a58565b6003546008805460ff60a81b1916905591505b50610a63565b50600c545b6001600160a01b0387165f9081526016602052604090205460ff168015610aa257506001600160a01b0386165f9081526015602052604090205460ff16155b15610b155780851115610ac8576040516344df090f60e11b815260040160405180910390fd5b80610ae7876001600160a01b03165f9081526001602052604090205490565b610af19087611567565b1115610b1057604051633b63e02960e11b815260040160405180910390fd5b610be1565b6001600160a01b0386165f9081526016602052604090205460ff168015610b5457506001600160a01b0387165f9081526015602052604090205460ff16155b15610b7a5780851115610b1057604051630a8e28e160e41b815260040160405180910390fd5b6001600160a01b0386165f9081526015602052604090205460ff16610be15780610bb8876001600160a01b03165f9081526001602052604090205490565b610bc29087611567565b1115610be157604051633b63e02960e11b815260040160405180910390fd5b505b6008545f90600160b81b900460ff168015610c085750600854600160c01b900460ff16155b8015610c4e57506001600160a01b0387165f9081526014602052604090205460ff1680610c4c57506001600160a01b0386165f9081526014602052604090205460ff165b155b90508015610dbb576008545f9081908190600160c81b900460ff1615610ca2575f60095443610c7d9190611554565b9050805f03610c91575f91505f9250610c9c565b601054915060115492505b50610cac565b5050601054601154905b6001600160a01b0389165f9081526016602052604090205460ff168015610cd257505f82115b15610cf4576064610ce3838a6114eb565b610ced9190611508565b9250610d9a565b6001600160a01b038a165f9081526016602052604090205460ff168015610d1a57505f81115b15610d2b576064610ce3828a6114eb565b6001600160a01b0389165f9081526016602052604090205460ff16158015610d6b57506001600160a01b038a165f9081526016602052604090205460ff16155b8015610d7857505f601254115b15610d9a57606460125489610d8d91906114eb565b610d979190611508565b92505b8215610db757610daa8389611554565b9750610db78a3085610f11565b5050505b305f90815260016020526040902054600f54811015828015610df557506001600160a01b0389165f9081526016602052604090205460ff16155b8015610dfe5750805b15610e2857600b5443118015610e15575060095443115b15610e2857610e2382611037565b43600b555b610e33898989610f11565b505050505050505050565b6001600160a01b038416610e675760405163e602df0560e01b81525f6004820152602401610062565b6001600160a01b038316610e9057604051634a1406b160e11b81525f6004820152602401610062565b6001600160a01b038085165f9081526002602090815260408083209387168352929052208290558015610f0b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f0291815260200190565b60405180910390a35b50505050565b6001600160a01b038316610f3b578060035f828254610f309190611567565b90915550610fab9050565b6001600160a01b0383165f9081526001602052604090205481811015610f8d5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610062565b6001600160a01b0384165f9081526001602052604090209082900390555b6001600160a01b038216610fc757600380548290039055610fe5565b6001600160a01b0382165f9081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161102a91815260200190565b60405180910390a3505050565b6008805460ff60c01b1916600160c01b1790556040805160028082526060820183525f928392919060208301908036833701905050905030815f815181106110815761108161157a565b60200260200101906001600160a01b031690816001600160a01b0316815250506080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110df573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111039190611527565b816001815181106111165761111661157a565b60200260200101906001600160a01b031690816001600160a01b0316815250505f600f54601461114691906114eb565b905080841115611154578093505b6080516001600160a01b031663791ac947855f8530426040518663ffffffff1660e01b815260040161118a95949392919061158e565b5f604051808303815f87803b1580156111a1575f5ffd5b505af11580156111b3573d5f5f3e3d5ffd5b505050505f47905080601d5f8282546111cc9190611567565b9091555050604080516060810182526019548152601a546020820152601b5491810191909152601d546802df85d331a7b400001115611225576040518060600160405280603c8152602001602881526020015f81525090505b80515f9060649061123690856114eb565b6112409190611508565b90505f606483602001518561125591906114eb565b61125f9190611508565b90505f8161126d8487611554565b6112779190611554565b6006546040519192506001600160a01b03169084905f81818185875af1925050503d805f81146112c2576040519150601f19603f3d011682016040523d82523d5f602084013e6112c7565b606091505b50506007546040519199506001600160a01b03169083905f81818185875af1925050503d805f8114611314576040519150601f19603f3d011682016040523d82523d5f602084013e611319565b606091505b5050601c546040519199506001600160a01b03169082905f81818185875af1925050503d805f8114611366576040519150601f19603f3d011682016040523d82523d5f602084013e61136b565b606091505b50506008805460ff60c01b1916905550505050505050505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806113ae57607f821691505b6020821081036113cc57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561050857805f5260205f20601f840160051c810160208510156113f75750805b601f840160051c820191505b81811015611416575f8155600101611403565b5050505050565b81516001600160401b0381111561143657611436611386565b61144a81611444845461139a565b846113d2565b6020601f82116001811461147c575f83156114655750848201515b5f19600385901b1c1916600184901b178455611416565b5f84815260208120601f198516915b828110156114ab578785015182556020948501946001909201910161148b565b50848210156114c857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417611502576115026114d7565b92915050565b5f8261152257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611537575f5ffd5b81516001600160a01b038116811461154d575f5ffd5b9392505050565b81810381811115611502576115026114d7565b80820180821115611502576115026114d7565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156115de5783516001600160a01b03168352602093840193909201916001016115b7565b50506001600160a01b039590951660608401525050608001529392505050565b60805160a05161309b6116425f395f81816105aa015261229001525f8181610afc01528181610fd9015281816122530152818161298d0152612a73015261309b5ff3fe6080604052600436106103d7575f3560e01c8063728d41c9116101fa578063abefea0311610116578063da0103bd116100a4578063e25fc5ac11610076578063e25fc5ac14610c0d578063f1fffdcb14610c21578063f2fde38b14610c40578063f3ff43da14610c5f578063fccc281314610c7e57005b8063da0103bd14610b67578063da4493f614610b86578063dbe66ca014610b9b578063dd62ed3e14610bc957005b8063c16dd4a4116100e8578063c16dd4a414610acc578063c31c9c0714610aeb578063cc1776d314610b1e578063ce2a9f6214610b33578063ce657cce14610b4857005b8063abefea0314610a40578063ad29ffde14610a5f578063b367f8fe14610a7e578063b4b11b9514610a9e57005b80638da5cb5b11610193578063a64e4f8a11610165578063a64e4f8a146109a3578063a901dd92146109c3578063a9059cbb146109e2578063a91a9eb114610a01578063a985ceef14610a2057005b80638da5cb5b146109355780638ea5220f1461095157806395d89b4114610970578063a49a910f1461098457005b80637b812b41116101cc5780637b812b41146108c95780637f635cc0146108f757806380faa3d21461090b5780638124f7ac1461092057005b8063728d41c914610859578063757765f81461087857806375f0a874146108975780637a689da1146108b657005b8063337a4b20116102f457806351fb012d1161028257806366a88d961161025457806366a88d96146107c857806368b69b9b146107dd5780636aa5b37f146107fc57806370a0823114610811578063715018a61461084557005b806351fb012d14610761578063538ba4f914610781578063652e2f0414610794578063667f6526146107a957005b80633af32abf116102c65780633af32abf146106b75780633f7fc93b146106ee578063435263ef1461070d5780634a8c1fb41461072c5780634f7041a51461074c57005b8063337a4b201461063d578063346cc7be146106595780633582ad231461067857806336884b6e1461069857005b806318160ddd11610371578063259827e311610343578063259827e31461056b57806326991cc8146105995780632f6f30ea146105e45780632f893de714610603578063313ce5671461062257005b806318160ddd146104e05780631983f599146104fe5780631ecd7d6e1461053757806323b872dd1461054c57005b806306fdde03116103aa57806306fdde031461046357806308252b7c14610484578063095ea7b3146104a2578063106a5a8f146104c157005b806302ac8168146103d957806302b6203d146103ed578063052d9e7e1461040157806306c933d814610420575b005b3480156103e4575f5ffd5b506103d7610c93565b3480156103f8575f5ffd5b506103d7610d0b565b34801561040c575f5ffd5b506103d761041b366004612cb9565b610dd8565b34801561042b575f5ffd5b5061044e61043a366004612cef565b60176020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561046e575f5ffd5b50610477610e38565b60405161045a9190612d0a565b34801561048f575f5ffd5b50600854600160a01b900460ff1661044e565b3480156104ad575f5ffd5b5061044e6104bc366004612d3f565b610ec8565b3480156104cc575f5ffd5b506103d76104db366004612d69565b610ee1565b3480156104eb575f5ffd5b506003545b60405190815260200161045a565b348015610509575f5ffd5b50601954601a54601b5461051c92919083565b6040805193845260208401929092529082015260600161045a565b348015610542575f5ffd5b506104f0600f5481565b348015610557575f5ffd5b5061044e610566366004612deb565b610f31565b348015610576575f5ffd5b5061044e610585366004612cef565b60136020525f908152604090205460ff1681565b3480156105a4575f5ffd5b506105cc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161045a565b3480156105ef575f5ffd5b506103d76105fe366004612d69565b610f54565b34801561060e575f5ffd5b506103d761061d366004612d69565b611184565b34801561062d575f5ffd5b506040516012815260200161045a565b348015610648575f5ffd5b506104f06802df85d331a7b4000081565b348015610664575f5ffd5b506103d7610673366004612cef565b61125a565b348015610683575f5ffd5b5060085461044e90600160a81b900460ff1681565b3480156106a3575f5ffd5b506103d76106b2366004612e29565b611448565b3480156106c2575f5ffd5b5061044e6106d1366004612cef565b6001600160a01b03165f9081526017602052604090205460ff1690565b3480156106f9575f5ffd5b506103d7610708366004612e40565b6114c6565b348015610718575f5ffd5b50601c546105cc906001600160a01b031681565b348015610737575f5ffd5b5060085461044e90600160c81b900460ff1681565b348015610757575f5ffd5b506104f060105481565b34801561076c575f5ffd5b5060085461044e90600160d01b900460ff1681565b34801561078c575f5ffd5b506105cc5f81565b34801561079f575f5ffd5b506104f0600d5481565b3480156107b4575f5ffd5b506103d76107c3366004612e69565b611555565b3480156107d3575f5ffd5b506104f0600e5481565b3480156107e8575f5ffd5b506103d76107f7366004612cb9565b6115d7565b348015610807575f5ffd5b506104f0600c5481565b34801561081c575f5ffd5b506104f061082b366004612cef565b6001600160a01b03165f9081526001602052604090205490565b348015610850575f5ffd5b506103d761162c565b348015610864575f5ffd5b506103d7610873366004612e29565b61163f565b348015610883575f5ffd5b506103d7610892366004612e29565b6116bd565b3480156108a2575f5ffd5b506006546105cc906001600160a01b031681565b3480156108c1575f5ffd5b506104f05f81565b3480156108d4575f5ffd5b5061044e6108e3366004612cef565b60156020525f908152604090205460ff1681565b348015610902575f5ffd5b506104f0600a81565b348015610916575f5ffd5b506104f060095481565b34801561092b575f5ffd5b506104f060125481565b348015610940575f5ffd5b505f546001600160a01b03166105cc565b34801561095c575f5ffd5b506007546105cc906001600160a01b031681565b34801561097b575f5ffd5b5061047761173b565b34801561098f575f5ffd5b506103d761099e366004612e29565b61174a565b3480156109ae575f5ffd5b5060085461044e90600160b81b900460ff1681565b3480156109ce575f5ffd5b506103d76109dd366004612cb9565b61180d565b3480156109ed575f5ffd5b5061044e6109fc366004612d3f565b611862565b348015610a0c575f5ffd5b506103d7610a1b366004612cef565b61186f565b348015610a2b575f5ffd5b5060085461044e90600160b01b900460ff1681565b348015610a4b575f5ffd5b506103d7610a5a366004612cef565b6118fe565b348015610a6a575f5ffd5b506103d7610a79366004612d69565b611985565b348015610a89575f5ffd5b5060085461044e90600160a01b900460ff1681565b348015610aa9575f5ffd5b5061044e610ab8366004612cef565b60166020525f908152604090205460ff1681565b348015610ad7575f5ffd5b506103d7610ae6366004612e89565b6119cf565b348015610af6575f5ffd5b506105cc7f000000000000000000000000000000000000000000000000000000000000000081565b348015610b29575f5ffd5b506104f060115481565b348015610b3e575f5ffd5b506104f0601d5481565b348015610b53575f5ffd5b506103d7610b62366004612cb9565b611a1e565b348015610b72575f5ffd5b506103d7610b81366004612e29565b611a73565b348015610b91575f5ffd5b506104f0600a5481565b348015610ba6575f5ffd5b5061044e610bb5366004612cef565b60146020525f908152604090205460ff1681565b348015610bd4575f5ffd5b506104f0610be3366004612ec0565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610c18575f5ffd5b506104f0607d81565b348015610c2c575f5ffd5b506008546105cc906001600160a01b031681565b348015610c4b575f5ffd5b506103d7610c5a366004612cef565b611b06565b348015610c6a575f5ffd5b506103d7610c79366004612cef565b611b43565b348015610c89575f5ffd5b506105cc61dead81565b610c9b611bb2565b600854600160c81b900460ff1615610cc65760405163ef65161f60e01b815260040160405180910390fd5b6008805460ff60c81b1916600160c81b1790554360095542600a556040517f6603428d483ce13b6662b7a6848d769996e12e801bed4b0f1b9e8d10f64d38ba905f90a1565b6008546001600160a01b03163314610d36576040516323a7681d60e01b815260040160405180910390fd5b600854600160a01b900460ff1615610d6157604051630e3f438360e21b815260040160405180910390fd5b6010805460118054601280545f9586905592859055939093556008805460ff60a01b1916600160a01b179055604080518381526020810185905290810182905291929133907f9068db52b62cee7a97eb501bc0cb643bdc5bd5645f5dfc1e5dbf0986251c2c3d9060600160405180910390a2505050565b610de0611bb2565b60088054821515600160d01b0260ff60d01b199091161790556040517f1cf28b997975c7be355bcef74f2f5019aa48253bc1e54b3c8b002471865fdba890610e2d90831515815260200190565b60405180910390a150565b606060048054610e4790612eec565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7390612eec565b8015610ebe5780601f10610e9557610100808354040283529160200191610ebe565b820191905f5260205f20905b815481529060010190602001808311610ea157829003601f168201915b5050505050905090565b5f33610ed5818585611bde565b60019150505b92915050565b610ee9611bb2565b5f5b82811015610f2b57610f23848483818110610f0857610f08612f24565b9050602002016020810190610f1d9190612cef565b83611bf0565b600101610eeb565b50505050565b5f33610f3e858285611c4b565b610f49858585611cc0565b506001949350505050565b6008546001600160a01b03163314610f7f576040516323a7681d60e01b815260040160405180910390fd5b5f5b82811015610f2b5760165f858584818110610f9e57610f9e612f24565b9050602002016020810190610fb39190612cef565b6001600160a01b0316815260208101919091526040015f205460ff1615801561103457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031684848381811061101357611013612f24565b90506020020160208101906110289190612cef565b6001600160a01b031614155b801561106f57503084848381811061104e5761104e612f24565b90506020020160208101906110639190612cef565b6001600160a01b031614155b80156110aa57505f84848381811061108957611089612f24565b905060200201602081019061109e9190612cef565b6001600160a01b031614155b8015611147575060145f8585848181106110c6576110c6612f24565b90506020020160208101906110db9190612cef565b6001600160a01b0316815260208101919091526040015f205460ff16158015611147575060155f85858481811061111457611114612f24565b90506020020160208101906111299190612cef565b6001600160a01b0316815260208101919091526040015f205460ff16155b1561117c5761117c84848381811061116157611161612f24565b90506020020160208101906111769190612cef565b83611d1d565b600101610f81565b61118c611bb2565b5f5b82811015610f2b578160175f8686858181106111ac576111ac612f24565b90506020020160208101906111c19190612cef565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557fc03feb136ee85ef1974671b8c663f063c37bc61afb187b94ddfb1a959d73d18084848381811061121b5761121b612f24565b90506020020160208101906112309190612cef565b604080516001600160a01b03909216825284151560208301520160405180910390a160010161118e565b611262611bb2565b335f6001600160a01b0383166113085750475f816112935760405163cff858f960e01b815260040160405180910390fd5b6040516001600160a01b0384169083905f81818185875af1925050503d805f81146112d9576040519150601f19603f3d011682016040523d82523d5f602084013e6112de565b606091505b5050809150508061130257604051634088176760e11b815260040160405180910390fd5b50611400565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa15801561134a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136e9190612f38565b90505f811161139057604051637dd28aa760e11b815260040160405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0384169063a9059cbb906044016020604051808303815f875af11580156113da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fe9190612f4f565b505b604080516001600160a01b0385168152602081018390527f7aba7eca7d870d5f2f93298379a43957082ef15cdcf64db1f7c731c6b3a2fa4991015b60405180910390a1505050565b611450611bb2565b6103e861145c60035490565b611467906002612f7e565b6114719190612f95565b8110156114915760405163617ab12d60e11b815260040160405180910390fd5b600d8190556040518181527f1f41d239159181ddefb13e99853e0e4998e0556aa1f2281281c783e30928106290602001610e2d565b6114ce611bb2565b806114d98385612fb4565b6114e39190612fb4565b60641461152f5760405162461bcd60e51b8152602060048201526015602482015274053706c6974206d7573742073756d20746f2031303605c1b60448201526064015b60405180910390fd5b604080516060810182528481526020810184905201819052601992909255601a55601b55565b61155d611bb2565b600854600160a01b900460ff161561158857604051630e3f438360e21b815260040160405180910390fd5b600a8211156115aa5760405163cd4e616760e01b815260040160405180910390fd5b600a8111156115cc5760405163cd4e616760e01b815260040160405180910390fd5b601091909155601155565b6115df611bb2565b60088054821515600160b01b0260ff60b01b199091161790556040517f6a53d6c83a7a55d7a07bd490493fceb559161cce588908714e497e54044777d990610e2d90831515815260200190565b611634611bb2565b61163d5f611d78565b565b611647611bb2565b6103e861165360035490565b61165e906003612f7e565b6116689190612f95565b8110156116885760405163617ab12d60e11b815260040160405180910390fd5b600e8190556040518181527fe2e6151ed0b472c61401059745339ca42474813911b22d24023385def6377e1c90602001610e2d565b6116c5611bb2565b6103e86116d160035490565b6116dc906002612f7e565b6116e69190612f95565b8110156117065760405163617ab12d60e11b815260040160405180910390fd5b600c8190556040518181527f85668e92bc538f5c140067d68e3375c65b9e4545d2822ec8d807c6782f747d6290602001610e2d565b606060058054610e4790612eec565b611752611bb2565b5f61175c60035490565b9050620f424061176d826001612f7e565b6117779190612f95565b8210156117975760405163617ab12d60e11b815260040160405180910390fd5b6103e86117a5826005612f7e565b6117af9190612f95565b8211156117cf57604051630625040160e01b815260040160405180910390fd5b600f80549083905560408051848152602081018390527f65a8c7442ea496b0a28890f1ef48a9819d1f5d747e9a8df155fe862dfd493c95910161143b565b611815611bb2565b60088054821515600160b81b0260ff60b81b199091161790556040517fa6a3dda702515d3130fef8b72d8e25f9aebd0d02e89d10d63c0c31d80b52f4a090610e2d90831515815260200190565b5f33610ed5818585611cc0565b611877611bb2565b6001600160a01b03811661189e5760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b038381166001600160a01b03198316811790935560408051938452911660208301819052917fb3dd4b0ccf73b51db7cb2a59fb88d1082b0fa9389d4ce0e85100fe3b26af78c491015b60405180910390a15050565b611906611bb2565b6001600160a01b03811661192d5760405163e6c4247b60e01b815260040160405180910390fd5b600780546001600160a01b038381166001600160a01b03198316811790935560408051938452911660208301819052917f0db17895a9d092fb3ca24d626f2150dd80c185b0706b36f1040ee239f56cb87191016118f2565b61198d611bb2565b5f5b82811015610f2b576119c78484838181106119ac576119ac612f24565b90506020020160208101906119c19190612cef565b83611dbc565b60010161198f565b6119d7611bb2565b6001600160a01b0382165f9081526016602052604090205460ff1615611a1057604051630138835f60e11b815260040160405180910390fd5b611a1a8282611e17565b5050565b611a26611bb2565b60088054821515600160a81b0260ff60a81b199091161790556040517f1da197dc3cab4eceaefd5d0c34df2ed3a08f20a207fb1910c0eceb361e2c965c90610e2d90831515815260200190565b611a7b611bb2565b600854600160a01b900460ff1615611aa657604051630e3f438360e21b815260040160405180910390fd5b600a811115611ac85760405163cd4e616760e01b815260040160405180910390fd5b601280549082905560408051838152602081018390527f6a7b998a4adc393cb692c67fcd563e7971e2ea6f3fe7c9b8fb6dd53cf5b627d091016118f2565b611b0e611bb2565b6001600160a01b038116611b3757604051631e4fbdf760e01b81525f6004820152602401611526565b611b4081611d78565b50565b611b4b611bb2565b6001600160a01b038116611b905760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401611526565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461163d5760405163118cdaa760e01b8152336004820152602401611526565b611beb8383836001611e72565b505050565b6001600160a01b0382165f81815260156020908152604091829020805460ff19168515159081179091558251938452908301527f74392251b09500cc108c71712e5e7e0392be9075a74a24f1494551cfa8e0687091016118f2565b6001600160a01b038381165f908152600260209081526040808320938616835292905220545f198114610f2b5781811015611cb257604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401611526565b610f2b84848484035f611e72565b6001600160a01b038316611ce957604051634b637e8f60e11b81525f6004820152602401611526565b6001600160a01b038216611d125760405163ec442f0560e01b81525f6004820152602401611526565b611beb838383611f44565b6001600160a01b0382165f81815260136020908152604091829020805460ff19168515159081179091558251938452908301527f066e0c23b9ae0bb92a88e9b0985bb7d85fce062730057312b99a9e243fde5ee191016118f2565b5f546001600160a01b03168015611d9d57611d93815f611dbc565b611d9d815f611bf0565b611da8826001611dbc565b611db3826001611bf0565b611a1a826127ac565b6001600160a01b0382165f81815260146020908152604091829020805460ff19168515159081179091558251938452908301527f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb91016118f2565b6001600160a01b0382165f81815260166020908152604091829020805460ff19168515159081179091558251938452908301527f024f6c8d60a57c94822c46d989fd6935057590269281b07fe8327d7e9bc4242191016118f2565b6001600160a01b038416611e9b5760405163e602df0560e01b81525f6004820152602401611526565b6001600160a01b038316611ec457604051634a1406b160e11b81525f6004820152602401611526565b6001600160a01b038085165f9081526002602090815260408083209387168352929052208290558015610f2b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611f3691815260200190565b60405180910390a350505050565b6001600160a01b0383165f908152601360205260409020543390329060ff1615611f8157604051631a30f03760e31b815260040160405180910390fd5b846001600160a01b0316826001600160a01b03161480611fb957506001600160a01b0382165f9081526013602052604090205460ff16155b611fd657604051631a30f03760e31b815260040160405180910390fd5b846001600160a01b0316816001600160a01b031614806120075750816001600160a01b0316816001600160a01b0316145b8061202a57506001600160a01b0381165f9081526013602052604090205460ff16155b61204757604051631a30f03760e31b815260040160405180910390fd5b600854600160c81b900460ff168061207657506001600160a01b0385165f9081526015602052604090205460ff165b8061209857506001600160a01b0384165f9081526015602052604090205460ff165b6120b55760405163037c597f60e01b815260040160405180910390fd5b600854600160c81b900460ff1680156120d75750600854600160d01b900460ff165b15612172575f600954436120eb9190612fc7565b9050805f03612170576001600160a01b0386165f9081526016602052604090205460ff16801561213357506001600160a01b0385165f9081526015602052604090205460ff16155b15612170576001600160a01b0385165f9081526017602052604090205460ff1661217057604051630b094f2760e31b815260040160405180910390fd5b505b6008545f90600160a81b900460ff1680156121975750600854600160c01b900460ff16155b80156121dd57506001600160a01b0386165f9081526015602052604090205460ff16806121db57506001600160a01b0385165f9081526015602052604090205460ff165b155b90508015612551575f546001600160a01b0387811691161480159061220f57505f546001600160a01b03868116911614155b801561222357506001600160a01b03851615155b801561223a57506001600160a01b03851661dead14155b1561255157600854600160b01b900460ff161561235e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316141580156122c557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b1561235e576122d5600343612fc7565b6001600160a01b0383165f9081526018602052604090205410801561231a5750612300600343612fc7565b6001600160a01b0386165f90815260186020526040902054105b612337576040516329a226cf60e11b815260040160405180910390fd5b6001600160a01b038083165f90815260186020526040808220439081905592881682529020555b6008545f90600160c81b900460ff16156123cc575f600954436123819190612fc7565b9050805f036123b357612710607d61239860035490565b6123a29190612f7e565b6123ac9190612f95565b91506123c6565b6003546008805460ff60a81b1916905591505b506123d1565b50600c545b6001600160a01b0387165f9081526016602052604090205460ff16801561241057506001600160a01b0386165f9081526015602052604090205460ff16155b156124835780851115612436576040516344df090f60e11b815260040160405180910390fd5b80612455876001600160a01b03165f9081526001602052604090205490565b61245f9087612fb4565b111561247e57604051633b63e02960e11b815260040160405180910390fd5b61254f565b6001600160a01b0386165f9081526016602052604090205460ff1680156124c257506001600160a01b0387165f9081526015602052604090205460ff16155b156124e8578085111561247e57604051630a8e28e160e41b815260040160405180910390fd5b6001600160a01b0386165f9081526015602052604090205460ff1661254f5780612526876001600160a01b03165f9081526001602052604090205490565b6125309087612fb4565b111561254f57604051633b63e02960e11b815260040160405180910390fd5b505b6008545f90600160b81b900460ff1680156125765750600854600160c01b900460ff16155b80156125bc57506001600160a01b0387165f9081526014602052604090205460ff16806125ba57506001600160a01b0386165f9081526014602052604090205460ff165b155b90508015612729576008545f9081908190600160c81b900460ff1615612610575f600954436125eb9190612fc7565b9050805f036125ff575f91505f925061260a565b601054915060115492505b5061261a565b5050601054601154905b6001600160a01b0389165f9081526016602052604090205460ff16801561264057505f82115b15612662576064612651838a612f7e565b61265b9190612f95565b9250612708565b6001600160a01b038a165f9081526016602052604090205460ff16801561268857505f81115b15612699576064612651828a612f7e565b6001600160a01b0389165f9081526016602052604090205460ff161580156126d957506001600160a01b038a165f9081526016602052604090205460ff16155b80156126e657505f601254115b15612708576064601254896126fb9190612f7e565b6127059190612f95565b92505b8215612725576127188389612fc7565b97506127258a30856127fb565b5050505b305f90815260016020526040902054600f5481101582801561276357506001600160a01b0389165f9081526016602052604090205460ff16155b801561276c5750805b1561279657600b5443118015612783575060095443115b156127965761279182612921565b43600b555b6127a18989896127fb565b505050505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316612825578060035f82825461281a9190612fb4565b909155506128959050565b6001600160a01b0383165f90815260016020526040902054818110156128775760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401611526565b6001600160a01b0384165f9081526001602052604090209082900390555b6001600160a01b0382166128b1576003805482900390556128cf565b6001600160a01b0382165f9081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161291491815260200190565b60405180910390a3505050565b6008805460ff60c01b1916600160c01b1790556040805160028082526060820183525f928392919060208301908036833701905050905030815f8151811061296b5761296b612f24565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a0b9190612fda565b81600181518110612a1e57612a1e612f24565b60200260200101906001600160a01b031690816001600160a01b0316815250505f600f546014612a4e9190612f7e565b905080841115612a5c578093505b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612ab09087905f90879030904290600401612ff5565b5f604051808303815f87803b158015612ac7575f5ffd5b505af1158015612ad9573d5f5f3e3d5ffd5b505050505f47905080601d5f828254612af29190612fb4565b9091555050604080516060810182526019548152601a546020820152601b5491810191909152601d546802df85d331a7b400001115612b4b576040518060600160405280603c8152602001602881526020015f81525090505b80515f90606490612b5c9085612f7e565b612b669190612f95565b90505f6064836020015185612b7b9190612f7e565b612b859190612f95565b90505f81612b938487612fc7565b612b9d9190612fc7565b6006546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114612be8576040519150601f19603f3d011682016040523d82523d5f602084013e612bed565b606091505b50506007546040519199506001600160a01b03169083905f81818185875af1925050503d805f8114612c3a576040519150601f19603f3d011682016040523d82523d5f602084013e612c3f565b606091505b5050601c546040519199506001600160a01b03169082905f81818185875af1925050503d805f8114612c8c576040519150601f19603f3d011682016040523d82523d5f602084013e612c91565b606091505b50506008805460ff60c01b1916905550505050505050505050565b8015158114611b40575f5ffd5b5f60208284031215612cc9575f5ffd5b8135612cd481612cac565b9392505050565b6001600160a01b0381168114611b40575f5ffd5b5f60208284031215612cff575f5ffd5b8135612cd481612cdb565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612d50575f5ffd5b8235612d5b81612cdb565b946020939093013593505050565b5f5f5f60408486031215612d7b575f5ffd5b833567ffffffffffffffff811115612d91575f5ffd5b8401601f81018613612da1575f5ffd5b803567ffffffffffffffff811115612db7575f5ffd5b8660208260051b8401011115612dcb575f5ffd5b602091820194509250840135612de081612cac565b809150509250925092565b5f5f5f60608486031215612dfd575f5ffd5b8335612e0881612cdb565b92506020840135612e1881612cdb565b929592945050506040919091013590565b5f60208284031215612e39575f5ffd5b5035919050565b5f5f5f60608486031215612e52575f5ffd5b505081359360208301359350604090920135919050565b5f5f60408385031215612e7a575f5ffd5b50508035926020909101359150565b5f5f60408385031215612e9a575f5ffd5b8235612ea581612cdb565b91506020830135612eb581612cac565b809150509250929050565b5f5f60408385031215612ed1575f5ffd5b8235612edc81612cdb565b91506020830135612eb581612cdb565b600181811c90821680612f0057607f821691505b602082108103612f1e57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612f48575f5ffd5b5051919050565b5f60208284031215612f5f575f5ffd5b8151612cd481612cac565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610edb57610edb612f6a565b5f82612faf57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610edb57610edb612f6a565b81810381811115610edb57610edb612f6a565b5f60208284031215612fea575f5ffd5b8151612cd481612cdb565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156130455783516001600160a01b031683526020938401939092019160010161301e565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122092f9107fe7804c6d4a9244bd90b9d34c2dbddf23471d02d5fb00f7c2c4a0e9cd64736f6c634300081c0033
Deployed Bytecode
0x6080604052600436106103d7575f3560e01c8063728d41c9116101fa578063abefea0311610116578063da0103bd116100a4578063e25fc5ac11610076578063e25fc5ac14610c0d578063f1fffdcb14610c21578063f2fde38b14610c40578063f3ff43da14610c5f578063fccc281314610c7e57005b8063da0103bd14610b67578063da4493f614610b86578063dbe66ca014610b9b578063dd62ed3e14610bc957005b8063c16dd4a4116100e8578063c16dd4a414610acc578063c31c9c0714610aeb578063cc1776d314610b1e578063ce2a9f6214610b33578063ce657cce14610b4857005b8063abefea0314610a40578063ad29ffde14610a5f578063b367f8fe14610a7e578063b4b11b9514610a9e57005b80638da5cb5b11610193578063a64e4f8a11610165578063a64e4f8a146109a3578063a901dd92146109c3578063a9059cbb146109e2578063a91a9eb114610a01578063a985ceef14610a2057005b80638da5cb5b146109355780638ea5220f1461095157806395d89b4114610970578063a49a910f1461098457005b80637b812b41116101cc5780637b812b41146108c95780637f635cc0146108f757806380faa3d21461090b5780638124f7ac1461092057005b8063728d41c914610859578063757765f81461087857806375f0a874146108975780637a689da1146108b657005b8063337a4b20116102f457806351fb012d1161028257806366a88d961161025457806366a88d96146107c857806368b69b9b146107dd5780636aa5b37f146107fc57806370a0823114610811578063715018a61461084557005b806351fb012d14610761578063538ba4f914610781578063652e2f0414610794578063667f6526146107a957005b80633af32abf116102c65780633af32abf146106b75780633f7fc93b146106ee578063435263ef1461070d5780634a8c1fb41461072c5780634f7041a51461074c57005b8063337a4b201461063d578063346cc7be146106595780633582ad231461067857806336884b6e1461069857005b806318160ddd11610371578063259827e311610343578063259827e31461056b57806326991cc8146105995780632f6f30ea146105e45780632f893de714610603578063313ce5671461062257005b806318160ddd146104e05780631983f599146104fe5780631ecd7d6e1461053757806323b872dd1461054c57005b806306fdde03116103aa57806306fdde031461046357806308252b7c14610484578063095ea7b3146104a2578063106a5a8f146104c157005b806302ac8168146103d957806302b6203d146103ed578063052d9e7e1461040157806306c933d814610420575b005b3480156103e4575f5ffd5b506103d7610c93565b3480156103f8575f5ffd5b506103d7610d0b565b34801561040c575f5ffd5b506103d761041b366004612cb9565b610dd8565b34801561042b575f5ffd5b5061044e61043a366004612cef565b60176020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561046e575f5ffd5b50610477610e38565b60405161045a9190612d0a565b34801561048f575f5ffd5b50600854600160a01b900460ff1661044e565b3480156104ad575f5ffd5b5061044e6104bc366004612d3f565b610ec8565b3480156104cc575f5ffd5b506103d76104db366004612d69565b610ee1565b3480156104eb575f5ffd5b506003545b60405190815260200161045a565b348015610509575f5ffd5b50601954601a54601b5461051c92919083565b6040805193845260208401929092529082015260600161045a565b348015610542575f5ffd5b506104f0600f5481565b348015610557575f5ffd5b5061044e610566366004612deb565b610f31565b348015610576575f5ffd5b5061044e610585366004612cef565b60136020525f908152604090205460ff1681565b3480156105a4575f5ffd5b506105cc7f00000000000000000000000093b7b4ce9962407c8a667acb323483628a3360d781565b6040516001600160a01b03909116815260200161045a565b3480156105ef575f5ffd5b506103d76105fe366004612d69565b610f54565b34801561060e575f5ffd5b506103d761061d366004612d69565b611184565b34801561062d575f5ffd5b506040516012815260200161045a565b348015610648575f5ffd5b506104f06802df85d331a7b4000081565b348015610664575f5ffd5b506103d7610673366004612cef565b61125a565b348015610683575f5ffd5b5060085461044e90600160a81b900460ff1681565b3480156106a3575f5ffd5b506103d76106b2366004612e29565b611448565b3480156106c2575f5ffd5b5061044e6106d1366004612cef565b6001600160a01b03165f9081526017602052604090205460ff1690565b3480156106f9575f5ffd5b506103d7610708366004612e40565b6114c6565b348015610718575f5ffd5b50601c546105cc906001600160a01b031681565b348015610737575f5ffd5b5060085461044e90600160c81b900460ff1681565b348015610757575f5ffd5b506104f060105481565b34801561076c575f5ffd5b5060085461044e90600160d01b900460ff1681565b34801561078c575f5ffd5b506105cc5f81565b34801561079f575f5ffd5b506104f0600d5481565b3480156107b4575f5ffd5b506103d76107c3366004612e69565b611555565b3480156107d3575f5ffd5b506104f0600e5481565b3480156107e8575f5ffd5b506103d76107f7366004612cb9565b6115d7565b348015610807575f5ffd5b506104f0600c5481565b34801561081c575f5ffd5b506104f061082b366004612cef565b6001600160a01b03165f9081526001602052604090205490565b348015610850575f5ffd5b506103d761162c565b348015610864575f5ffd5b506103d7610873366004612e29565b61163f565b348015610883575f5ffd5b506103d7610892366004612e29565b6116bd565b3480156108a2575f5ffd5b506006546105cc906001600160a01b031681565b3480156108c1575f5ffd5b506104f05f81565b3480156108d4575f5ffd5b5061044e6108e3366004612cef565b60156020525f908152604090205460ff1681565b348015610902575f5ffd5b506104f0600a81565b348015610916575f5ffd5b506104f060095481565b34801561092b575f5ffd5b506104f060125481565b348015610940575f5ffd5b505f546001600160a01b03166105cc565b34801561095c575f5ffd5b506007546105cc906001600160a01b031681565b34801561097b575f5ffd5b5061047761173b565b34801561098f575f5ffd5b506103d761099e366004612e29565b61174a565b3480156109ae575f5ffd5b5060085461044e90600160b81b900460ff1681565b3480156109ce575f5ffd5b506103d76109dd366004612cb9565b61180d565b3480156109ed575f5ffd5b5061044e6109fc366004612d3f565b611862565b348015610a0c575f5ffd5b506103d7610a1b366004612cef565b61186f565b348015610a2b575f5ffd5b5060085461044e90600160b01b900460ff1681565b348015610a4b575f5ffd5b506103d7610a5a366004612cef565b6118fe565b348015610a6a575f5ffd5b506103d7610a79366004612d69565b611985565b348015610a89575f5ffd5b5060085461044e90600160a01b900460ff1681565b348015610aa9575f5ffd5b5061044e610ab8366004612cef565b60166020525f908152604090205460ff1681565b348015610ad7575f5ffd5b506103d7610ae6366004612e89565b6119cf565b348015610af6575f5ffd5b506105cc7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610b29575f5ffd5b506104f060115481565b348015610b3e575f5ffd5b506104f0601d5481565b348015610b53575f5ffd5b506103d7610b62366004612cb9565b611a1e565b348015610b72575f5ffd5b506103d7610b81366004612e29565b611a73565b348015610b91575f5ffd5b506104f0600a5481565b348015610ba6575f5ffd5b5061044e610bb5366004612cef565b60146020525f908152604090205460ff1681565b348015610bd4575f5ffd5b506104f0610be3366004612ec0565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610c18575f5ffd5b506104f0607d81565b348015610c2c575f5ffd5b506008546105cc906001600160a01b031681565b348015610c4b575f5ffd5b506103d7610c5a366004612cef565b611b06565b348015610c6a575f5ffd5b506103d7610c79366004612cef565b611b43565b348015610c89575f5ffd5b506105cc61dead81565b610c9b611bb2565b600854600160c81b900460ff1615610cc65760405163ef65161f60e01b815260040160405180910390fd5b6008805460ff60c81b1916600160c81b1790554360095542600a556040517f6603428d483ce13b6662b7a6848d769996e12e801bed4b0f1b9e8d10f64d38ba905f90a1565b6008546001600160a01b03163314610d36576040516323a7681d60e01b815260040160405180910390fd5b600854600160a01b900460ff1615610d6157604051630e3f438360e21b815260040160405180910390fd5b6010805460118054601280545f9586905592859055939093556008805460ff60a01b1916600160a01b179055604080518381526020810185905290810182905291929133907f9068db52b62cee7a97eb501bc0cb643bdc5bd5645f5dfc1e5dbf0986251c2c3d9060600160405180910390a2505050565b610de0611bb2565b60088054821515600160d01b0260ff60d01b199091161790556040517f1cf28b997975c7be355bcef74f2f5019aa48253bc1e54b3c8b002471865fdba890610e2d90831515815260200190565b60405180910390a150565b606060048054610e4790612eec565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7390612eec565b8015610ebe5780601f10610e9557610100808354040283529160200191610ebe565b820191905f5260205f20905b815481529060010190602001808311610ea157829003601f168201915b5050505050905090565b5f33610ed5818585611bde565b60019150505b92915050565b610ee9611bb2565b5f5b82811015610f2b57610f23848483818110610f0857610f08612f24565b9050602002016020810190610f1d9190612cef565b83611bf0565b600101610eeb565b50505050565b5f33610f3e858285611c4b565b610f49858585611cc0565b506001949350505050565b6008546001600160a01b03163314610f7f576040516323a7681d60e01b815260040160405180910390fd5b5f5b82811015610f2b5760165f858584818110610f9e57610f9e612f24565b9050602002016020810190610fb39190612cef565b6001600160a01b0316815260208101919091526040015f205460ff1615801561103457507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031684848381811061101357611013612f24565b90506020020160208101906110289190612cef565b6001600160a01b031614155b801561106f57503084848381811061104e5761104e612f24565b90506020020160208101906110639190612cef565b6001600160a01b031614155b80156110aa57505f84848381811061108957611089612f24565b905060200201602081019061109e9190612cef565b6001600160a01b031614155b8015611147575060145f8585848181106110c6576110c6612f24565b90506020020160208101906110db9190612cef565b6001600160a01b0316815260208101919091526040015f205460ff16158015611147575060155f85858481811061111457611114612f24565b90506020020160208101906111299190612cef565b6001600160a01b0316815260208101919091526040015f205460ff16155b1561117c5761117c84848381811061116157611161612f24565b90506020020160208101906111769190612cef565b83611d1d565b600101610f81565b61118c611bb2565b5f5b82811015610f2b578160175f8686858181106111ac576111ac612f24565b90506020020160208101906111c19190612cef565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557fc03feb136ee85ef1974671b8c663f063c37bc61afb187b94ddfb1a959d73d18084848381811061121b5761121b612f24565b90506020020160208101906112309190612cef565b604080516001600160a01b03909216825284151560208301520160405180910390a160010161118e565b611262611bb2565b335f6001600160a01b0383166113085750475f816112935760405163cff858f960e01b815260040160405180910390fd5b6040516001600160a01b0384169083905f81818185875af1925050503d805f81146112d9576040519150601f19603f3d011682016040523d82523d5f602084013e6112de565b606091505b5050809150508061130257604051634088176760e11b815260040160405180910390fd5b50611400565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa15801561134a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136e9190612f38565b90505f811161139057604051637dd28aa760e11b815260040160405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0384169063a9059cbb906044016020604051808303815f875af11580156113da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fe9190612f4f565b505b604080516001600160a01b0385168152602081018390527f7aba7eca7d870d5f2f93298379a43957082ef15cdcf64db1f7c731c6b3a2fa4991015b60405180910390a1505050565b611450611bb2565b6103e861145c60035490565b611467906002612f7e565b6114719190612f95565b8110156114915760405163617ab12d60e11b815260040160405180910390fd5b600d8190556040518181527f1f41d239159181ddefb13e99853e0e4998e0556aa1f2281281c783e30928106290602001610e2d565b6114ce611bb2565b806114d98385612fb4565b6114e39190612fb4565b60641461152f5760405162461bcd60e51b8152602060048201526015602482015274053706c6974206d7573742073756d20746f2031303605c1b60448201526064015b60405180910390fd5b604080516060810182528481526020810184905201819052601992909255601a55601b55565b61155d611bb2565b600854600160a01b900460ff161561158857604051630e3f438360e21b815260040160405180910390fd5b600a8211156115aa5760405163cd4e616760e01b815260040160405180910390fd5b600a8111156115cc5760405163cd4e616760e01b815260040160405180910390fd5b601091909155601155565b6115df611bb2565b60088054821515600160b01b0260ff60b01b199091161790556040517f6a53d6c83a7a55d7a07bd490493fceb559161cce588908714e497e54044777d990610e2d90831515815260200190565b611634611bb2565b61163d5f611d78565b565b611647611bb2565b6103e861165360035490565b61165e906003612f7e565b6116689190612f95565b8110156116885760405163617ab12d60e11b815260040160405180910390fd5b600e8190556040518181527fe2e6151ed0b472c61401059745339ca42474813911b22d24023385def6377e1c90602001610e2d565b6116c5611bb2565b6103e86116d160035490565b6116dc906002612f7e565b6116e69190612f95565b8110156117065760405163617ab12d60e11b815260040160405180910390fd5b600c8190556040518181527f85668e92bc538f5c140067d68e3375c65b9e4545d2822ec8d807c6782f747d6290602001610e2d565b606060058054610e4790612eec565b611752611bb2565b5f61175c60035490565b9050620f424061176d826001612f7e565b6117779190612f95565b8210156117975760405163617ab12d60e11b815260040160405180910390fd5b6103e86117a5826005612f7e565b6117af9190612f95565b8211156117cf57604051630625040160e01b815260040160405180910390fd5b600f80549083905560408051848152602081018390527f65a8c7442ea496b0a28890f1ef48a9819d1f5d747e9a8df155fe862dfd493c95910161143b565b611815611bb2565b60088054821515600160b81b0260ff60b81b199091161790556040517fa6a3dda702515d3130fef8b72d8e25f9aebd0d02e89d10d63c0c31d80b52f4a090610e2d90831515815260200190565b5f33610ed5818585611cc0565b611877611bb2565b6001600160a01b03811661189e5760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b038381166001600160a01b03198316811790935560408051938452911660208301819052917fb3dd4b0ccf73b51db7cb2a59fb88d1082b0fa9389d4ce0e85100fe3b26af78c491015b60405180910390a15050565b611906611bb2565b6001600160a01b03811661192d5760405163e6c4247b60e01b815260040160405180910390fd5b600780546001600160a01b038381166001600160a01b03198316811790935560408051938452911660208301819052917f0db17895a9d092fb3ca24d626f2150dd80c185b0706b36f1040ee239f56cb87191016118f2565b61198d611bb2565b5f5b82811015610f2b576119c78484838181106119ac576119ac612f24565b90506020020160208101906119c19190612cef565b83611dbc565b60010161198f565b6119d7611bb2565b6001600160a01b0382165f9081526016602052604090205460ff1615611a1057604051630138835f60e11b815260040160405180910390fd5b611a1a8282611e17565b5050565b611a26611bb2565b60088054821515600160a81b0260ff60a81b199091161790556040517f1da197dc3cab4eceaefd5d0c34df2ed3a08f20a207fb1910c0eceb361e2c965c90610e2d90831515815260200190565b611a7b611bb2565b600854600160a01b900460ff1615611aa657604051630e3f438360e21b815260040160405180910390fd5b600a811115611ac85760405163cd4e616760e01b815260040160405180910390fd5b601280549082905560408051838152602081018390527f6a7b998a4adc393cb692c67fcd563e7971e2ea6f3fe7c9b8fb6dd53cf5b627d091016118f2565b611b0e611bb2565b6001600160a01b038116611b3757604051631e4fbdf760e01b81525f6004820152602401611526565b611b4081611d78565b50565b611b4b611bb2565b6001600160a01b038116611b905760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401611526565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461163d5760405163118cdaa760e01b8152336004820152602401611526565b611beb8383836001611e72565b505050565b6001600160a01b0382165f81815260156020908152604091829020805460ff19168515159081179091558251938452908301527f74392251b09500cc108c71712e5e7e0392be9075a74a24f1494551cfa8e0687091016118f2565b6001600160a01b038381165f908152600260209081526040808320938616835292905220545f198114610f2b5781811015611cb257604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401611526565b610f2b84848484035f611e72565b6001600160a01b038316611ce957604051634b637e8f60e11b81525f6004820152602401611526565b6001600160a01b038216611d125760405163ec442f0560e01b81525f6004820152602401611526565b611beb838383611f44565b6001600160a01b0382165f81815260136020908152604091829020805460ff19168515159081179091558251938452908301527f066e0c23b9ae0bb92a88e9b0985bb7d85fce062730057312b99a9e243fde5ee191016118f2565b5f546001600160a01b03168015611d9d57611d93815f611dbc565b611d9d815f611bf0565b611da8826001611dbc565b611db3826001611bf0565b611a1a826127ac565b6001600160a01b0382165f81815260146020908152604091829020805460ff19168515159081179091558251938452908301527f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb91016118f2565b6001600160a01b0382165f81815260166020908152604091829020805460ff19168515159081179091558251938452908301527f024f6c8d60a57c94822c46d989fd6935057590269281b07fe8327d7e9bc4242191016118f2565b6001600160a01b038416611e9b5760405163e602df0560e01b81525f6004820152602401611526565b6001600160a01b038316611ec457604051634a1406b160e11b81525f6004820152602401611526565b6001600160a01b038085165f9081526002602090815260408083209387168352929052208290558015610f2b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611f3691815260200190565b60405180910390a350505050565b6001600160a01b0383165f908152601360205260409020543390329060ff1615611f8157604051631a30f03760e31b815260040160405180910390fd5b846001600160a01b0316826001600160a01b03161480611fb957506001600160a01b0382165f9081526013602052604090205460ff16155b611fd657604051631a30f03760e31b815260040160405180910390fd5b846001600160a01b0316816001600160a01b031614806120075750816001600160a01b0316816001600160a01b0316145b8061202a57506001600160a01b0381165f9081526013602052604090205460ff16155b61204757604051631a30f03760e31b815260040160405180910390fd5b600854600160c81b900460ff168061207657506001600160a01b0385165f9081526015602052604090205460ff165b8061209857506001600160a01b0384165f9081526015602052604090205460ff165b6120b55760405163037c597f60e01b815260040160405180910390fd5b600854600160c81b900460ff1680156120d75750600854600160d01b900460ff165b15612172575f600954436120eb9190612fc7565b9050805f03612170576001600160a01b0386165f9081526016602052604090205460ff16801561213357506001600160a01b0385165f9081526015602052604090205460ff16155b15612170576001600160a01b0385165f9081526017602052604090205460ff1661217057604051630b094f2760e31b815260040160405180910390fd5b505b6008545f90600160a81b900460ff1680156121975750600854600160c01b900460ff16155b80156121dd57506001600160a01b0386165f9081526015602052604090205460ff16806121db57506001600160a01b0385165f9081526015602052604090205460ff165b155b90508015612551575f546001600160a01b0387811691161480159061220f57505f546001600160a01b03868116911614155b801561222357506001600160a01b03851615155b801561223a57506001600160a01b03851661dead14155b1561255157600854600160b01b900460ff161561235e577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316856001600160a01b0316141580156122c557507f00000000000000000000000093b7b4ce9962407c8a667acb323483628a3360d76001600160a01b0316856001600160a01b031614155b1561235e576122d5600343612fc7565b6001600160a01b0383165f9081526018602052604090205410801561231a5750612300600343612fc7565b6001600160a01b0386165f90815260186020526040902054105b612337576040516329a226cf60e11b815260040160405180910390fd5b6001600160a01b038083165f90815260186020526040808220439081905592881682529020555b6008545f90600160c81b900460ff16156123cc575f600954436123819190612fc7565b9050805f036123b357612710607d61239860035490565b6123a29190612f7e565b6123ac9190612f95565b91506123c6565b6003546008805460ff60a81b1916905591505b506123d1565b50600c545b6001600160a01b0387165f9081526016602052604090205460ff16801561241057506001600160a01b0386165f9081526015602052604090205460ff16155b156124835780851115612436576040516344df090f60e11b815260040160405180910390fd5b80612455876001600160a01b03165f9081526001602052604090205490565b61245f9087612fb4565b111561247e57604051633b63e02960e11b815260040160405180910390fd5b61254f565b6001600160a01b0386165f9081526016602052604090205460ff1680156124c257506001600160a01b0387165f9081526015602052604090205460ff16155b156124e8578085111561247e57604051630a8e28e160e41b815260040160405180910390fd5b6001600160a01b0386165f9081526015602052604090205460ff1661254f5780612526876001600160a01b03165f9081526001602052604090205490565b6125309087612fb4565b111561254f57604051633b63e02960e11b815260040160405180910390fd5b505b6008545f90600160b81b900460ff1680156125765750600854600160c01b900460ff16155b80156125bc57506001600160a01b0387165f9081526014602052604090205460ff16806125ba57506001600160a01b0386165f9081526014602052604090205460ff165b155b90508015612729576008545f9081908190600160c81b900460ff1615612610575f600954436125eb9190612fc7565b9050805f036125ff575f91505f925061260a565b601054915060115492505b5061261a565b5050601054601154905b6001600160a01b0389165f9081526016602052604090205460ff16801561264057505f82115b15612662576064612651838a612f7e565b61265b9190612f95565b9250612708565b6001600160a01b038a165f9081526016602052604090205460ff16801561268857505f81115b15612699576064612651828a612f7e565b6001600160a01b0389165f9081526016602052604090205460ff161580156126d957506001600160a01b038a165f9081526016602052604090205460ff16155b80156126e657505f601254115b15612708576064601254896126fb9190612f7e565b6127059190612f95565b92505b8215612725576127188389612fc7565b97506127258a30856127fb565b5050505b305f90815260016020526040902054600f5481101582801561276357506001600160a01b0389165f9081526016602052604090205460ff16155b801561276c5750805b1561279657600b5443118015612783575060095443115b156127965761279182612921565b43600b555b6127a18989896127fb565b505050505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316612825578060035f82825461281a9190612fb4565b909155506128959050565b6001600160a01b0383165f90815260016020526040902054818110156128775760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401611526565b6001600160a01b0384165f9081526001602052604090209082900390555b6001600160a01b0382166128b1576003805482900390556128cf565b6001600160a01b0382165f9081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161291491815260200190565b60405180910390a3505050565b6008805460ff60c01b1916600160c01b1790556040805160028082526060820183525f928392919060208301908036833701905050905030815f8151811061296b5761296b612f24565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a0b9190612fda565b81600181518110612a1e57612a1e612f24565b60200260200101906001600160a01b031690816001600160a01b0316815250505f600f546014612a4e9190612f7e565b905080841115612a5c578093505b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612ab09087905f90879030904290600401612ff5565b5f604051808303815f87803b158015612ac7575f5ffd5b505af1158015612ad9573d5f5f3e3d5ffd5b505050505f47905080601d5f828254612af29190612fb4565b9091555050604080516060810182526019548152601a546020820152601b5491810191909152601d546802df85d331a7b400001115612b4b576040518060600160405280603c8152602001602881526020015f81525090505b80515f90606490612b5c9085612f7e565b612b669190612f95565b90505f6064836020015185612b7b9190612f7e565b612b859190612f95565b90505f81612b938487612fc7565b612b9d9190612fc7565b6006546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114612be8576040519150601f19603f3d011682016040523d82523d5f602084013e612bed565b606091505b50506007546040519199506001600160a01b03169083905f81818185875af1925050503d805f8114612c3a576040519150601f19603f3d011682016040523d82523d5f602084013e612c3f565b606091505b5050601c546040519199506001600160a01b03169082905f81818185875af1925050503d805f8114612c8c576040519150601f19603f3d011682016040523d82523d5f602084013e612c91565b606091505b50506008805460ff60c01b1916905550505050505050505050565b8015158114611b40575f5ffd5b5f60208284031215612cc9575f5ffd5b8135612cd481612cac565b9392505050565b6001600160a01b0381168114611b40575f5ffd5b5f60208284031215612cff575f5ffd5b8135612cd481612cdb565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612d50575f5ffd5b8235612d5b81612cdb565b946020939093013593505050565b5f5f5f60408486031215612d7b575f5ffd5b833567ffffffffffffffff811115612d91575f5ffd5b8401601f81018613612da1575f5ffd5b803567ffffffffffffffff811115612db7575f5ffd5b8660208260051b8401011115612dcb575f5ffd5b602091820194509250840135612de081612cac565b809150509250925092565b5f5f5f60608486031215612dfd575f5ffd5b8335612e0881612cdb565b92506020840135612e1881612cdb565b929592945050506040919091013590565b5f60208284031215612e39575f5ffd5b5035919050565b5f5f5f60608486031215612e52575f5ffd5b505081359360208301359350604090920135919050565b5f5f60408385031215612e7a575f5ffd5b50508035926020909101359150565b5f5f60408385031215612e9a575f5ffd5b8235612ea581612cdb565b91506020830135612eb581612cac565b809150509250929050565b5f5f60408385031215612ed1575f5ffd5b8235612edc81612cdb565b91506020830135612eb581612cdb565b600181811c90821680612f0057607f821691505b602082108103612f1e57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612f48575f5ffd5b5051919050565b5f60208284031215612f5f575f5ffd5b8151612cd481612cac565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610edb57610edb612f6a565b5f82612faf57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610edb57610edb612f6a565b81810381811115610edb57610edb612f6a565b5f60208284031215612fea575f5ffd5b8151612cd481612cdb565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156130455783516001600160a01b031683526020938401939092019160010161301e565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122092f9107fe7804c6d4a9244bd90b9d34c2dbddf23471d02d5fb00f7c2c4a0e9cd64736f6c634300081c0033
Deployed Bytecode Sourcemap
7288:18831:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13331:238;;;;;;;;;;;;;:::i;25170:445::-;;;;;;;;;;;;;:::i;18184:148::-;;;;;;;;;;-1:-1:-1;18184:148:0;;;;;:::i;:::-;;:::i;8583:52::-;;;;;;;;;;-1:-1:-1;8583:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;936:14:1;;929:22;911:41;;899:2;884:18;8583:52:0;;;;;;;;2168:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25621:94::-;;;;;;;;;;-1:-1:-1;25695:12:0;;-1:-1:-1;;;25695:12:0;;;;25621:94;;2950:190;;;;;;;;;;-1:-1:-1;2950:190:0;;;;;:::i;:::-;;:::i;16580:214::-;;;;;;;;;;-1:-1:-1;16580:214:0;;;;;:::i;:::-;;:::i;2414:85::-;;;;;;;;;;-1:-1:-1;2484:12:0;;2414:85;;;2654:25:1;;;2642:2;2627:18;2414:85:0;2508:177:1;10915:24:0;;;;;;;;;;-1:-1:-1;10915:24:0;;;;;;;;;;;;;;;;2892:25:1;;;2948:2;2933:18;;2926:34;;;;2976:18;;;2969:34;2880:2;2865:18;10915:24:0;2690:319:1;8240:28:0;;;;;;;;;;;;;;;;3146:247;;;;;;;;;;-1:-1:-1;3146:247:0;;;;;:::i;:::-;;:::i;8367:47::-;;;;;;;;;;-1:-1:-1;8367:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7502:33;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3691:32:1;;;3673:51;;3661:2;3646:18;7502:33:0;3527:203:1;16802:515:0;;;;;;;;;;-1:-1:-1;16802:515:0;;;;;:::i;:::-;;:::i;18340:287::-;;;;;;;;;;-1:-1:-1;18340:287:0;;;;;:::i;:::-;;:::i;2338:70::-;;;;;;;;;;-1:-1:-1;2338:70:0;;2403:2;3877:36:1;;3865:2;3850:18;2338:70:0;3735:184:1;11022:54:0;;;;;;;;;;;;11068:8;11022:54;;17502:674;;;;;;;;;;-1:-1:-1;17502:674:0;;;;;:::i;:::-;;:::i;7678:25::-;;;;;;;;;;-1:-1:-1;7678:25:0;;;;-1:-1:-1;;;7678:25:0;;;;;;14815:225;;;;;;;;;;-1:-1:-1;14815:225:0;;;;;:::i;:::-;;:::i;18635:122::-;;;;;;;;;;-1:-1:-1;18635:122:0;;;;;:::i;:::-;-1:-1:-1;;;;;18720:29:0;18696:4;18720:29;;;:20;:29;;;;;;;;;18635:122;25721:233;;;;;;;;;;-1:-1:-1;25721:233:0;;;;;:::i;:::-;;:::i;10946:30::-;;;;;;;;;;-1:-1:-1;10946:30:0;;;;-1:-1:-1;;;;;10946:30:0;;;7807:23;;;;;;;;;;-1:-1:-1;7807:23:0;;;;-1:-1:-1;;;7807:23:0;;;;;;8275:21;;;;;;;;;;;;;;;;7837:28;;;;;;;;;;-1:-1:-1;7837:28:0;;;;-1:-1:-1;;;7837:28:0;;;;;;7383:49;;;;;;;;;;;;7430:1;7383:49;;8170:27;;;;;;;;;;;;;;;;15707:307;;;;;;;;;;-1:-1:-1;15707:307:0;;;;;:::i;:::-;;:::i;8204:29::-;;;;;;;;;;;;;;;;14289:148;;;;;;;;;;-1:-1:-1;14289:148:0;;;;;:::i;:::-;;:::i;8137:26::-;;;;;;;;;;;;;;;;2505:104;;;;;;;;;;-1:-1:-1;2505:104:0;;;;;:::i;:::-;-1:-1:-1;;;;;2588:18:0;2570:7;2588:18;;;:9;:18;;;;;;;2505:104;6340:89;;;;;;;;;;;;;:::i;15048:233::-;;;;;;;;;;-1:-1:-1;15048:233:0;;;;;:::i;:::-;;:::i;14586:221::-;;;;;;;;;;-1:-1:-1;14586:221:0;;;;;:::i;:::-;;:::i;7542:30::-;;;;;;;;;;-1:-1:-1;7542:30:0;;;;-1:-1:-1;;;;;7542:30:0;;;8034:39;;;;;;;;;;;;8072:1;8034:39;;8476:50;;;;;;;;;;-1:-1:-1;8476:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7985:42;;;;;;;;;;;;8025:2;7985:42;;7874:30;;;;;;;;;;;;;;;;8332:26;;;;;;;;;;;;;;;;6111:73;;;;;;;;;;-1:-1:-1;6157:7:0;6175:6;-1:-1:-1;;;;;6175:6:0;6111:73;;7579:24;;;;;;;;;;-1:-1:-1;7579:24:0;;;;-1:-1:-1;;;;;7579:24:0;;;2251:81;;;;;;;;;;;;;:::i;15289:410::-;;;;;;;;;;-1:-1:-1;15289:410:0;;;;;:::i;:::-;;:::i;7744:23::-;;;;;;;;;;-1:-1:-1;7744:23:0;;;;-1:-1:-1;;;7744:23:0;;;;;;14445:133;;;;;;;;;;-1:-1:-1;14445:133:0;;;;;:::i;:::-;;:::i;2615:182::-;;;;;;;;;;-1:-1:-1;2615:182:0;;;;;:::i;:::-;;:::i;13577:282::-;;;;;;;;;;-1:-1:-1;13577:282:0;;;;;:::i;:::-;;:::i;7710:27::-;;;;;;;;;;-1:-1:-1;7710:27:0;;;;-1:-1:-1;;;7710:27:0;;;;;;13867:264;;;;;;;;;;-1:-1:-1;13867:264:0;;;;;:::i;:::-;;:::i;16361:211::-;;;;;;;;;;-1:-1:-1;16361:211:0;;;;;:::i;:::-;;:::i;7645:24::-;;;;;;;;;;-1:-1:-1;7645:24:0;;;;-1:-1:-1;;;7645:24:0;;;;;;8533:43;;;;;;;;;;-1:-1:-1;8533:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17325:169;;;;;;;;;;-1:-1:-1;17325:169:0;;;;;:::i;:::-;;:::i;7332:44::-;;;;;;;;;;;;;;;8303:22;;;;;;;;;;;;;;;;10983:32;;;;;;;;;;;;;;;;14139:142;;;;;;;;;;-1:-1:-1;14139:142:0;;;;;:::i;:::-;;:::i;16022:331::-;;;;;;;;;;-1:-1:-1;16022:331:0;;;;;:::i;:::-;;:::i;7911:29::-;;;;;;;;;;;;;;;;8421:48;;;;;;;;;;-1:-1:-1;8421:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2803:141;;;;;;;;;;-1:-1:-1;2803:141:0;;;;;:::i;:::-;-1:-1:-1;;;;;2909:18:0;;;2882:7;2909:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2803:141;8080:50;;;;;;;;;;;;8127:3;8080:50;;7610:28;;;;;;;;;;-1:-1:-1;7610:28:0;;;;-1:-1:-1;;;;;7610:28:0;;;6435:198;;;;;;;;;;-1:-1:-1;6435:198:0;;;;;:::i;:::-;;:::i;25960:156::-;;;;;;;;;;-1:-1:-1;25960:156:0;;;;;:::i;:::-;;:::i;7439:54::-;;;;;;;;;;;;7486:6;7439:54;;13331:238;6086:13;:11;:13::i;:::-;13388:11:::1;::::0;-1:-1:-1;;;13388:11:0;::::1;;;13387:12;13379:41;;;;-1:-1:-1::0;;;13379:41:0::1;;;;;;;;;;;;13431:11;:18:::0;;-1:-1:-1;;;;13431:18:0::1;-1:-1:-1::0;;;13431:18:0::1;::::0;;13478:12:::1;13460:15;:30:::0;13518:15:::1;13501:14;:32:::0;13549:12:::1;::::0;::::1;::::0;13431:18;;13549:12:::1;13331:238::o:0;25170:445::-;10747:13;;-1:-1:-1;;;;;10747:13:0;10733:10;:27;10725:56;;;;-1:-1:-1;;;10725:56:0;;;;;;;;;;;;25240:12:::1;::::0;-1:-1:-1;;;25240:12:0;::::1;;;25239:13;25231:45;;;;-1:-1:-1::0;;;25231:45:0::1;;;;;;;;;;;;25312:6;::::0;;25355:7:::1;::::0;;25403:11:::1;::::0;;25287:22:::1;25425:10:::0;;;;25446:11;;;;25468:15;;;;25494:12:::1;:19:::0;;-1:-1:-1;;;;25494:19:0::1;-1:-1:-1::0;;;25494:19:0::1;::::0;;25529:78:::1;::::0;;2892:25:1;;;2948:2;2933:18;;2926:34;;;2976:18;;;2969:34;;;25312:6:0;;25355:7;25542:10:::1;::::0;25529:78:::1;::::0;2880:2:1;2865:18;25529:78:0::1;;;;;;;25220:395;;;25170:445::o:0;18184:148::-;6086:13;:11;:13::i;:::-;18255:16:::1;:24:::0;;;::::1;;-1:-1:-1::0;;;18255:24:0::1;-1:-1:-1::0;;;;18255:24:0;;::::1;;::::0;;18295:29:::1;::::0;::::1;::::0;::::1;::::0;18274:5;936:14:1;929:22;911:41;;899:2;884:18;;771:187;18295:29:0::1;;;;;;;;18184:148:::0;:::o;2168:77::-;2213:13;2237:5;2230:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:77;:::o;2950:190::-;3023:4;1213:10;3079:31;1213:10;3095:7;3104:5;3079:8;:31::i;:::-;3128:4;3121:11;;;2950:190;;;;;:::o;16580:214::-;6086:13;:11;:13::i;:::-;16682:9:::1;16677:110;16697:19:::0;;::::1;16677:110;;;16738:37;16756:8;;16765:1;16756:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16769:5;16738:17;:37::i;:::-;16718:3;;16677:110;;;;16580:214:::0;;;:::o;3146:247::-;3231:4;1213:10;3289:37;3305:4;1213:10;3320:5;3289:15;:37::i;:::-;3337:26;3347:4;3353:2;3357:5;3337:9;:26::i;:::-;-1:-1:-1;3381:4:0;;3146:247;-1:-1:-1;;;;3146:247:0:o;16802:515::-;10747:13;;-1:-1:-1;;;;;10747:13:0;10733:10;:27;10725:56;;;;-1:-1:-1;;;10725:56:0;;;;;;;;;;;;16913:9:::1;16908:402;16928:19:::0;;::::1;16908:402;;;16975:11;:24;16987:8;;16996:1;16987:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16975:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16975:24:0;;::::1;;16974:25;16973:84:::0;::::1;;;;17045:10;-1:-1:-1::0;;;;;17022:34:0::1;:8;;17031:1;17022:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17022:34:0::1;;;16973:84;:135;;;;-1:-1:-1::0;17102:4:0::1;17079:8:::0;;17088:1;17079:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17079:28:0::1;;;16973:135;:185;;;;-1:-1:-1::0;7430:1:0::1;17130:8:::0;;17139:1;17130:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17130:27:0::1;;;16973:185;:274;;;;;17181:16;:29;17198:8;;17207:1;17198:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17181:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17181:29:0;;::::1;;17180:30;:66:::0;::::1;;;;17215:18;:31;17234:8;;17243:1;17234:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17215:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17215:31:0;;::::1;;17214:32;17180:66;16969:329;;;17263:35;17279:8;;17288:1;17279:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;17292:5;17263:15;:35::i;:::-;16949:3;;16908:402;;18340:287:::0;6086:13;:11;:13::i;:::-;18448:9:::1;18443:177;18463:19:::0;;::::1;18443:177;;;18540:5;18504:20;:33;18525:8;;18534:1;18525:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18504:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18504:33:0;:41;;-1:-1:-1;;18504:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18565:43:::1;18589:8:::0;;18598:1;18589:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;18565:43;::::0;;-1:-1:-1;;;;;6692:32:1;;;6674:51;;6768:14;;6761:22;6756:2;6741:18;;6734:50;6647:18;18565:43:0::1;;;;;;;18484:3;;18443:177;;17502:674:::0;6086:13;:11;:13::i;:::-;17590:10:::1;17574:13;-1:-1:-1::0;;;;;17640:22:0;::::1;17636:481;;-1:-1:-1::0;17715:21:0::1;17679:12;17759:10:::0;17751:38:::1;;;;-1:-1:-1::0;;;17751:38:0::1;;;;;;;;;;;;17818;::::0;-1:-1:-1;;;;;17818:19:0;::::1;::::0;17845:6;;17818:38:::1;::::0;;;17845:6;17818:19;:38:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17804:52;;;;;17879:7;17871:39;;;;-1:-1:-1::0;;;17871:39:0::1;;;;;;;;;;;;17664:258;17636:481;;;17952:39;::::0;-1:-1:-1;;;17952:39:0;;17985:4:::1;17952:39;::::0;::::1;3673:51:1::0;-1:-1:-1;;;;;17952:24:0;::::1;::::0;::::1;::::0;3646:18:1;;17952:39:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17943:48;;18023:1;18014:6;:10;18006:41;;;;-1:-1:-1::0;;;18006:41:0::1;;;;;;;;;;;;18062:43;::::0;-1:-1:-1;;;18062:43:0;;18086:10:::1;18062:43;::::0;::::1;7368:51:1::0;7435:18;;;7428:34;;;-1:-1:-1;;;;;18062:23:0;::::1;::::0;::::1;::::0;7341:18:1;;18062:43:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17636:481;18132:36;::::0;;-1:-1:-1;;;;;7386:32:1;;7368:51;;7450:2;7435:18;;7428:34;;;18132:36:0::1;::::0;7341:18:1;18132:36:0::1;;;;;;;;17563:613;;17502:674:::0;:::o;14815:225::-;6086:13;:11;:13::i;:::-;14927:4:::1;14906:13;2484:12:::0;;;2414:85;14906:13:::1;:17;::::0;14922:1:::1;14906:17;:::i;:::-;14905:26;;;;:::i;:::-;14894:6;:38;;14886:65;;;;-1:-1:-1::0;;;14886:65:0::1;;;;;;;;;;;;14962:12;:21:::0;;;14999:33:::1;::::0;2654:25:1;;;14999:33:0::1;::::0;2642:2:1;2627:18;14999:33:0::1;2508:177:1::0;25721:233:0;6086:13;:11;:13::i;:::-;25847:9;25829:15:::1;25841:3:::0;25829:9;:15:::1;:::i;:::-;:27;;;;:::i;:::-;25860:3;25829:34;25821:68;;;::::0;-1:-1:-1;;;25821:68:0;;8582:2:1;25821:68:0::1;::::0;::::1;8564:21:1::0;8621:2;8601:18;;;8594:30;-1:-1:-1;;;8640:18:1;;;8633:51;8701:18;;25821:68:0::1;;;;;;;;;25911:35;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;25900:8:::1;:46:::0;;;;;;;;25721:233::o;15707:307::-;6086:13;:11;:13::i;:::-;15797:12:::1;::::0;-1:-1:-1;;;15797:12:0;::::1;;;15796:13;15788:45;;;;-1:-1:-1::0;;;15788:45:0::1;;;;;;;;;;;;8025:2;15852:7;:24;;15844:47;;;;-1:-1:-1::0;;;15844:47:0::1;;;;;;;;;;;;8025:2;15910:8;:25;;15902:48;;;;-1:-1:-1::0;;;15902:48:0::1;;;;;;;;;;;;15961:6;:16:::0;;;;15988:7:::1;:18:::0;15707:307::o;14289:148::-;6086:13;:11;:13::i;:::-;14362:15:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;14362:23:0::1;-1:-1:-1::0;;;;14362:23:0;;::::1;;::::0;;14401:28:::1;::::0;::::1;::::0;::::1;::::0;14380:5;936:14:1;929:22;911:41;;899:2;884:18;;771:187;6340:89:0;6086:13;:11;:13::i;:::-;6396:30:::1;6423:1;6396:18;:30::i;:::-;6340:89::o:0;15048:233::-;6086:13;:11;:13::i;:::-;15162:4:::1;15141:13;2484:12:::0;;;2414:85;15141:13:::1;:17;::::0;15157:1:::1;15141:17;:::i;:::-;15140:26;;;;:::i;:::-;15129:6;:38;;15121:65;;;;-1:-1:-1::0;;;15121:65:0::1;;;;;;;;;;;;15197:14;:23:::0;;;15236:37:::1;::::0;2654:25:1;;;15236:37:0::1;::::0;2642:2:1;2627:18;15236:37:0::1;2508:177:1::0;14586:221:0;6086:13;:11;:13::i;:::-;14697:4:::1;14676:13;2484:12:::0;;;2414:85;14676:13:::1;:17;::::0;14692:1:::1;14676:17;:::i;:::-;14675:26;;;;:::i;:::-;14664:6;:38;;14656:65;;;;-1:-1:-1::0;;;14656:65:0::1;;;;;;;;;;;;14732:11;:20:::0;;;14768:31:::1;::::0;2654:25:1;;;14768:31:0::1;::::0;2642:2:1;2627:18;14768:31:0::1;2508:177:1::0;2251:81:0;2298:13;2322:7;2315:14;;;;;:::i;15289:410::-;6086:13;:11;:13::i;:::-;15361:25:::1;15389:13;2484:12:::0;;;2414:85;15389:13:::1;15361:41:::0;-1:-1:-1;15457:7:0::1;15432:21;15361:41:::0;15452:1:::1;15432:21;:::i;:::-;15431:33;;;;:::i;:::-;15421:6;:43;;15413:70;;;;-1:-1:-1::0;;;15413:70:0::1;;;;;;;;;;;;15538:4;15513:21;:17:::0;15533:1:::1;15513:21;:::i;:::-;15512:30;;;;:::i;:::-;15502:6;:40;;15494:67;;;;-1:-1:-1::0;;;15494:67:0::1;;;;;;;;;;;;15591:13;::::0;;15615:22;;;;15653:38:::1;::::0;;8904:25:1;;;8960:2;8945:18;;8938:34;;;15653:38:0::1;::::0;8877:18:1;15653:38:0::1;8730:248:1::0;14445:133:0;6086:13;:11;:13::i;:::-;14511:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;14511:19:0::1;-1:-1:-1::0;;;;14511:19:0;;::::1;;::::0;;14546:24:::1;::::0;::::1;::::0;::::1;::::0;14525:5;936:14:1;929:22;911:41;;899:2;884:18;;771:187;2615:182:0;2684:4;1213:10;2740:27;1213:10;2757:2;2761:5;2740:9;:27::i;13577:282::-;6086:13;:11;:13::i;:::-;-1:-1:-1;;;;;13661:26:0;::::1;13653:53;;;;-1:-1:-1::0;;;13653:53:0::1;;;;;;;;;;;;13737:15;::::0;;-1:-1:-1;;;;;13763:28:0;;::::1;-1:-1:-1::0;;;;;;13763:28:0;::::1;::::0;::::1;::::0;;;13807:44:::1;::::0;;9157:51:1;;;13737:15:0;::::1;9239:2:1::0;9224:18;;9217:60;;;13737:15:0;13807:44:::1;::::0;9130:18:1;13807:44:0::1;;;;;;;;13642:217;13577:282:::0;:::o;13867:264::-;6086:13;:11;:13::i;:::-;-1:-1:-1;;;;;13951:26:0;::::1;13943:53;;;;-1:-1:-1::0;;;13943:53:0::1;;;;;;;;;;;;14027:9;::::0;;-1:-1:-1;;;;;14047:22:0;;::::1;-1:-1:-1::0;;;;;;14047:22:0;::::1;::::0;::::1;::::0;;;14085:38:::1;::::0;;9157:51:1;;;14027:9:0;::::1;9239:2:1::0;9224:18;;9217:60;;;14027:9:0;14085:38:::1;::::0;9130:18:1;14085:38:0::1;8983:300:1::0;16361:211:0;6086:13;:11;:13::i;:::-;16461:9:::1;16456:109;16476:19:::0;;::::1;16456:109;;;16517:36;16534:8;;16543:1;16534:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16547:5;16517:16;:36::i;:::-;16497:3;;16456:109;;17325:169:::0;6086:13;:11;:13::i;:::-;-1:-1:-1;;;;;17413:17:0;::::1;;::::0;;;:11:::1;:17;::::0;;;;;::::1;;17412:18;17404:45;;;;-1:-1:-1::0;;;17404:45:0::1;;;;;;;;;;;;17460:26;17474:4;17480:5;17460:13;:26::i;:::-;17325:169:::0;;:::o;14139:142::-;6086:13;:11;:13::i;:::-;14210::::1;:21:::0;;;::::1;;-1:-1:-1::0;;;14210:21:0::1;-1:-1:-1::0;;;;14210:21:0;;::::1;;::::0;;14247:26:::1;::::0;::::1;::::0;::::1;::::0;14226:5;936:14:1;929:22;911:41;;899:2;884:18;;771:187;16022:331:0;6086:13;:11;:13::i;:::-;16110:12:::1;::::0;-1:-1:-1;;;16110:12:0;::::1;;;16109:13;16101:45;;;;-1:-1:-1::0;;;16101:45:0::1;;;;;;;;;;;;8025:2;16165:12;:29;;16157:52;;;;-1:-1:-1::0;;;16157:52:0::1;;;;;;;;;;;;16239:11;::::0;;16261:26;;;;16303:42:::1;::::0;;8904:25:1;;;8960:2;8945:18;;8938:34;;;16303:42:0::1;::::0;8877:18:1;16303:42:0::1;8730:248:1::0;6435:198:0;6086:13;:11;:13::i;:::-;-1:-1:-1;;;;;6520:22:0;::::1;6516:71;;6553:31;::::0;-1:-1:-1;;;6553:31:0;;6581:1:::1;6553:31;::::0;::::1;3673:51:1::0;3646:18;;6553:31:0::1;3527:203:1::0;6516:71:0::1;6597:28;6616:8;6597:18;:28::i;:::-;6435:198:::0;:::o;25960:156::-;6086:13;:11;:13::i;:::-;-1:-1:-1;;;;;26040:18:0;::::1;26032:43;;;::::0;-1:-1:-1;;;26032:43:0;;9490:2:1;26032:43:0::1;::::0;::::1;9472:21:1::0;9529:2;9509:18;;;9502:30;-1:-1:-1;;;9548:18:1;;;9541:42;9600:18;;26032:43:0::1;9288:336:1::0;26032:43:0::1;26086:15;:22:::0;;-1:-1:-1;;;;;;26086:22:0::1;-1:-1:-1::0;;;;;26086:22:0;;;::::1;::::0;;;::::1;::::0;;25960:156::o;6190:144::-;6157:7;6175:6;-1:-1:-1;;;;;6175:6:0;1213:10;6250:23;6246:81;;6284:40;;-1:-1:-1;;;6284:40:0;;1213:10;6284:40;;;3673:51:1;3646:18;;6284:40:0;3527:203:1;4671:130:0;4756:37;4765:5;4772:7;4781:5;4788:4;4756:8;:37::i;:::-;4671:130;;;:::o;24643:177::-;-1:-1:-1;;;;;24727:27:0;;;;;;:18;:27;;;;;;;;;:35;;-1:-1:-1;;24727:35:0;;;;;;;;;;24778:34;;6674:51:1;;;6741:18;;;6734:50;24778:34:0;;6647:18:1;24778:34:0;6506:284:1;5187:425:0;-1:-1:-1;;;;;2909:18:0;;;5285:24;2909:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;5352:37:0;;5348:257;;5429:5;5410:16;:24;5406:102;;;5445:60;;-1:-1:-1;;;5445:60:0;;-1:-1:-1;;;;;9849:32:1;;5445:60:0;;;9831:51:1;9898:18;;;9891:34;;;9941:18;;;9934:34;;;9804:18;;5445:60:0;9629:345:1;5406:102:0;5534:57;5543:5;5550:7;5578:5;5559:16;:24;5585:5;5534:8;:57::i;3399:264::-;-1:-1:-1;;;;;3483:18:0;;3479:66;;3512:30;;-1:-1:-1;;;3512:30:0;;3539:1;3512:30;;;3673:51:1;3646:18;;3512:30:0;3527:203:1;3479:66:0;-1:-1:-1;;;;;3559:16:0;;3555:66;;3586:32;;-1:-1:-1;;;3586:32:0;;3615:1;3586:32;;;3673:51:1;3646:18;;3586:32:0;3527:203:1;3555:66:0;3631:24;3639:4;3645:2;3649:5;3631:7;:24::i;24826:170::-;-1:-1:-1;;;;;24908:24:0;;;;;;:15;:24;;;;;;;;;:32;;-1:-1:-1;;24908:32:0;;;;;;;;;;24956;;6674:51:1;;;6741:18;;;6734:50;24956:32:0;;6647:18:1;24956:32:0;6506:284:1;12933:390:0;13008:16;6175:6;-1:-1:-1;;;;;6175:6:0;13049:24;;13045:139;;13090:33;13107:8;13117:5;13090:16;:33::i;:::-;13138:34;13156:8;13166:5;13138:17;:34::i;:::-;13194:32;13211:8;13221:4;13194:16;:32::i;:::-;13237:33;13255:8;13265:4;13237:17;:33::i;:::-;13281:34;13306:8;13281:24;:34::i;24465:172::-;-1:-1:-1;;;;;24548:25:0;;;;;;:16;:25;;;;;;;;;:33;;-1:-1:-1;;24548:33:0;;;;;;;;;;24597:32;;6674:51:1;;;6741:18;;;6734:50;24597:32:0;;6647:18:1;24597:32:0;6506:284:1;25002:162:0;-1:-1:-1;;;;;25079:17:0;;;;;;:11;:17;;;;;;;;;:25;;-1:-1:-1;;25079:25:0;;;;;;;;;;25120:36;;6674:51:1;;;6741:18;;;6734:50;25120:36:0;;6647:18:1;25120:36:0;6506:284:1;4807:374:0;-1:-1:-1;;;;;4917:19:0;;4913:69;;4947:32;;-1:-1:-1;;;4947:32:0;;4976:1;4947:32;;;3673:51:1;3646:18;;4947:32:0;3527:203:1;4913:69:0;-1:-1:-1;;;;;4996:21:0;;4992:70;;5028:31;;-1:-1:-1;;;5028:31:0;;5056:1;5028:31;;;3673:51:1;3646:18;;5028:31:0;3527:203:1;4992:70:0;-1:-1:-1;;;;;5072:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;5118:56;;;;5156:7;-1:-1:-1;;;;;5140:31:0;5149:5;-1:-1:-1;;;;;5140:31:0;;5165:5;5140:31;;;;2654:25:1;;2642:2;2627:18;;2508:177;5140:31:0;;;;;;;;4807:374;;;;:::o;18773:4453::-;-1:-1:-1;;;;;18951:21:0;;18867:14;18951:21;;;:15;:21;;;;;;18884:10;;18922:9;;18951:21;;18950:22;18942:54;;;;-1:-1:-1;;;18942:54:0;;;;;;;;;;;;19025:4;-1:-1:-1;;;;;19015:14:0;:6;-1:-1:-1;;;;;19015:14:0;;:42;;;-1:-1:-1;;;;;;19034:23:0;;;;;;:15;:23;;;;;;;;19033:24;19015:42;19007:74;;;;-1:-1:-1;;;19007:74:0;;;;;;;;;;;;19110:4;-1:-1:-1;;;;;19100:14:0;:6;-1:-1:-1;;;;;19100:14:0;;:34;;;;19128:6;-1:-1:-1;;;;;19118:16:0;:6;-1:-1:-1;;;;;19118:16:0;;19100:34;:62;;;-1:-1:-1;;;;;;19139:23:0;;;;;;:15;:23;;;;;;;;19138:24;19100:62;19092:94;;;;-1:-1:-1;;;19092:94:0;;;;;;;;;;;;19205:11;;-1:-1:-1;;;19205:11:0;;;;;:39;;-1:-1:-1;;;;;;19220:24:0;;;;;;:18;:24;;;;;;;;19205:39;:65;;;-1:-1:-1;;;;;;19248:22:0;;;;;;:18;:22;;;;;;;;19205:65;19197:90;;;;-1:-1:-1;;;19197:90:0;;;;;;;;;;;;19302:11;;-1:-1:-1;;;19302:11:0;;;;:31;;;;-1:-1:-1;19317:16:0;;-1:-1:-1;;;19317:16:0;;;;19302:31;19298:350;;;19350:29;19397:15;;19382:12;:30;;;;:::i;:::-;19350:62;;19431:21;19456:1;19431:26;19427:210;;-1:-1:-1;;;;;19482:17:0;;;;;;:11;:17;;;;;;;;:44;;;;-1:-1:-1;;;;;;19504:22:0;;;;;;:18;:22;;;;;;;;19503:23;19482:44;19478:144;;;-1:-1:-1;;;;;19559:24:0;;;;;;:20;:24;;;;;;;;19551:51;;;;-1:-1:-1;;;19551:51:0;;;;;;;;;;;;19335:313;19298:350;19677:13;;19658:16;;-1:-1:-1;;;19677:13:0;;;;:31;;;;-1:-1:-1;19695:13:0;;-1:-1:-1;;;19695:13:0;;;;19694:14;19677:31;:88;;;;-1:-1:-1;;;;;;19714:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;19742:22:0;;;;;;:18;:22;;;;;;;;19714:50;19712:53;19677:88;19658:107;;19780:11;19776:1688;;;6157:7;6175:6;-1:-1:-1;;;;;19812:15:0;;;6175:6;;19812:15;;;;:32;;-1:-1:-1;6157:7:0;6175:6;-1:-1:-1;;;;;19831:13:0;;;6175:6;;19831:13;;19812:32;:54;;;;-1:-1:-1;;;;;;19848:18:0;;;;19812:54;:76;;;;-1:-1:-1;;;;;;19870:18:0;;7486:6;19870:18;;19812:76;19808:1645;;;19913:15;;-1:-1:-1;;;19913:15:0;;;;19909:414;;;19971:10;-1:-1:-1;;;;;19957:25:0;:2;-1:-1:-1;;;;;19957:25:0;;;:43;;;;;19992:8;-1:-1:-1;;;;;19986:14:0;:2;-1:-1:-1;;;;;19986:14:0;;;19957:43;19953:351;;;20066:16;20081:1;20066:12;:16;:::i;:::-;-1:-1:-1;;;;;20037:26:0;;;;;;:18;:26;;;;;;:45;:90;;;;-1:-1:-1;20111:16:0;20126:1;20111:12;:16;:::i;:::-;-1:-1:-1;;;;;20086:22:0;;;;;;:18;:22;;;;;;:41;20037:90;20029:119;;;;-1:-1:-1;;;20029:119:0;;;;;;;;;;;;-1:-1:-1;;;;;20175:26:0;;;;;;;:18;:26;;;;;;20204:12;20175:41;;;;20243:22;;;;;;;:37;19953:351;20384:11;;20341:20;;-1:-1:-1;;;20384:11:0;;;;20380:496;;;20420:29;20467:15;;20452:12;:30;;;;:::i;:::-;20420:62;;20509:21;20534:1;20509:26;20505:277;;20620:5;8127:3;20580:13;2484:12;;;2414:85;20580:13;:36;;;;:::i;:::-;20579:46;;;;:::i;:::-;20564:61;;20505:277;;;2484:12;;20737:13;:21;;-1:-1:-1;;;;20737:21:0;;;20682:28;-1:-1:-1;20505:277:0;20397:404;20380:496;;;-1:-1:-1;20845:11:0;;20380:496;-1:-1:-1;;;;;20898:17:0;;;;;;:11;:17;;;;;;;;:44;;;;-1:-1:-1;;;;;;20920:22:0;;;;;;:18;:22;;;;;;;;20919:23;20898:44;20894:544;;;20985:12;20975:6;:22;;20967:53;;;;-1:-1:-1;;;20967:53:0;;;;;;;;;;;;21077:12;21060:13;21070:2;-1:-1:-1;;;;;2588:18:0;2570:7;2588:18;;;:9;:18;;;;;;;2505:104;21060:13;21051:22;;:6;:22;:::i;:::-;:38;;21043:72;;;;-1:-1:-1;;;21043:72:0;;;;;;;;;;;;20894:544;;;-1:-1:-1;;;;;21145:15:0;;;;;;:11;:15;;;;;;;;:44;;;;-1:-1:-1;;;;;;21165:24:0;;;;;;:18;:24;;;;;;;;21164:25;21145:44;21141:297;;;21232:12;21222:6;:22;;21214:54;;;;-1:-1:-1;;;21214:54:0;;;;;;;;;;;21141:297;-1:-1:-1;;;;;21299:22:0;;;;;;:18;:22;;;;;;;;21294:144;;21380:12;21363:13;21373:2;-1:-1:-1;;;;;2588:18:0;2570:7;2588:18;;;:9;:18;;;;;;;2505:104;21363:13;21354:22;;:6;:22;:::i;:::-;:38;;21346:72;;;;-1:-1:-1;;;21346:72:0;;;;;;;;;;;;19890:1563;19808:1645;21490:11;;21474:13;;-1:-1:-1;;;21490:11:0;;;;:29;;;;-1:-1:-1;21506:13:0;;-1:-1:-1;;;21506:13:0;;;;21505:14;21490:29;:82;;;;-1:-1:-1;;;;;;21525:22:0;;;;;;:16;:22;;;;;;;;;:46;;-1:-1:-1;;;;;;21551:20:0;;;;;;:16;:20;;;;;;;;21525:46;21523:49;21490:82;21474:98;;21587:8;21583:1199;;;21727:11;;21612:17;;;;;;-1:-1:-1;;;21727:11:0;;;;21723:489;;;21759:29;21806:15;;21791:12;:30;;;;:::i;:::-;21759:62;;21844:21;21869:1;21844:26;21840:251;;21911:1;21895:17;;21952:1;21935:18;;21840:251;;;22018:6;;22002:22;;22064:7;;22047:24;;21840:251;21740:366;21723:489;;;-1:-1:-1;;22147:6:0;;22189:7;;;21723:489;-1:-1:-1;;;;;22232:15:0;;;;;;:11;:15;;;;;;;;:37;;;;;22268:1;22251:14;:18;22232:37;22228:392;;;22330:3;22303:23;22312:14;22303:6;:23;:::i;:::-;22302:31;;;;:::i;:::-;22290:43;;22228:392;;;-1:-1:-1;;;;;22359:17:0;;;;;;:11;:17;;;;;;;;:38;;;;;22396:1;22380:13;:17;22359:38;22355:265;;;22457:3;22431:22;22440:13;22431:6;:22;:::i;22355:265::-;-1:-1:-1;;;;;22487:15:0;;;;;;:11;:15;;;;;;;;22486:16;:38;;;;-1:-1:-1;;;;;;22507:17:0;;;;;;:11;:17;;;;;;;;22506:18;22486:38;:57;;;;;22542:1;22528:11;;:15;22486:57;22482:138;;;22601:3;22586:11;;22577:6;:20;;;;:::i;:::-;22576:28;;;;:::i;:::-;22564:40;;22482:138;22638:13;;22634:137;;22672:19;22682:9;22672:19;;:::i;:::-;;;22710:45;22724:4;22738;22745:9;22710:13;:45::i;:::-;21597:1185;;;21583:1199;22841:4;22792:28;2588:18;;;:9;:18;;;;;;22897:13;;22873:37;;;22925:8;:30;;;;-1:-1:-1;;;;;;22938:17:0;;;;;;:11;:17;;;;;;;;22937:18;22925:30;:41;;;;;22959:7;22925:41;22921:256;;;23002:13;;22987:12;:28;:62;;;;;23034:15;;23019:12;:30;22987:62;22983:183;;;23070:33;23082:20;23070:11;:33::i;:::-;23138:12;23122:13;:28;22983:183;23187:31;23201:4;23207:2;23211:6;23187:13;:31::i;:::-;18856:4370;;;;;;18773:4453;;;:::o;6639:191::-;6713:16;6732:6;;-1:-1:-1;;;;;6749:17:0;;;-1:-1:-1;;;;;;6749:17:0;;;;;;6782:40;;6732:6;;;;;;;6782:40;;6713:16;6782:40;6702:128;6639:191;:::o;3669:604::-;-1:-1:-1;;;;;3757:18:0;;3753:309;;3808:5;3792:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;3753:309:0;;-1:-1:-1;3753:309:0;;-1:-1:-1;;;;;3868:15:0;;3846:19;3868:15;;;:9;:15;;;;;;3902:19;;;3898:87;;;3932:50;;-1:-1:-1;;;3932:50:0;;-1:-1:-1;;;;;9849:32:1;;3932:50:0;;;9831:51:1;9898:18;;;9891:34;;;9941:18;;;9934:34;;;9804:18;;3932:50:0;9629:345:1;3898:87:0;-1:-1:-1;;;;;4011:15:0;;;;;;:9;:15;;;;;4029:19;;;;4011:37;;3753:309;-1:-1:-1;;;;;4076:16:0;;4072:153;;4121:12;:21;;;;;;;4072:153;;;-1:-1:-1;;;;;4189:13:0;;;;;;:9;:13;;;;;:22;;;;;;4072:153;4255:2;-1:-1:-1;;;;;4240:25:0;4249:4;-1:-1:-1;;;;;4240:25:0;;4259:5;4240:25;;;;2654::1;;2642:2;2627:18;;2508:177;4240:25:0;;;;;;;;3669:604;;;:::o;23234:1225::-;10607:13;:20;;-1:-1:-1;;;;10607:20:0;-1:-1:-1;;;10607:20:0;;;23367:16:::1;::::0;;23381:1:::1;23367:16:::0;;;;;::::1;::::0;;-1:-1:-1;;;;23367:16:0;23381:1;23367:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23367:16:0::1;23343:40;;23412:4;23394;23399:1;23394:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;23394:23:0::1;;;-1:-1:-1::0;;;;;23394:23:0::1;;;::::0;::::1;23438:10;-1:-1:-1::0;;;;;23438:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23428:4;23433:1;23428:7;;;;;;;;:::i;:::-;;;;;;:27;-1:-1:-1::0;;;;;23428:27:0::1;;;-1:-1:-1::0;;;;;23428:27:0::1;;;::::0;::::1;23466:21;23490:13;;23506:2;23490:18;;;;:::i;:::-;23466:42;;23537:13;23523:11;:27;23519:87;;;23581:13;23567:27;;23519:87;23616:115;::::0;-1:-1:-1;;;23616:115:0;;-1:-1:-1;;;;;23616:10:0::1;:61;::::0;::::1;::::0;:115:::1;::::0;23678:11;;23691:1:::1;::::0;23694:4;;23708::::1;::::0;23715:15:::1;::::0;23616:115:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23742:18;23763:21;23742:42;;23816:10;23795:17;;:31;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;23837:42:0::1;::::0;;::::1;::::0;::::1;::::0;;23871:8:::1;23837:42:::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;23894:17:::1;::::0;11068:8:::1;-1:-1:-1::0;23890:109:0::1;;;23968:19;;;;;;;;23977:2;23968:19;;;;23981:2;23968:19;;;;23985:1;23968:19;;::::0;23950:37:::1;;23890:109;24049:25:::0;;24009:23:::1;::::0;24078:3:::1;::::0;24036:38:::1;::::0;:10;:38:::1;:::i;:::-;24035:46;;;;:::i;:::-;24009:72;;24092:17;24149:3;24126:15;:19;;;24113:10;:32;;;;:::i;:::-;24112:40;;;;:::i;:::-;24092:60:::0;-1:-1:-1;24163:17:0::1;24092:60:::0;24183:28:::1;24196:15:::0;24183:10;:28:::1;:::i;:::-;:40;;;;:::i;:::-;24256:15;::::0;24248:57:::1;::::0;24163:60;;-1:-1:-1;;;;;;24256:15:0::1;::::0;24285;;24248:57:::1;::::0;;;24285:15;24256;24248:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;24338:9:0::1;::::0;24330:45:::1;::::0;24234:71;;-1:-1:-1;;;;;;24338:9:0::1;::::0;24361;;24330:45:::1;::::0;;;24361:9;24338;24330:45:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;24408:15:0::1;::::0;24400:51:::1;::::0;24316:59;;-1:-1:-1;;;;;;24408:15:0::1;::::0;24437:9;;24400:51:::1;::::0;;;24437:9;24408:15;24400:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;10650:13:0;:21;;-1:-1:-1;;;;10650:21:0;;;-1:-1:-1;;;;;;;;;;23234:1225:0:o;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:241;193:6;246:2;234:9;225:7;221:23;217:32;214:52;;;262:1;259;252:12;214:52;301:9;288:23;320:28;342:5;320:28;:::i;:::-;367:5;137:241;-1:-1:-1;;;137:241:1:o;383:131::-;-1:-1:-1;;;;;458:31:1;;448:42;;438:70;;504:1;501;494:12;519:247;578:6;631:2;619:9;610:7;606:23;602:32;599:52;;;647:1;644;637:12;599:52;686:9;673:23;705:31;730:5;705:31;:::i;963:418::-;1112:2;1101:9;1094:21;1075:4;1144:6;1138:13;1187:6;1182:2;1171:9;1167:18;1160:34;1246:6;1241:2;1233:6;1229:15;1224:2;1213:9;1209:18;1203:50;1302:1;1297:2;1288:6;1277:9;1273:22;1269:31;1262:42;1372:2;1365;1361:7;1356:2;1348:6;1344:15;1340:29;1329:9;1325:45;1321:54;1313:62;;;963:418;;;;:::o;1386:367::-;1454:6;1462;1515:2;1503:9;1494:7;1490:23;1486:32;1483:52;;;1531:1;1528;1521:12;1483:52;1570:9;1557:23;1589:31;1614:5;1589:31;:::i;:::-;1639:5;1717:2;1702:18;;;;1689:32;;-1:-1:-1;;;1386:367:1:o;1758:745::-;1850:6;1858;1866;1919:2;1907:9;1898:7;1894:23;1890:32;1887:52;;;1935:1;1932;1925:12;1887:52;1975:9;1962:23;2008:18;2000:6;1997:30;1994:50;;;2040:1;2037;2030:12;1994:50;2063:22;;2116:4;2108:13;;2104:27;-1:-1:-1;2094:55:1;;2145:1;2142;2135:12;2094:55;2185:2;2172:16;2211:18;2203:6;2200:30;2197:50;;;2243:1;2240;2233:12;2197:50;2298:7;2291:4;2281:6;2278:1;2274:14;2270:2;2266:23;2262:34;2259:47;2256:67;;;2319:1;2316;2309:12;2256:67;2350:4;2342:13;;;;-1:-1:-1;2374:6:1;-1:-1:-1;2415:20:1;;2402:34;2445:28;2402:34;2445:28;:::i;:::-;2492:5;2482:15;;;1758:745;;;;;:::o;3014:508::-;3091:6;3099;3107;3160:2;3148:9;3139:7;3135:23;3131:32;3128:52;;;3176:1;3173;3166:12;3128:52;3215:9;3202:23;3234:31;3259:5;3234:31;:::i;:::-;3284:5;-1:-1:-1;3341:2:1;3326:18;;3313:32;3354:33;3313:32;3354:33;:::i;:::-;3014:508;;3406:7;;-1:-1:-1;;;3486:2:1;3471:18;;;;3458:32;;3014:508::o;3924:226::-;3983:6;4036:2;4024:9;4015:7;4011:23;4007:32;4004:52;;;4052:1;4049;4042:12;4004:52;-1:-1:-1;4097:23:1;;3924:226;-1:-1:-1;3924:226:1:o;4155:466::-;4232:6;4240;4248;4301:2;4289:9;4280:7;4276:23;4272:32;4269:52;;;4317:1;4314;4307:12;4269:52;-1:-1:-1;;4362:23:1;;;4482:2;4467:18;;4454:32;;-1:-1:-1;4585:2:1;4570:18;;;4557:32;;4155:466;-1:-1:-1;4155:466:1:o;4626:346::-;4694:6;4702;4755:2;4743:9;4734:7;4730:23;4726:32;4723:52;;;4771:1;4768;4761:12;4723:52;-1:-1:-1;;4816:23:1;;;4936:2;4921:18;;;4908:32;;-1:-1:-1;4626:346:1:o;4977:382::-;5042:6;5050;5103:2;5091:9;5082:7;5078:23;5074:32;5071:52;;;5119:1;5116;5109:12;5071:52;5158:9;5145:23;5177:31;5202:5;5177:31;:::i;:::-;5227:5;-1:-1:-1;5284:2:1;5269:18;;5256:32;5297:30;5256:32;5297:30;:::i;:::-;5346:7;5336:17;;;4977:382;;;;;:::o;5596:388::-;5664:6;5672;5725:2;5713:9;5704:7;5700:23;5696:32;5693:52;;;5741:1;5738;5731:12;5693:52;5780:9;5767:23;5799:31;5824:5;5799:31;:::i;:::-;5849:5;-1:-1:-1;5906:2:1;5891:18;;5878:32;5919:33;5878:32;5919:33;:::i;5989:380::-;6068:1;6064:12;;;;6111;;;6132:61;;6186:4;6178:6;6174:17;6164:27;;6132:61;6239:2;6231:6;6228:14;6208:18;6205:38;6202:161;;6285:10;6280:3;6276:20;6273:1;6266:31;6320:4;6317:1;6310:15;6348:4;6345:1;6338:15;6202:161;;5989:380;;;:::o;6374:127::-;6435:10;6430:3;6426:20;6423:1;6416:31;6466:4;6463:1;6456:15;6490:4;6487:1;6480:15;7005:184;7075:6;7128:2;7116:9;7107:7;7103:23;7099:32;7096:52;;;7144:1;7141;7134:12;7096:52;-1:-1:-1;7167:16:1;;7005:184;-1:-1:-1;7005:184:1:o;7473:245::-;7540:6;7593:2;7581:9;7572:7;7568:23;7564:32;7561:52;;;7609:1;7606;7599:12;7561:52;7641:9;7635:16;7660:28;7682:5;7660:28;:::i;7723:127::-;7784:10;7779:3;7775:20;7772:1;7765:31;7815:4;7812:1;7805:15;7839:4;7836:1;7829:15;7855:168;7928:9;;;7959;;7976:15;;;7970:22;;7956:37;7946:71;;7997:18;;:::i;8028:217::-;8068:1;8094;8084:132;;8138:10;8133:3;8129:20;8126:1;8119:31;8173:4;8170:1;8163:15;8201:4;8198:1;8191:15;8084:132;-1:-1:-1;8230:9:1;;8028:217::o;8250:125::-;8315:9;;;8336:10;;;8333:36;;;8349:18;;:::i;9979:128::-;10046:9;;;10067:11;;;10064:37;;;10081:18;;:::i;10244:251::-;10314:6;10367:2;10355:9;10346:7;10342:23;10338:32;10335:52;;;10383:1;10380;10373:12;10335:52;10415:9;10409:16;10434:31;10459:5;10434:31;:::i;10500:959::-;10762:4;10810:3;10799:9;10795:19;10841:6;10830:9;10823:25;10884:6;10879:2;10868:9;10864:18;10857:34;10927:3;10922:2;10911:9;10907:18;10900:31;10951:6;10986;10980:13;11017:6;11009;11002:22;11055:3;11044:9;11040:19;11033:26;;11094:2;11086:6;11082:15;11068:29;;11115:1;11125:195;11139:6;11136:1;11133:13;11125:195;;;11204:13;;-1:-1:-1;;;;;11200:39:1;11188:52;;11269:2;11295:15;;;;11260:12;;;;11236:1;11154:9;11125:195;;;-1:-1:-1;;;;;;;11376:32:1;;;;11371:2;11356:18;;11349:60;-1:-1:-1;;11440:3:1;11425:19;11418:35;11337:3;10500:959;-1:-1:-1;;;10500:959:1:o
Swarm Source
ipfs://92f9107fe7804c6d4a9244bd90b9d34c2dbddf23471d02d5fb00f7c2c4a0e9cd
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)