Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 3,168 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 39369297 | 2 days ago | IN | 0 ETH | 0.00000008 | ||||
| Approve | 39284507 | 4 days ago | IN | 0 ETH | 0.00000001 | ||||
| Approve | 37739498 | 39 days ago | IN | 0 ETH | 0.00000143 | ||||
| Approve | 37690124 | 40 days ago | IN | 0 ETH | 0.00000047 | ||||
| Approve | 37492943 | 45 days ago | IN | 0 ETH | 0.00000033 | ||||
| Approve | 37475785 | 45 days ago | IN | 0 ETH | 0.00000027 | ||||
| Approve | 37475773 | 45 days ago | IN | 0 ETH | 0.00000028 | ||||
| Approve | 37475767 | 45 days ago | IN | 0 ETH | 0.00000016 | ||||
| Approve | 37475757 | 45 days ago | IN | 0 ETH | 0.00000028 | ||||
| Approve | 37475750 | 45 days ago | IN | 0 ETH | 0.00000029 | ||||
| Approve | 37475737 | 45 days ago | IN | 0 ETH | 0.00000016 | ||||
| Approve | 37475732 | 45 days ago | IN | 0 ETH | 0.00000016 | ||||
| Approve | 37475703 | 45 days ago | IN | 0 ETH | 0.00000016 | ||||
| Approve | 37475693 | 45 days ago | IN | 0 ETH | 0.00000016 | ||||
| Approve | 37475687 | 45 days ago | IN | 0 ETH | 0.00000016 | ||||
| Approve | 37475673 | 45 days ago | IN | 0 ETH | 0.00000016 | ||||
| Approve | 37475671 | 45 days ago | IN | 0 ETH | 0.00000016 | ||||
| Approve | 37475669 | 45 days ago | IN | 0 ETH | 0.00000016 | ||||
| Approve | 37475667 | 45 days ago | IN | 0 ETH | 0.00000016 | ||||
| Approve | 37475665 | 45 days ago | IN | 0 ETH | 0.00000018 | ||||
| Approve | 37404615 | 47 days ago | IN | 0 ETH | 0.00000026 | ||||
| Approve | 37240369 | 51 days ago | IN | 0 ETH | 0.00000061 | ||||
| Approve | 37240354 | 51 days ago | IN | 0 ETH | 0.0000006 | ||||
| Approve | 37220880 | 51 days ago | IN | 0 ETH | 0.00000028 | ||||
| Approve | 37139748 | 53 days ago | IN | 0 ETH | 0.00000065 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 32740417 | 155 days ago | 0.0265804 ETH | ||||
| 32740417 | 155 days ago | 0.0265804 ETH | ||||
| 23795567 | 362 days ago | 0.05909904 ETH | ||||
| 23795567 | 362 days ago | 0.05909904 ETH | ||||
| 21781944 | 409 days ago | 0.1416856 ETH | ||||
| 21781944 | 409 days ago | 0.1416856 ETH | ||||
| 21376026 | 418 days ago | 0.06137833 ETH | ||||
| 21376026 | 418 days ago | 0.06137833 ETH | ||||
| 21375638 | 418 days ago | 0.07833784 ETH | ||||
| 21375638 | 418 days ago | 0.07833784 ETH | ||||
| 19214869 | 468 days ago | 0.02497187 ETH | ||||
| 19214869 | 468 days ago | 0.02497187 ETH | ||||
| 17528247 | 507 days ago | 0.01317435 ETH | ||||
| 17528247 | 507 days ago | 0.01317435 ETH | ||||
| 16222013 | 537 days ago | 0.01271461 ETH | ||||
| 16222013 | 537 days ago | 0.01271461 ETH | ||||
| 15752581 | 548 days ago | 0.02217525 ETH | ||||
| 15752581 | 548 days ago | 0.02217525 ETH | ||||
| 14843511 | 569 days ago | 0.03233045 ETH | ||||
| 14843511 | 569 days ago | 0.03233045 ETH | ||||
| 14057107 | 588 days ago | 0.01862175 ETH | ||||
| 14057107 | 588 days ago | 0.01862175 ETH | ||||
| 13736041 | 595 days ago | 0.02346833 ETH | ||||
| 13736041 | 595 days ago | 0.02346833 ETH | ||||
| 13588143 | 598 days ago | 0.03641723 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Integer
Compiler Version
v0.8.23+commit.f704f362
Contract Source Code (Solidity)
/**
*Submitted for verification at basescan.org on 2024-03-08
*/
// SPDX-License-Identifier: MIT
/*
Website: https://www.intbase.xyz/
Twitter: https://twitter.com/INTINT345688
Telegram: https://t.me/integerINT
Dune Dashboard: https://dune.com/integer/int
_ _ _ _____ _____ ___ _____ _____
| | | \ | | |_ _| | ___| / __| | ___| | __ \
| | | \ | | | | | |___ | | | |___ | |__) |
| | | |\\| | | | | ___| | | _ | ___| | _ /
| | | | \ | | | | |___ | |_| | | |___ | | \ \
|_| |_| \_| |_| |_____| \____| |_____| |_| \_\
Integer Coin synergizes advanced mechanical engineering concepts,
with sophisticated deflationary algorithms, incorporating tax evasion thresholds
and algorithmic burn cycles, further elevated by a proprietary "Teleport" mechanism
and integer-only transactions. Integrated with exclusive holder incentives and a
highly restricted token issuance of merely 4096 units, it delineates a cutting-edge,
user-focused economic architecture engineered to accelerate market liquidity,
stimulate growth, and sustain long-term asset appreciation.
*/
pragma solidity 0.8.23;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(
address recipient,
uint256 amount
) external returns (bool);
function allowance(
address owner,
address spender
) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
interface IUniswapV2Factory {
event PairCreated(
address indexed token0,
address indexed token1,
address pair,
uint256
);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(
address tokenA,
address tokenB
) external view returns (address pair);
function allPairs(uint256) external view returns (address pair);
function allPairsLength() external view returns (uint256);
function createPair(
address tokenA,
address tokenB
) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
event Transfer(address indexed from, address indexed to, uint256 value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address owner) external view returns (uint256);
function allowance(
address owner,
address spender
) external view returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(
address from,
address to,
uint256 value
) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint256);
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
event Mint(address indexed sender, uint256 amount0, uint256 amount1);
event Burn(
address indexed sender,
uint256 amount0,
uint256 amount1,
address indexed to
);
event Swap(
address indexed sender,
uint256 amount0In,
uint256 amount1In,
uint256 amount0Out,
uint256 amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint256);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves()
external
view
returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint256);
function price1CumulativeLast() external view returns (uint256);
function kLast() external view returns (uint256);
function mint(address to) external returns (uint256 liquidity);
function burn(
address to
) external returns (uint256 amount0, uint256 amount1);
function swap(
uint256 amount0Out,
uint256 amount1Out,
address to,
bytes calldata data
) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router02 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint256 amountADesired,
uint256 amountBDesired,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
_transferOwnership(_msgSender());
}
function owner() public view virtual returns (address) {
return _owner;
}
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(
newOwner != address(0),
"Ownable: new owner is the zero address"
);
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
uint8 private _decimals;
constructor(string memory name_, string memory symbol_, uint8 decimals_) {
_name = name_;
_symbol = symbol_;
_decimals = decimals_;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return _decimals;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(
address account
) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(
address owner,
address spender
) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(
address spender,
uint256 amount
) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(
currentAllowance >= amount,
"ERC20: transfer amount exceeds allowance"
);
unchecked {
_approve(sender, _msgSender(), currentAllowance - amount);
}
return true;
}
function increaseAllowance(
address spender,
uint256 addedValue
) public virtual returns (bool) {
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender] + addedValue
);
return true;
}
function decreaseAllowance(
address spender,
uint256 subtractedValue
) public virtual returns (bool) {
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(
currentAllowance >= subtractedValue,
"ERC20: decreased allowance below zero"
);
unchecked {
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
}
return true;
}
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
uint256 senderBalance = _balances[sender];
require(
senderBalance >= amount,
"ERC20: transfer amount exceeds balance"
);
unchecked {
_balances[sender] = senderBalance - amount;
}
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
_afterTokenTransfer(sender, recipient, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
}
_totalSupply -= amount;
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
contract Integer is ERC20, Ownable {
IUniswapV2Router02 public immutable uniswapV2Router;
address public uniswapV2Pair;
address public constant deadAddress = address(0xdead);
bool private isSwapping;
address private treasuryWallet;
uint256 public maxTransactionAmount;
uint256 public swapTokensAtAmount;
uint256 public maxSwapTokens;
uint256 public lpBurnFrequency = 8 hours;
uint256 public lastLpBurnTime;
bool public limitsInEffect = true;
bool public tradingActive = false;
uint256 private launchedAt;
uint256 public buyTotalFees;
uint256 public buyTreasuryFee;
uint256 public buyBurnFee;
uint256 public sellTotalFees;
uint256 public sellTreasuryFee;
uint256 public sellBurnFee;
uint256 public sellCounter;
uint256 public sellAmountCounter;
mapping(address => bool) private _isExcludedFromFees;
mapping(uint256 => uint256) private swapInBlock;
mapping(address => bool) public _isExcludedMaxTransactionAmount;
mapping(address => bool) public automatedMarketMakerPairs;
event AutoNukeLP();
event ExcludeFromFees(address indexed account, bool isExcluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event MarketingWalletUpdated(
address indexed newWallet,
address indexed oldWallet
);
constructor() ERC20("INT", "Integer", 0) {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24
);
excludeFromMaxTransaction(address(_uniswapV2Router), true);
uniswapV2Router = _uniswapV2Router;
uint256 _buyTreasuryFee = 10;
uint256 _buyBurnFee = 10;
uint256 _sellTreasuryFee = 16;
uint256 _sellBurnFee = 16;
buyTreasuryFee = _buyTreasuryFee;
buyBurnFee = _buyBurnFee;
buyTotalFees = buyTreasuryFee + buyBurnFee;
sellTreasuryFee = _sellTreasuryFee;
sellBurnFee = _sellBurnFee;
sellTotalFees = sellTreasuryFee + sellBurnFee;
uint256 totalSupply = 4096;
maxTransactionAmount = 82; // 2%
swapTokensAtAmount = 2;
maxSwapTokens = 32;
treasuryWallet = 0xf65763D1d179920a9a874dE5424Af151C4e24389;
excludeFromFees(owner(), true);
excludeFromFees(address(this), true);
excludeFromFees(address(0xdead), true);
excludeFromMaxTransaction(owner(), true);
excludeFromMaxTransaction(address(this), true);
excludeFromMaxTransaction(address(0xdead), true);
uint256 amountLP = 3809;
uint256 leftover = totalSupply - amountLP;
_mint(address(this), amountLP);
_mint(treasuryWallet, leftover);
}
receive() external payable {}
function addLiquidity() external payable onlyOwner {
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
address(this),
uniswapV2Router.WETH()
);
excludeFromMaxTransaction(address(uniswapV2Pair), true);
_setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
_addLiquidity(balanceOf(address(this)), msg.value);
}
function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0,
0,
owner(),
block.timestamp
);
}
function enableTrading() external onlyOwner {
tradingActive = true;
launchedAt = block.number;
}
function removeLimits() external onlyOwner returns (bool) {
limitsInEffect = false;
return true;
}
function wlContract(address _whitelist, bool isWL) public onlyOwner {
_isExcludedMaxTransactionAmount[_whitelist] = isWL;
_isExcludedFromFees[_whitelist] = isWL;
}
function excludeFromMaxTransaction(
address excludedAddress,
bool isExcluded
) public onlyOwner {
_isExcludedMaxTransactionAmount[excludedAddress] = isExcluded;
}
function updateSwapTokensAtAmount(
uint256 newAmount
) external onlyOwner returns (bool) {
require(newAmount >= 1 && newAmount <= 128);
swapTokensAtAmount = newAmount;
return true;
}
function updateMaxSwapTokens(
uint256 newAmount
) external onlyOwner returns (bool) {
require(newAmount >= 1 && newAmount <= 128);
maxSwapTokens = newAmount;
return true;
}
function updateBuyFees(
uint256 _treasuryFee,
uint256 _burnFee
) external onlyOwner {
buyTreasuryFee = _treasuryFee;
buyBurnFee = _burnFee;
buyTotalFees = buyTreasuryFee + buyBurnFee;
require(buyTotalFees <= 20);
}
function updateSellFees(
uint256 _treasuryFee,
uint256 _burnFee
) external onlyOwner {
sellTreasuryFee = _treasuryFee;
sellBurnFee = _burnFee;
sellTotalFees = sellTreasuryFee + sellBurnFee;
require(sellTotalFees <= 32);
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function setAutomatedMarketMakerPair(
address pair,
bool value
) public onlyOwner {
require(
pair != uniswapV2Pair,
"The pair cannot be removed from automatedMarketMakerPairs"
);
_setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
automatedMarketMakerPairs[pair] = value;
uniswapV2Pair = pair;
emit SetAutomatedMarketMakerPair(pair, value);
}
function updateMarketingWallet(
address newMarketingWallet
) external onlyOwner {
emit MarketingWalletUpdated(newMarketingWallet, treasuryWallet);
treasuryWallet = newMarketingWallet;
}
function _transfer(
address from,
address to,
uint256 amount
) internal override {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
if (amount == 0) {
super._transfer(from, to, 0);
return;
}
uint256 blockNumber = block.number;
if (limitsInEffect) {
if (
from != owner() &&
to != owner() &&
to != address(0) &&
to != address(0xdead) &&
!isSwapping
) {
if (!tradingActive) {
require(
_isExcludedFromFees[from] || _isExcludedFromFees[to],
"Trading is not active."
);
}
if (
automatedMarketMakerPairs[from] &&
!_isExcludedMaxTransactionAmount[to]
) {
require(
amount <= maxTransactionAmount,
"Buy transfer amount exceeds the maxTransactionAmount."
);
require(
amount + balanceOf(to) <= maxTransactionAmount,
"Max wallet exceeded"
);
}
else if (
automatedMarketMakerPairs[to] &&
!_isExcludedMaxTransactionAmount[from]
) {
require(
amount <= maxTransactionAmount,
"Sell transfer amount exceeds the maxTransactionAmount."
);
} else if (!_isExcludedMaxTransactionAmount[to]) {
require(
amount + balanceOf(to) <= maxTransactionAmount,
"Max wallet exceeded"
);
}
}
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= swapTokensAtAmount;
if (
canSwap &&
!isSwapping &&
(swapInBlock[blockNumber] <= 2) &&
!automatedMarketMakerPairs[from] &&
!_isExcludedFromFees[from] &&
!_isExcludedFromFees[to]
) {
isSwapping = true;
swapBack();
++swapInBlock[blockNumber];
isSwapping = false;
}
if (
!isSwapping &&
automatedMarketMakerPairs[to] &&
!_isExcludedFromFees[from]
) {
autoBurnLiquidityPairTokens();
}
bool takeFee = !isSwapping;
if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
takeFee = false;
}
uint256 fees = 0;
uint256 toTreasury = 0;
uint256 toBurn = 0;
// only take fees on buys/sells, do not take on wallet transfers
// cause there are no decimals, fees will be taken only on txs of 50 tokens and more
if (takeFee) {
// on sell
if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
fees = (amount * sellTotalFees) / 100;
toBurn = (fees * sellBurnFee) / sellTotalFees;
toTreasury = fees - toBurn;
// on every 2/4/8/16 sells, if LP balance is > 2048/1024/512/256, take 1 token as burn tax no matter the amount being sold
// will be triggered only if burn amount from fees is 0 for the current trade and the trade is taxable
sellCounter++;
uint256 lpBalance = balanceOf(uniswapV2Pair);
if (toBurn == 0) {
if (
(lpBalance > 2048 && sellCounter >= 2) ||
(lpBalance > 1024 && sellCounter >= 4) ||
(lpBalance > 512 && sellCounter >= 8) ||
(lpBalance > 256 && sellCounter >= 16)
) {
sellCounter = 0;
toBurn = 1;
fees += 1;
}
}
sellAmountCounter += amount;
}
// on buy
else if (buyTotalFees > 0 && automatedMarketMakerPairs[from]) {
fees = (amount * buyTotalFees) / 100;
toBurn = (fees * buyBurnFee) / buyTotalFees;
toTreasury = fees - toBurn;
}
if (toTreasury > 0) {
super._transfer(from, address(this), toTreasury);
}
if (toBurn > 0) {
super._transfer(from, address(0xdead), toBurn);
}
amount -= fees;
}
super._transfer(from, to, amount);
}
function swapBack() private {
uint256 contractBalance = balanceOf(address(this));
bool success;
if (contractBalance == 0) {
return;
}
if (contractBalance > maxSwapTokens) {
contractBalance = maxSwapTokens;
}
uint256 amountToSwapForETH = contractBalance;
swapTokensForEth(amountToSwapForETH);
(success, ) = address(treasuryWallet).call{
value: address(this).balance
}("");
}
function swapTokensForEth(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
}
function autoBurnLiquidityPairTokens() internal {
uint256 liquidityPairBalance = balanceOf(uniswapV2Pair);
if (liquidityPairBalance > 256) {
if (sellAmountCounter < 1024) {
if (block.timestamp < lastLpBurnTime + lpBurnFrequency) {
return;
} else {
lastLpBurnTime = block.timestamp;
}
} else {
sellAmountCounter = 0;
}
super._transfer(uniswapV2Pair, address(0xdead), 1);
IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
pair.sync();
emit AutoNukeLP();
}
}
function withdrawToken(address _tokenContract, uint256 _amount) external onlyOwner {
IERC20 tokenContract = IERC20(_tokenContract);
tokenContract.transfer(msg.sender, _amount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingWalletUpdated","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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","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":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellAmountCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateMaxSwapTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"},{"internalType":"bool","name":"isWL","type":"bool"}],"name":"wlContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a0604052617080600b556001600d5f6101000a81548160ff0219169083151502179055505f600d60016101000a81548160ff0219169083151502179055503480156200004a575f80fd5b506040518060400160405280600381526020017f494e5400000000000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f496e7465676572000000000000000000000000000000000000000000000000008152505f8260039081620000c9919062000a39565b508160049081620000db919062000a39565b508060055f6101000a81548160ff021916908360ff160217905550505050620001196200010d6200034860201b60201c565b6200034f60201b60201c565b5f734752ba5dbc23f44d87826276bf6fd6b1c372ad249050620001448160016200041460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505f600a90505f600a90505f601090505f601090508360108190555082601181905550601154601054620001ac919062000b4a565b600f819055508160138190555080601481905550601454601354620001d2919062000b4a565b6012819055505f6110009050605260088190555060026009819055506020600a8190555073f65763d1d179920a9a874de5424af151c4e2438960075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200026c6200025e620004fb60201b60201c565b60016200052460201b60201c565b6200027f3060016200052460201b60201c565b6200029461dead60016200052460201b60201c565b620002b6620002a8620004fb60201b60201c565b60016200041460201b60201c565b620002c93060016200041460201b60201c565b620002de61dead60016200041460201b60201c565b5f610ee190505f8183620002f3919062000b84565b90506200030730836200065b60201b60201c565b6200033a60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826200065b60201b60201c565b505050505050505062000d0d565b5f33905090565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620004246200034860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200044a620004fb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620004a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200049a9062000c1c565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005346200034860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200055a620004fb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620005b3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005aa9062000c1c565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200064f919062000c58565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006c39062000cc1565b60405180910390fd5b620006df5f8383620007cb60201b60201c565b8060025f828254620006f2919062000b4a565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000746919062000b4a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007ac919062000cf2565b60405180910390a3620007c75f8383620007d060201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200085157607f821691505b6020821081036200086757620008666200080c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008cb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200088e565b620008d786836200088e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620009216200091b6200091584620008ef565b620008f8565b620008ef565b9050919050565b5f819050919050565b6200093c8362000901565b620009546200094b8262000928565b8484546200089a565b825550505050565b5f90565b6200096a6200095c565b6200097781848462000931565b505050565b5b818110156200099e57620009925f8262000960565b6001810190506200097d565b5050565b601f821115620009ed57620009b7816200086d565b620009c2846200087f565b81016020851015620009d2578190505b620009ea620009e1856200087f565b8301826200097c565b50505b505050565b5f82821c905092915050565b5f62000a0f5f1984600802620009f2565b1980831691505092915050565b5f62000a298383620009fe565b9150826002028217905092915050565b62000a4482620007d5565b67ffffffffffffffff81111562000a605762000a5f620007df565b5b62000a6c825462000839565b62000a79828285620009a2565b5f60209050601f83116001811462000aaf575f841562000a9a578287015190505b62000aa6858262000a1c565b86555062000b15565b601f19841662000abf866200086d565b5f5b8281101562000ae85784890151825560018201915060208501945060208101905062000ac1565b8683101562000b08578489015162000b04601f891682620009fe565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000b5682620008ef565b915062000b6383620008ef565b925082820190508082111562000b7e5762000b7d62000b1d565b5b92915050565b5f62000b9082620008ef565b915062000b9d83620008ef565b925082820390508181111562000bb85762000bb762000b1d565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000c0460208362000bbe565b915062000c118262000bce565b602082019050919050565b5f6020820190508181035f83015262000c358162000bf6565b9050919050565b5f8115159050919050565b62000c528162000c3c565b82525050565b5f60208201905062000c6d5f83018462000c47565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000ca9601f8362000bbe565b915062000cb68262000c73565b602082019050919050565b5f6020820190508181035f83015262000cda8162000c9b565b9050919050565b62000cec81620008ef565b82525050565b5f60208201905062000d075f83018462000ce1565b92915050565b6080516146e162000d575f395f8181610c3701528181611c0301528181611cac01528181612e3d01528181612e640152818161344e0152818161352d015261355401526146e15ff3fe60806040526004361061028b575f3560e01c80638a8c523c11610159578063b431dd28116100c0578063d85ba06311610079578063d85ba063146109cc578063dd62ed3e146109f6578063e2f4560514610a32578063e71dc3f514610a5c578063e8078d9414610a86578063f2fde38b14610a9057610292565b8063b431dd28146108b0578063b62496f5146108d8578063bbc0c74214610914578063c02466681461093e578063c8c8ebe414610966578063d257b34f1461099057610292565b8063a457c2d711610112578063a457c2d714610792578063a4c82a00146107ce578063a4d0047d146107f8578063a9059cbb14610822578063aacebbe31461085e578063adb873bd1461088657610292565b80638a8c523c1461069c5780638da5cb5b146106b257806395d89b41146106dc5780639a7a23d6146107065780639b66731b1461072e5780639e281a981461076a57610292565b806339509351116101fd5780636b2fb124116101b65780636b2fb124146105a457806370a08231146105ce578063715018a61461060a578063751039fc146106205780637571336a1461064a57806378d527221461067257610292565b8063395093511461049857806349bd5a5e146104d45780634a62bb65146104fe5780635c068a8c1461052857806366ca9b83146105525780636a486a8e1461057a57610292565b806318160ddd1161024f57806318160ddd1461038a57806323b872dd146103b457806327c8f835146103f05780632c3e486c1461041a578063313ce5671461044457806336a1efe41461046e57610292565b806302dbd8f81461029657806306fdde03146102be578063095ea7b3146102e857806310d5de53146103245780631694505e1461036057610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102bc60048036038101906102b7919061361b565b610ab8565b005b3480156102c9575f80fd5b506102d2610b6b565b6040516102df91906136e3565b60405180910390f35b3480156102f3575f80fd5b5061030e6004803603810190610309919061375d565b610bfb565b60405161031b91906137b5565b60405180910390f35b34801561032f575f80fd5b5061034a600480360381019061034591906137ce565b610c18565b60405161035791906137b5565b60405180910390f35b34801561036b575f80fd5b50610374610c35565b6040516103819190613854565b60405180910390f35b348015610395575f80fd5b5061039e610c59565b6040516103ab919061387c565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d59190613895565b610c62565b6040516103e791906137b5565b60405180910390f35b3480156103fb575f80fd5b50610404610d54565b60405161041191906138f4565b60405180910390f35b348015610425575f80fd5b5061042e610d5a565b60405161043b919061387c565b60405180910390f35b34801561044f575f80fd5b50610458610d60565b6040516104659190613928565b60405180910390f35b348015610479575f80fd5b50610482610d75565b60405161048f919061387c565b60405180910390f35b3480156104a3575f80fd5b506104be60048036038101906104b9919061375d565b610d7b565b6040516104cb91906137b5565b60405180910390f35b3480156104df575f80fd5b506104e8610e22565b6040516104f591906138f4565b60405180910390f35b348015610509575f80fd5b50610512610e47565b60405161051f91906137b5565b60405180910390f35b348015610533575f80fd5b5061053c610e59565b604051610549919061387c565b60405180910390f35b34801561055d575f80fd5b506105786004803603810190610573919061361b565b610e5f565b005b348015610585575f80fd5b5061058e610f12565b60405161059b919061387c565b60405180910390f35b3480156105af575f80fd5b506105b8610f18565b6040516105c5919061387c565b60405180910390f35b3480156105d9575f80fd5b506105f460048036038101906105ef91906137ce565b610f1e565b604051610601919061387c565b60405180910390f35b348015610615575f80fd5b5061061e610f63565b005b34801561062b575f80fd5b50610634610fea565b60405161064191906137b5565b60405180910390f35b348015610655575f80fd5b50610670600480360381019061066b919061396b565b611087565b005b34801561067d575f80fd5b5061068661115b565b604051610693919061387c565b60405180910390f35b3480156106a7575f80fd5b506106b0611161565b005b3480156106bd575f80fd5b506106c6611201565b6040516106d391906138f4565b60405180910390f35b3480156106e7575f80fd5b506106f061122a565b6040516106fd91906136e3565b60405180910390f35b348015610711575f80fd5b5061072c6004803603810190610727919061396b565b6112ba565b005b348015610739575f80fd5b50610754600480360381019061074f91906139a9565b6113d3565b60405161076191906137b5565b60405180910390f35b348015610775575f80fd5b50610790600480360381019061078b919061375d565b61147a565b005b34801561079d575f80fd5b506107b860048036038101906107b3919061375d565b61157b565b6040516107c591906137b5565b60405180910390f35b3480156107d9575f80fd5b506107e2611661565b6040516107ef919061387c565b60405180910390f35b348015610803575f80fd5b5061080c611667565b604051610819919061387c565b60405180910390f35b34801561082d575f80fd5b506108486004803603810190610843919061375d565b61166d565b60405161085591906137b5565b60405180910390f35b348015610869575f80fd5b50610884600480360381019061087f91906137ce565b61168a565b005b348015610891575f80fd5b5061089a6117c4565b6040516108a7919061387c565b60405180910390f35b3480156108bb575f80fd5b506108d660048036038101906108d1919061396b565b6117ca565b005b3480156108e3575f80fd5b506108fe60048036038101906108f991906137ce565b6118f2565b60405161090b91906137b5565b60405180910390f35b34801561091f575f80fd5b5061092861190f565b60405161093591906137b5565b60405180910390f35b348015610949575f80fd5b50610964600480360381019061095f919061396b565b611922565b005b348015610971575f80fd5b5061097a611a44565b604051610987919061387c565b60405180910390f35b34801561099b575f80fd5b506109b660048036038101906109b191906139a9565b611a4a565b6040516109c391906137b5565b60405180910390f35b3480156109d7575f80fd5b506109e0611af1565b6040516109ed919061387c565b60405180910390f35b348015610a01575f80fd5b50610a1c6004803603810190610a1791906139d4565b611af7565b604051610a29919061387c565b60405180910390f35b348015610a3d575f80fd5b50610a46611b79565b604051610a53919061387c565b60405180910390f35b348015610a67575f80fd5b50610a70611b7f565b604051610a7d919061387c565b60405180910390f35b610a8e611b85565b005b348015610a9b575f80fd5b50610ab66004803603810190610ab191906137ce565b611e3f565b005b610ac0611f35565b73ffffffffffffffffffffffffffffffffffffffff16610ade611201565b73ffffffffffffffffffffffffffffffffffffffff1614610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b90613a5c565b60405180910390fd5b8160138190555080601481905550601454601354610b529190613aa7565b60128190555060206012541115610b67575f80fd5b5050565b606060038054610b7a90613b07565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba690613b07565b8015610bf15780601f10610bc857610100808354040283529160200191610bf1565b820191905f5260205f20905b815481529060010190602001808311610bd457829003601f168201915b5050505050905090565b5f610c0e610c07611f35565b8484611f3c565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b5f610c6e8484846120ff565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610cb5611f35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90613ba7565b60405180910390fd5b610d4885610d40611f35565b858403611f3c565b60019150509392505050565b61dead81565b600b5481565b5f60055f9054906101000a900460ff16905090565b600a5481565b5f610e18610d87611f35565b848460015f610d94611f35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e139190613aa7565b611f3c565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b60105481565b610e67611f35565b73ffffffffffffffffffffffffffffffffffffffff16610e85611201565b73ffffffffffffffffffffffffffffffffffffffff1614610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed290613a5c565b60405180910390fd5b8160108190555080601181905550601154601054610ef99190613aa7565b600f819055506014600f541115610f0e575f80fd5b5050565b60125481565b60135481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f6b611f35565b73ffffffffffffffffffffffffffffffffffffffff16610f89611201565b73ffffffffffffffffffffffffffffffffffffffff1614610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd690613a5c565b60405180910390fd5b610fe85f612c94565b565b5f610ff3611f35565b73ffffffffffffffffffffffffffffffffffffffff16611011611201565b73ffffffffffffffffffffffffffffffffffffffff1614611067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105e90613a5c565b60405180910390fd5b5f600d5f6101000a81548160ff0219169083151502179055506001905090565b61108f611f35565b73ffffffffffffffffffffffffffffffffffffffff166110ad611201565b73ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90613a5c565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60165481565b611169611f35565b73ffffffffffffffffffffffffffffffffffffffff16611187611201565b73ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d490613a5c565b60405180910390fd5b6001600d60016101000a81548160ff02191690831515021790555043600e81905550565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461123990613b07565b80601f016020809104026020016040519081016040528092919081815260200182805461126590613b07565b80156112b05780601f10611287576101008083540402835291602001916112b0565b820191905f5260205f20905b81548152906001019060200180831161129357829003601f168201915b5050505050905090565b6112c2611f35565b73ffffffffffffffffffffffffffffffffffffffff166112e0611201565b73ffffffffffffffffffffffffffffffffffffffff1614611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d90613a5c565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc90613c35565b60405180910390fd5b6113cf8282612d59565b5050565b5f6113dc611f35565b73ffffffffffffffffffffffffffffffffffffffff166113fa611201565b73ffffffffffffffffffffffffffffffffffffffff1614611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144790613a5c565b60405180910390fd5b60018210158015611462575060808211155b61146a575f80fd5b81600a8190555060019050919050565b611482611f35565b73ffffffffffffffffffffffffffffffffffffffff166114a0611201565b73ffffffffffffffffffffffffffffffffffffffff16146114f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ed90613a5c565b60405180910390fd5b5f8290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611535929190613c53565b6020604051808303815f875af1158015611551573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115759190613c8e565b50505050565b5f8060015f611588611f35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163990613d29565b60405180910390fd5b61165661164d611f35565b85858403611f3c565b600191505092915050565b600c5481565b60155481565b5f611680611679611f35565b84846120ff565b6001905092915050565b611692611f35565b73ffffffffffffffffffffffffffffffffffffffff166116b0611201565b73ffffffffffffffffffffffffffffffffffffffff1614611706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fd90613a5c565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b6117d2611f35565b73ffffffffffffffffffffffffffffffffffffffff166117f0611201565b73ffffffffffffffffffffffffffffffffffffffff1614611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183d90613a5c565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601a602052805f5260405f205f915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b61192a611f35565b73ffffffffffffffffffffffffffffffffffffffff16611948611201565b73ffffffffffffffffffffffffffffffffffffffff161461199e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199590613a5c565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a3891906137b5565b60405180910390a25050565b60085481565b5f611a53611f35565b73ffffffffffffffffffffffffffffffffffffffff16611a71611201565b73ffffffffffffffffffffffffffffffffffffffff1614611ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abe90613a5c565b60405180910390fd5b60018210158015611ad9575060808211155b611ae1575f80fd5b8160098190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b60115481565b611b8d611f35565b73ffffffffffffffffffffffffffffffffffffffff16611bab611201565b73ffffffffffffffffffffffffffffffffffffffff1614611c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf890613a5c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8e9190613d5b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d379190613d5b565b6040518363ffffffff1660e01b8152600401611d54929190613d86565b6020604051808303815f875af1158015611d70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d949190613d5b565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611dff60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611087565b611e2b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612d59565b611e3d611e3730610f1e565b34612e37565b565b611e47611f35565b73ffffffffffffffffffffffffffffffffffffffff16611e65611201565b73ffffffffffffffffffffffffffffffffffffffff1614611ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb290613a5c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2090613e1d565b60405180910390fd5b611f3281612c94565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa190613eab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200f90613f39565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120f2919061387c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361216d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216490613fc7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d290614055565b60405180910390fd5b5f81036121f2576121ed83835f612f15565b612c8f565b5f439050600d5f9054906101000a900460ff16156126da57612212611201565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156122805750612250611201565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122b857505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122f2575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561230b5750600660149054906101000a900460ff16155b156126d957600d60019054906101000a900460ff166123ff5760175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806123bf575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6123fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f5906140bd565b60405180910390fd5b5b601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561249c575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612543576008548211156124e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dd9061414b565b60405180910390fd5b6008546124f284610f1e565b836124fd9190613aa7565b111561253e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612535906141b3565b60405180910390fd5b6126d8565b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125e0575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561262f5760085482111561262a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262190614241565b60405180910390fd5b6126d7565b60195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166126d65760085461268984610f1e565b836126949190613aa7565b11156126d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cc906141b3565b60405180910390fd5b5b5b5b5b5b5f6126e430610f1e565b90505f60095482101590508080156127095750600660149054906101000a900460ff16155b80156127275750600260185f8581526020019081526020015f205411155b801561277a5750601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156127cd575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612820575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612887576001600660146101000a81548160ff02191690831515021790555061284861318a565b60185f8481526020019081526020015f205f81546128659061425f565b919050819055505f600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff161580156128ea5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561293d575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561294b5761294a613252565b5b5f600660149054906101000a900460ff1615905060175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806129fa575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612a03575f90505b5f805f8315612c7c57601a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a6357505f601254115b15612b9e57606460125489612a7891906142a6565b612a829190614314565b925060125460145484612a9591906142a6565b612a9f9190614314565b90508083612aad9190614344565b915060155f815480929190612ac19061425f565b91905055505f612af160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f1e565b90505f8203612b805761080081118015612b0e5750600260155410155b80612b29575061040081118015612b285750600460155410155b5b80612b44575061020081118015612b435750600860155410155b5b80612b5f575061010081118015612b5e5750601060155410155b5b15612b7f575f60158190555060019150600184612b7c9190613aa7565b93505b5b8860165f828254612b919190613aa7565b9250508190555050612c43565b5f600f54118015612bf55750601a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612c42576064600f5489612c0a91906142a6565b612c149190614314565b9250600f5460115484612c2791906142a6565b612c319190614314565b90508083612c3f9190614344565b91505b5b5f821115612c5757612c568a3084612f15565b5b5f811115612c6d57612c6c8a61dead83612f15565b5b8288612c799190614344565b97505b612c878a8a8a612f15565b505050505050505b505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b612e62307f000000000000000000000000000000000000000000000000000000000000000084611f3c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80612eab611201565b426040518863ffffffff1660e01b8152600401612ecd969594939291906143b0565b60606040518083038185885af1158015612ee9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612f0e9190614423565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7a90613fc7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe890614055565b60405180910390fd5b612ffc8383836133a7565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561307f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613076906144e3565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461310d9190613aa7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613171919061387c565b60405180910390a36131848484846133ac565b50505050565b5f61319430610f1e565b90505f8082036131a5575050613250565b600a548211156131b557600a5491505b5f8290506131c2816133b1565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516132079061452e565b5f6040518083038185875af1925050503d805f8114613241576040519150601f19603f3d011682016040523d82523d5f602084013e613246565b606091505b5050809250505050505b565b5f61327d60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f1e565b90506101008111156133a35761040060165410156132be57600b54600c546132a59190613aa7565b4210156132b257506133a5565b42600c819055506132c6565b5f6016819055505b6132f560065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead6001612f15565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561335f575f80fd5b505af1158015613371573d5f803e3d5ffd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a1505b505b565b505050565b505050565b5f600267ffffffffffffffff8111156133cd576133cc614542565b5b6040519080825280602002602001820160405280156133fb5781602001602082028036833780820191505090505b50905030815f815181106134125761341161456f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134d99190613d5b565b816001815181106134ed576134ec61456f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613552307f000000000000000000000000000000000000000000000000000000000000000084611f3c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016135b3959493929190614653565b5f604051808303815f87803b1580156135ca575f80fd5b505af11580156135dc573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b6135fa816135e8565b8114613604575f80fd5b50565b5f81359050613615816135f1565b92915050565b5f8060408385031215613631576136306135e4565b5b5f61363e85828601613607565b925050602061364f85828601613607565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613690578082015181840152602081019050613675565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6136b582613659565b6136bf8185613663565b93506136cf818560208601613673565b6136d88161369b565b840191505092915050565b5f6020820190508181035f8301526136fb81846136ab565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61372c82613703565b9050919050565b61373c81613722565b8114613746575f80fd5b50565b5f8135905061375781613733565b92915050565b5f8060408385031215613773576137726135e4565b5b5f61378085828601613749565b925050602061379185828601613607565b9150509250929050565b5f8115159050919050565b6137af8161379b565b82525050565b5f6020820190506137c85f8301846137a6565b92915050565b5f602082840312156137e3576137e26135e4565b5b5f6137f084828501613749565b91505092915050565b5f819050919050565b5f61381c61381761381284613703565b6137f9565b613703565b9050919050565b5f61382d82613802565b9050919050565b5f61383e82613823565b9050919050565b61384e81613834565b82525050565b5f6020820190506138675f830184613845565b92915050565b613876816135e8565b82525050565b5f60208201905061388f5f83018461386d565b92915050565b5f805f606084860312156138ac576138ab6135e4565b5b5f6138b986828701613749565b93505060206138ca86828701613749565b92505060406138db86828701613607565b9150509250925092565b6138ee81613722565b82525050565b5f6020820190506139075f8301846138e5565b92915050565b5f60ff82169050919050565b6139228161390d565b82525050565b5f60208201905061393b5f830184613919565b92915050565b61394a8161379b565b8114613954575f80fd5b50565b5f8135905061396581613941565b92915050565b5f8060408385031215613981576139806135e4565b5b5f61398e85828601613749565b925050602061399f85828601613957565b9150509250929050565b5f602082840312156139be576139bd6135e4565b5b5f6139cb84828501613607565b91505092915050565b5f80604083850312156139ea576139e96135e4565b5b5f6139f785828601613749565b9250506020613a0885828601613749565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a46602083613663565b9150613a5182613a12565b602082019050919050565b5f6020820190508181035f830152613a7381613a3a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ab1826135e8565b9150613abc836135e8565b9250828201905080821115613ad457613ad3613a7a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613b1e57607f821691505b602082108103613b3157613b30613ada565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613b91602883613663565b9150613b9c82613b37565b604082019050919050565b5f6020820190508181035f830152613bbe81613b85565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613c1f603983613663565b9150613c2a82613bc5565b604082019050919050565b5f6020820190508181035f830152613c4c81613c13565b9050919050565b5f604082019050613c665f8301856138e5565b613c73602083018461386d565b9392505050565b5f81519050613c8881613941565b92915050565b5f60208284031215613ca357613ca26135e4565b5b5f613cb084828501613c7a565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613d13602583613663565b9150613d1e82613cb9565b604082019050919050565b5f6020820190508181035f830152613d4081613d07565b9050919050565b5f81519050613d5581613733565b92915050565b5f60208284031215613d7057613d6f6135e4565b5b5f613d7d84828501613d47565b91505092915050565b5f604082019050613d995f8301856138e5565b613da660208301846138e5565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613e07602683613663565b9150613e1282613dad565b604082019050919050565b5f6020820190508181035f830152613e3481613dfb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613e95602483613663565b9150613ea082613e3b565b604082019050919050565b5f6020820190508181035f830152613ec281613e89565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f23602283613663565b9150613f2e82613ec9565b604082019050919050565b5f6020820190508181035f830152613f5081613f17565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613fb1602583613663565b9150613fbc82613f57565b604082019050919050565b5f6020820190508181035f830152613fde81613fa5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61403f602383613663565b915061404a82613fe5565b604082019050919050565b5f6020820190508181035f83015261406c81614033565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6140a7601683613663565b91506140b282614073565b602082019050919050565b5f6020820190508181035f8301526140d48161409b565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614135603583613663565b9150614140826140db565b604082019050919050565b5f6020820190508181035f83015261416281614129565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61419d601383613663565b91506141a882614169565b602082019050919050565b5f6020820190508181035f8301526141ca81614191565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61422b603683613663565b9150614236826141d1565b604082019050919050565b5f6020820190508181035f8301526142588161421f565b9050919050565b5f614269826135e8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361429b5761429a613a7a565b5b600182019050919050565b5f6142b0826135e8565b91506142bb836135e8565b92508282026142c9816135e8565b915082820484148315176142e0576142df613a7a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61431e826135e8565b9150614329836135e8565b925082614339576143386142e7565b5b828204905092915050565b5f61434e826135e8565b9150614359836135e8565b925082820390508181111561437157614370613a7a565b5b92915050565b5f819050919050565b5f61439a61439561439084614377565b6137f9565b6135e8565b9050919050565b6143aa81614380565b82525050565b5f60c0820190506143c35f8301896138e5565b6143d0602083018861386d565b6143dd60408301876143a1565b6143ea60608301866143a1565b6143f760808301856138e5565b61440460a083018461386d565b979650505050505050565b5f8151905061441d816135f1565b92915050565b5f805f6060848603121561443a576144396135e4565b5b5f6144478682870161440f565b93505060206144588682870161440f565b92505060406144698682870161440f565b9150509250925092565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6144cd602683613663565b91506144d882614473565b604082019050919050565b5f6020820190508181035f8301526144fa816144c1565b9050919050565b5f81905092915050565b50565b5f6145195f83614501565b91506145248261450b565b5f82019050919050565b5f6145388261450e565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6145ce81613722565b82525050565b5f6145df83836145c5565b60208301905092915050565b5f602082019050919050565b5f6146018261459c565b61460b81856145a6565b9350614616836145b6565b805f5b8381101561464657815161462d88826145d4565b9750614638836145eb565b925050600181019050614619565b5085935050505092915050565b5f60a0820190506146665f83018861386d565b61467360208301876143a1565b818103604083015261468581866145f7565b905061469460608301856138e5565b6146a1608083018461386d565b969550505050505056fea2646970667358221220bb16a46f544eb4818af8efb74c24fb201e7818b46351804a895a7e6704273cb264736f6c63430008170033
Deployed Bytecode
0x60806040526004361061028b575f3560e01c80638a8c523c11610159578063b431dd28116100c0578063d85ba06311610079578063d85ba063146109cc578063dd62ed3e146109f6578063e2f4560514610a32578063e71dc3f514610a5c578063e8078d9414610a86578063f2fde38b14610a9057610292565b8063b431dd28146108b0578063b62496f5146108d8578063bbc0c74214610914578063c02466681461093e578063c8c8ebe414610966578063d257b34f1461099057610292565b8063a457c2d711610112578063a457c2d714610792578063a4c82a00146107ce578063a4d0047d146107f8578063a9059cbb14610822578063aacebbe31461085e578063adb873bd1461088657610292565b80638a8c523c1461069c5780638da5cb5b146106b257806395d89b41146106dc5780639a7a23d6146107065780639b66731b1461072e5780639e281a981461076a57610292565b806339509351116101fd5780636b2fb124116101b65780636b2fb124146105a457806370a08231146105ce578063715018a61461060a578063751039fc146106205780637571336a1461064a57806378d527221461067257610292565b8063395093511461049857806349bd5a5e146104d45780634a62bb65146104fe5780635c068a8c1461052857806366ca9b83146105525780636a486a8e1461057a57610292565b806318160ddd1161024f57806318160ddd1461038a57806323b872dd146103b457806327c8f835146103f05780632c3e486c1461041a578063313ce5671461044457806336a1efe41461046e57610292565b806302dbd8f81461029657806306fdde03146102be578063095ea7b3146102e857806310d5de53146103245780631694505e1461036057610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102bc60048036038101906102b7919061361b565b610ab8565b005b3480156102c9575f80fd5b506102d2610b6b565b6040516102df91906136e3565b60405180910390f35b3480156102f3575f80fd5b5061030e6004803603810190610309919061375d565b610bfb565b60405161031b91906137b5565b60405180910390f35b34801561032f575f80fd5b5061034a600480360381019061034591906137ce565b610c18565b60405161035791906137b5565b60405180910390f35b34801561036b575f80fd5b50610374610c35565b6040516103819190613854565b60405180910390f35b348015610395575f80fd5b5061039e610c59565b6040516103ab919061387c565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d59190613895565b610c62565b6040516103e791906137b5565b60405180910390f35b3480156103fb575f80fd5b50610404610d54565b60405161041191906138f4565b60405180910390f35b348015610425575f80fd5b5061042e610d5a565b60405161043b919061387c565b60405180910390f35b34801561044f575f80fd5b50610458610d60565b6040516104659190613928565b60405180910390f35b348015610479575f80fd5b50610482610d75565b60405161048f919061387c565b60405180910390f35b3480156104a3575f80fd5b506104be60048036038101906104b9919061375d565b610d7b565b6040516104cb91906137b5565b60405180910390f35b3480156104df575f80fd5b506104e8610e22565b6040516104f591906138f4565b60405180910390f35b348015610509575f80fd5b50610512610e47565b60405161051f91906137b5565b60405180910390f35b348015610533575f80fd5b5061053c610e59565b604051610549919061387c565b60405180910390f35b34801561055d575f80fd5b506105786004803603810190610573919061361b565b610e5f565b005b348015610585575f80fd5b5061058e610f12565b60405161059b919061387c565b60405180910390f35b3480156105af575f80fd5b506105b8610f18565b6040516105c5919061387c565b60405180910390f35b3480156105d9575f80fd5b506105f460048036038101906105ef91906137ce565b610f1e565b604051610601919061387c565b60405180910390f35b348015610615575f80fd5b5061061e610f63565b005b34801561062b575f80fd5b50610634610fea565b60405161064191906137b5565b60405180910390f35b348015610655575f80fd5b50610670600480360381019061066b919061396b565b611087565b005b34801561067d575f80fd5b5061068661115b565b604051610693919061387c565b60405180910390f35b3480156106a7575f80fd5b506106b0611161565b005b3480156106bd575f80fd5b506106c6611201565b6040516106d391906138f4565b60405180910390f35b3480156106e7575f80fd5b506106f061122a565b6040516106fd91906136e3565b60405180910390f35b348015610711575f80fd5b5061072c6004803603810190610727919061396b565b6112ba565b005b348015610739575f80fd5b50610754600480360381019061074f91906139a9565b6113d3565b60405161076191906137b5565b60405180910390f35b348015610775575f80fd5b50610790600480360381019061078b919061375d565b61147a565b005b34801561079d575f80fd5b506107b860048036038101906107b3919061375d565b61157b565b6040516107c591906137b5565b60405180910390f35b3480156107d9575f80fd5b506107e2611661565b6040516107ef919061387c565b60405180910390f35b348015610803575f80fd5b5061080c611667565b604051610819919061387c565b60405180910390f35b34801561082d575f80fd5b506108486004803603810190610843919061375d565b61166d565b60405161085591906137b5565b60405180910390f35b348015610869575f80fd5b50610884600480360381019061087f91906137ce565b61168a565b005b348015610891575f80fd5b5061089a6117c4565b6040516108a7919061387c565b60405180910390f35b3480156108bb575f80fd5b506108d660048036038101906108d1919061396b565b6117ca565b005b3480156108e3575f80fd5b506108fe60048036038101906108f991906137ce565b6118f2565b60405161090b91906137b5565b60405180910390f35b34801561091f575f80fd5b5061092861190f565b60405161093591906137b5565b60405180910390f35b348015610949575f80fd5b50610964600480360381019061095f919061396b565b611922565b005b348015610971575f80fd5b5061097a611a44565b604051610987919061387c565b60405180910390f35b34801561099b575f80fd5b506109b660048036038101906109b191906139a9565b611a4a565b6040516109c391906137b5565b60405180910390f35b3480156109d7575f80fd5b506109e0611af1565b6040516109ed919061387c565b60405180910390f35b348015610a01575f80fd5b50610a1c6004803603810190610a1791906139d4565b611af7565b604051610a29919061387c565b60405180910390f35b348015610a3d575f80fd5b50610a46611b79565b604051610a53919061387c565b60405180910390f35b348015610a67575f80fd5b50610a70611b7f565b604051610a7d919061387c565b60405180910390f35b610a8e611b85565b005b348015610a9b575f80fd5b50610ab66004803603810190610ab191906137ce565b611e3f565b005b610ac0611f35565b73ffffffffffffffffffffffffffffffffffffffff16610ade611201565b73ffffffffffffffffffffffffffffffffffffffff1614610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b90613a5c565b60405180910390fd5b8160138190555080601481905550601454601354610b529190613aa7565b60128190555060206012541115610b67575f80fd5b5050565b606060038054610b7a90613b07565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba690613b07565b8015610bf15780601f10610bc857610100808354040283529160200191610bf1565b820191905f5260205f20905b815481529060010190602001808311610bd457829003601f168201915b5050505050905090565b5f610c0e610c07611f35565b8484611f3c565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2481565b5f600254905090565b5f610c6e8484846120ff565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610cb5611f35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90613ba7565b60405180910390fd5b610d4885610d40611f35565b858403611f3c565b60019150509392505050565b61dead81565b600b5481565b5f60055f9054906101000a900460ff16905090565b600a5481565b5f610e18610d87611f35565b848460015f610d94611f35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e139190613aa7565b611f3c565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b60105481565b610e67611f35565b73ffffffffffffffffffffffffffffffffffffffff16610e85611201565b73ffffffffffffffffffffffffffffffffffffffff1614610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed290613a5c565b60405180910390fd5b8160108190555080601181905550601154601054610ef99190613aa7565b600f819055506014600f541115610f0e575f80fd5b5050565b60125481565b60135481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f6b611f35565b73ffffffffffffffffffffffffffffffffffffffff16610f89611201565b73ffffffffffffffffffffffffffffffffffffffff1614610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd690613a5c565b60405180910390fd5b610fe85f612c94565b565b5f610ff3611f35565b73ffffffffffffffffffffffffffffffffffffffff16611011611201565b73ffffffffffffffffffffffffffffffffffffffff1614611067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105e90613a5c565b60405180910390fd5b5f600d5f6101000a81548160ff0219169083151502179055506001905090565b61108f611f35565b73ffffffffffffffffffffffffffffffffffffffff166110ad611201565b73ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90613a5c565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60165481565b611169611f35565b73ffffffffffffffffffffffffffffffffffffffff16611187611201565b73ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d490613a5c565b60405180910390fd5b6001600d60016101000a81548160ff02191690831515021790555043600e81905550565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461123990613b07565b80601f016020809104026020016040519081016040528092919081815260200182805461126590613b07565b80156112b05780601f10611287576101008083540402835291602001916112b0565b820191905f5260205f20905b81548152906001019060200180831161129357829003601f168201915b5050505050905090565b6112c2611f35565b73ffffffffffffffffffffffffffffffffffffffff166112e0611201565b73ffffffffffffffffffffffffffffffffffffffff1614611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d90613a5c565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc90613c35565b60405180910390fd5b6113cf8282612d59565b5050565b5f6113dc611f35565b73ffffffffffffffffffffffffffffffffffffffff166113fa611201565b73ffffffffffffffffffffffffffffffffffffffff1614611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144790613a5c565b60405180910390fd5b60018210158015611462575060808211155b61146a575f80fd5b81600a8190555060019050919050565b611482611f35565b73ffffffffffffffffffffffffffffffffffffffff166114a0611201565b73ffffffffffffffffffffffffffffffffffffffff16146114f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ed90613a5c565b60405180910390fd5b5f8290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611535929190613c53565b6020604051808303815f875af1158015611551573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115759190613c8e565b50505050565b5f8060015f611588611f35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163990613d29565b60405180910390fd5b61165661164d611f35565b85858403611f3c565b600191505092915050565b600c5481565b60155481565b5f611680611679611f35565b84846120ff565b6001905092915050565b611692611f35565b73ffffffffffffffffffffffffffffffffffffffff166116b0611201565b73ffffffffffffffffffffffffffffffffffffffff1614611706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fd90613a5c565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b6117d2611f35565b73ffffffffffffffffffffffffffffffffffffffff166117f0611201565b73ffffffffffffffffffffffffffffffffffffffff1614611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183d90613a5c565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601a602052805f5260405f205f915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b61192a611f35565b73ffffffffffffffffffffffffffffffffffffffff16611948611201565b73ffffffffffffffffffffffffffffffffffffffff161461199e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199590613a5c565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a3891906137b5565b60405180910390a25050565b60085481565b5f611a53611f35565b73ffffffffffffffffffffffffffffffffffffffff16611a71611201565b73ffffffffffffffffffffffffffffffffffffffff1614611ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abe90613a5c565b60405180910390fd5b60018210158015611ad9575060808211155b611ae1575f80fd5b8160098190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b60115481565b611b8d611f35565b73ffffffffffffffffffffffffffffffffffffffff16611bab611201565b73ffffffffffffffffffffffffffffffffffffffff1614611c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf890613a5c565b60405180910390fd5b7f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2473ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8e9190613d5b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d379190613d5b565b6040518363ffffffff1660e01b8152600401611d54929190613d86565b6020604051808303815f875af1158015611d70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d949190613d5b565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611dff60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611087565b611e2b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612d59565b611e3d611e3730610f1e565b34612e37565b565b611e47611f35565b73ffffffffffffffffffffffffffffffffffffffff16611e65611201565b73ffffffffffffffffffffffffffffffffffffffff1614611ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb290613a5c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2090613e1d565b60405180910390fd5b611f3281612c94565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa190613eab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200f90613f39565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120f2919061387c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361216d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216490613fc7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d290614055565b60405180910390fd5b5f81036121f2576121ed83835f612f15565b612c8f565b5f439050600d5f9054906101000a900460ff16156126da57612212611201565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156122805750612250611201565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122b857505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156122f2575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561230b5750600660149054906101000a900460ff16155b156126d957600d60019054906101000a900460ff166123ff5760175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806123bf575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6123fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f5906140bd565b60405180910390fd5b5b601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561249c575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612543576008548211156124e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dd9061414b565b60405180910390fd5b6008546124f284610f1e565b836124fd9190613aa7565b111561253e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612535906141b3565b60405180910390fd5b6126d8565b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125e0575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561262f5760085482111561262a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262190614241565b60405180910390fd5b6126d7565b60195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166126d65760085461268984610f1e565b836126949190613aa7565b11156126d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cc906141b3565b60405180910390fd5b5b5b5b5b5b5f6126e430610f1e565b90505f60095482101590508080156127095750600660149054906101000a900460ff16155b80156127275750600260185f8581526020019081526020015f205411155b801561277a5750601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156127cd575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612820575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612887576001600660146101000a81548160ff02191690831515021790555061284861318a565b60185f8481526020019081526020015f205f81546128659061425f565b919050819055505f600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff161580156128ea5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561293d575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561294b5761294a613252565b5b5f600660149054906101000a900460ff1615905060175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806129fa575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612a03575f90505b5f805f8315612c7c57601a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a6357505f601254115b15612b9e57606460125489612a7891906142a6565b612a829190614314565b925060125460145484612a9591906142a6565b612a9f9190614314565b90508083612aad9190614344565b915060155f815480929190612ac19061425f565b91905055505f612af160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f1e565b90505f8203612b805761080081118015612b0e5750600260155410155b80612b29575061040081118015612b285750600460155410155b5b80612b44575061020081118015612b435750600860155410155b5b80612b5f575061010081118015612b5e5750601060155410155b5b15612b7f575f60158190555060019150600184612b7c9190613aa7565b93505b5b8860165f828254612b919190613aa7565b9250508190555050612c43565b5f600f54118015612bf55750601a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612c42576064600f5489612c0a91906142a6565b612c149190614314565b9250600f5460115484612c2791906142a6565b612c319190614314565b90508083612c3f9190614344565b91505b5b5f821115612c5757612c568a3084612f15565b5b5f811115612c6d57612c6c8a61dead83612f15565b5b8288612c799190614344565b97505b612c878a8a8a612f15565b505050505050505b505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b612e62307f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2484611f3c565b7f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2473ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80612eab611201565b426040518863ffffffff1660e01b8152600401612ecd969594939291906143b0565b60606040518083038185885af1158015612ee9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612f0e9190614423565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7a90613fc7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe890614055565b60405180910390fd5b612ffc8383836133a7565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561307f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613076906144e3565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461310d9190613aa7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613171919061387c565b60405180910390a36131848484846133ac565b50505050565b5f61319430610f1e565b90505f8082036131a5575050613250565b600a548211156131b557600a5491505b5f8290506131c2816133b1565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516132079061452e565b5f6040518083038185875af1925050503d805f8114613241576040519150601f19603f3d011682016040523d82523d5f602084013e613246565b606091505b5050809250505050505b565b5f61327d60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f1e565b90506101008111156133a35761040060165410156132be57600b54600c546132a59190613aa7565b4210156132b257506133a5565b42600c819055506132c6565b5f6016819055505b6132f560065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead6001612f15565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561335f575f80fd5b505af1158015613371573d5f803e3d5ffd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a1505b505b565b505050565b505050565b5f600267ffffffffffffffff8111156133cd576133cc614542565b5b6040519080825280602002602001820160405280156133fb5781602001602082028036833780820191505090505b50905030815f815181106134125761341161456f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134d99190613d5b565b816001815181106134ed576134ec61456f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613552307f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2484611f3c565b7f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2473ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016135b3959493929190614653565b5f604051808303815f87803b1580156135ca575f80fd5b505af11580156135dc573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b6135fa816135e8565b8114613604575f80fd5b50565b5f81359050613615816135f1565b92915050565b5f8060408385031215613631576136306135e4565b5b5f61363e85828601613607565b925050602061364f85828601613607565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613690578082015181840152602081019050613675565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6136b582613659565b6136bf8185613663565b93506136cf818560208601613673565b6136d88161369b565b840191505092915050565b5f6020820190508181035f8301526136fb81846136ab565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61372c82613703565b9050919050565b61373c81613722565b8114613746575f80fd5b50565b5f8135905061375781613733565b92915050565b5f8060408385031215613773576137726135e4565b5b5f61378085828601613749565b925050602061379185828601613607565b9150509250929050565b5f8115159050919050565b6137af8161379b565b82525050565b5f6020820190506137c85f8301846137a6565b92915050565b5f602082840312156137e3576137e26135e4565b5b5f6137f084828501613749565b91505092915050565b5f819050919050565b5f61381c61381761381284613703565b6137f9565b613703565b9050919050565b5f61382d82613802565b9050919050565b5f61383e82613823565b9050919050565b61384e81613834565b82525050565b5f6020820190506138675f830184613845565b92915050565b613876816135e8565b82525050565b5f60208201905061388f5f83018461386d565b92915050565b5f805f606084860312156138ac576138ab6135e4565b5b5f6138b986828701613749565b93505060206138ca86828701613749565b92505060406138db86828701613607565b9150509250925092565b6138ee81613722565b82525050565b5f6020820190506139075f8301846138e5565b92915050565b5f60ff82169050919050565b6139228161390d565b82525050565b5f60208201905061393b5f830184613919565b92915050565b61394a8161379b565b8114613954575f80fd5b50565b5f8135905061396581613941565b92915050565b5f8060408385031215613981576139806135e4565b5b5f61398e85828601613749565b925050602061399f85828601613957565b9150509250929050565b5f602082840312156139be576139bd6135e4565b5b5f6139cb84828501613607565b91505092915050565b5f80604083850312156139ea576139e96135e4565b5b5f6139f785828601613749565b9250506020613a0885828601613749565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a46602083613663565b9150613a5182613a12565b602082019050919050565b5f6020820190508181035f830152613a7381613a3a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ab1826135e8565b9150613abc836135e8565b9250828201905080821115613ad457613ad3613a7a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613b1e57607f821691505b602082108103613b3157613b30613ada565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613b91602883613663565b9150613b9c82613b37565b604082019050919050565b5f6020820190508181035f830152613bbe81613b85565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613c1f603983613663565b9150613c2a82613bc5565b604082019050919050565b5f6020820190508181035f830152613c4c81613c13565b9050919050565b5f604082019050613c665f8301856138e5565b613c73602083018461386d565b9392505050565b5f81519050613c8881613941565b92915050565b5f60208284031215613ca357613ca26135e4565b5b5f613cb084828501613c7a565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613d13602583613663565b9150613d1e82613cb9565b604082019050919050565b5f6020820190508181035f830152613d4081613d07565b9050919050565b5f81519050613d5581613733565b92915050565b5f60208284031215613d7057613d6f6135e4565b5b5f613d7d84828501613d47565b91505092915050565b5f604082019050613d995f8301856138e5565b613da660208301846138e5565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613e07602683613663565b9150613e1282613dad565b604082019050919050565b5f6020820190508181035f830152613e3481613dfb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613e95602483613663565b9150613ea082613e3b565b604082019050919050565b5f6020820190508181035f830152613ec281613e89565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f23602283613663565b9150613f2e82613ec9565b604082019050919050565b5f6020820190508181035f830152613f5081613f17565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613fb1602583613663565b9150613fbc82613f57565b604082019050919050565b5f6020820190508181035f830152613fde81613fa5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61403f602383613663565b915061404a82613fe5565b604082019050919050565b5f6020820190508181035f83015261406c81614033565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6140a7601683613663565b91506140b282614073565b602082019050919050565b5f6020820190508181035f8301526140d48161409b565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614135603583613663565b9150614140826140db565b604082019050919050565b5f6020820190508181035f83015261416281614129565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61419d601383613663565b91506141a882614169565b602082019050919050565b5f6020820190508181035f8301526141ca81614191565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61422b603683613663565b9150614236826141d1565b604082019050919050565b5f6020820190508181035f8301526142588161421f565b9050919050565b5f614269826135e8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361429b5761429a613a7a565b5b600182019050919050565b5f6142b0826135e8565b91506142bb836135e8565b92508282026142c9816135e8565b915082820484148315176142e0576142df613a7a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61431e826135e8565b9150614329836135e8565b925082614339576143386142e7565b5b828204905092915050565b5f61434e826135e8565b9150614359836135e8565b925082820390508181111561437157614370613a7a565b5b92915050565b5f819050919050565b5f61439a61439561439084614377565b6137f9565b6135e8565b9050919050565b6143aa81614380565b82525050565b5f60c0820190506143c35f8301896138e5565b6143d0602083018861386d565b6143dd60408301876143a1565b6143ea60608301866143a1565b6143f760808301856138e5565b61440460a083018461386d565b979650505050505050565b5f8151905061441d816135f1565b92915050565b5f805f6060848603121561443a576144396135e4565b5b5f6144478682870161440f565b93505060206144588682870161440f565b92505060406144698682870161440f565b9150509250925092565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6144cd602683613663565b91506144d882614473565b604082019050919050565b5f6020820190508181035f8301526144fa816144c1565b9050919050565b5f81905092915050565b50565b5f6145195f83614501565b91506145248261450b565b5f82019050919050565b5f6145388261450e565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6145ce81613722565b82525050565b5f6145df83836145c5565b60208301905092915050565b5f602082019050919050565b5f6146018261459c565b61460b81856145a6565b9350614616836145b6565b805f5b8381101561464657815161462d88826145d4565b9750614638836145eb565b925050600181019050614619565b5085935050505092915050565b5f60a0820190506146665f83018861386d565b61467360208301876143a1565b818103604083015261468581866145f7565b905061469460608301856138e5565b6146a1608083018461386d565b969550505050505056fea2646970667358221220bb16a46f544eb4818af8efb74c24fb201e7818b46351804a895a7e6704273cb264736f6c63430008170033
Deployed Bytecode Sourcemap
14017:13333:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19111:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9074:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10061:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15004:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14059:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9402:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10263:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14152:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14404:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9294:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14367:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10800:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14117:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14489:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14640:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18825:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14710:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14745:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9518:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8034:103;;;;;;;;;;;;;:::i;:::-;;17833:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18156:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14850:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17706:119;;;;;;;;;;;;;:::i;:::-;;7811:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9182:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19594:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18599:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27146:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11098:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14451:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14817:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9669:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20135:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14782:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17962:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15076:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14529:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19404:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14285:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18363:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14606:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9877:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14327:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14676:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16912:415;;;:::i;:::-;;8145:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19111:285;7957:12;:10;:12::i;:::-;7946:23;;:7;:5;:7::i;:::-;:23;;;7938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19248:12:::1;19230:15;:30;;;;19285:8;19271:11;:22;;;;19338:11;;19320:15;;:29;;;;:::i;:::-;19304:13;:45;;;;19385:2;19368:13;;:19;;19360:28;;;::::0;::::1;;19111:285:::0;;:::o;9074:100::-;9128:13;9161:5;9154:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9074:100;:::o;10061:194::-;10169:4;10186:39;10195:12;:10;:12::i;:::-;10209:7;10218:6;10186:8;:39::i;:::-;10243:4;10236:11;;10061:194;;;;:::o;15004:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;14059:51::-;;;:::o;9402:108::-;9463:7;9490:12;;9483:19;;9402:108;:::o;10263:529::-;10403:4;10420:36;10430:6;10438:9;10449:6;10420:9;:36::i;:::-;10469:24;10496:11;:19;10508:6;10496:19;;;;;;;;;;;;;;;:33;10516:12;:10;:12::i;:::-;10496:33;;;;;;;;;;;;;;;;10469:60;;10582:6;10562:16;:26;;10540:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;10692:57;10701:6;10709:12;:10;:12::i;:::-;10742:6;10723:16;:25;10692:8;:57::i;:::-;10780:4;10773:11;;;10263:529;;;;;:::o;14152:53::-;14198:6;14152:53;:::o;14404:40::-;;;;:::o;9294:100::-;9352:5;9377:9;;;;;;;;;;;9370:16;;9294:100;:::o;14367:28::-;;;;:::o;10800:290::-;10913:4;10930:130;10953:12;:10;:12::i;:::-;10980:7;11039:10;11002:11;:25;11014:12;:10;:12::i;:::-;11002:25;;;;;;;;;;;;;;;:34;11028:7;11002:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10930:8;:130::i;:::-;11078:4;11071:11;;10800:290;;;;:::o;14117:28::-;;;;;;;;;;;;;:::o;14489:33::-;;;;;;;;;;;;;:::o;14640:29::-;;;;:::o;18825:278::-;7957:12;:10;:12::i;:::-;7946:23;;:7;:5;:7::i;:::-;:23;;;7938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18960:12:::1;18943:14;:29;;;;18996:8;18983:10;:21;;;;19047:10;;19030:14;;:27;;;;:::i;:::-;19015:12;:42;;;;19092:2;19076:12;;:18;;19068:27;;;::::0;::::1;;18825:278:::0;;:::o;14710:28::-;;;;:::o;14745:30::-;;;;:::o;9518:143::-;9608:7;9635:9;:18;9645:7;9635:18;;;;;;;;;;;;;;;;9628:25;;9518:143;;;:::o;8034:103::-;7957:12;:10;:12::i;:::-;7946:23;;:7;:5;:7::i;:::-;:23;;;7938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8099:30:::1;8126:1;8099:18;:30::i;:::-;8034:103::o:0;17833:121::-;17885:4;7957:12;:10;:12::i;:::-;7946:23;;:7;:5;:7::i;:::-;:23;;;7938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17919:5:::1;17902:14;;:22;;;;;;;;;;;;;;;;;;17942:4;17935:11;;17833:121:::0;:::o;18156:199::-;7957:12;:10;:12::i;:::-;7946:23;;:7;:5;:7::i;:::-;:23;;;7938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18337:10:::1;18286:31;:48;18318:15;18286:48;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;18156:199:::0;;:::o;14850:32::-;;;;:::o;17706:119::-;7957:12;:10;:12::i;:::-;7946:23;;:7;:5;:7::i;:::-;:23;;;7938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17777:4:::1;17761:13;;:20;;;;;;;;;;;;;;;;;;17805:12;17792:10;:25;;;;17706:119::o:0;7811:87::-;7857:7;7884:6;;;;;;;;;;;7877:13;;7811:87;:::o;9182:104::-;9238:13;9271:7;9264:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9182:104;:::o;19594:306::-;7957:12;:10;:12::i;:::-;7946:23;;:7;:5;:7::i;:::-;:23;;;7938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19740:13:::1;;;;;;;;;;;19732:21;;:4;:21;;::::0;19710:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19851:41;19880:4;19886:5;19851:28;:41::i;:::-;19594:306:::0;;:::o;18599:218::-;18691:4;7957:12;:10;:12::i;:::-;7946:23;;:7;:5;:7::i;:::-;:23;;;7938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18729:1:::1;18716:9;:14;;:34;;;;;18747:3;18734:9;:16;;18716:34;18708:43;;;::::0;::::1;;18778:9;18762:13;:25;;;;18805:4;18798:11;;18599:218:::0;;;:::o;27146:201::-;7957:12;:10;:12::i;:::-;7946:23;;:7;:5;:7::i;:::-;:23;;;7938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27240:20:::1;27270:14;27240:45;;27296:13;:22;;;27319:10;27331:7;27296:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27229:118;27146:201:::0;;:::o;11098:475::-;11216:4;11233:24;11260:11;:25;11272:12;:10;:12::i;:::-;11260:25;;;;;;;;;;;;;;;:34;11286:7;11260:34;;;;;;;;;;;;;;;;11233:61;;11347:15;11327:16;:35;;11305:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;11463:67;11472:12;:10;:12::i;:::-;11486:7;11514:15;11495:16;:34;11463:8;:67::i;:::-;11561:4;11554:11;;;11098:475;;;;:::o;14451:29::-;;;;:::o;14817:26::-;;;;:::o;9669:200::-;9780:4;9797:42;9807:12;:10;:12::i;:::-;9821:9;9832:6;9797:9;:42::i;:::-;9857:4;9850:11;;9669:200;;;;:::o;20135:222::-;7957:12;:10;:12::i;:::-;7946:23;;:7;:5;:7::i;:::-;:23;;;7938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20288:14:::1;;;;;;;;;;;20245:58;;20268:18;20245:58;;;;;;;;;;;;20331:18;20314:14;;:35;;;;;;;;;;;;;;;;;;20135:222:::0;:::o;14782:26::-;;;;:::o;17962:186::-;7957:12;:10;:12::i;:::-;7946:23;;:7;:5;:7::i;:::-;:23;;;7938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18087:4:::1;18041:31;:43;18073:10;18041:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;18136:4;18102:19;:31;18122:10;18102:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;17962:186:::0;;:::o;15076:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;14529:33::-;;;;;;;;;;;;;:::o;19404:182::-;7957:12;:10;:12::i;:::-;7946:23;;:7;:5;:7::i;:::-;:23;;;7938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19520:8:::1;19489:19;:28;19509:7;19489:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19560:7;19544:34;;;19569:8;19544:34;;;;;;:::i;:::-;;;;;;;;19404:182:::0;;:::o;14285:35::-;;;;:::o;18363:228::-;18460:4;7957:12;:10;:12::i;:::-;7946:23;;:7;:5;:7::i;:::-;:23;;;7938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18498:1:::1;18485:9;:14;;:34;;;;;18516:3;18503:9;:16;;18485:34;18477:43;;;::::0;::::1;;18552:9;18531:18;:30;;;;18579:4;18572:11;;18363:228:::0;;;:::o;14606:27::-;;;;:::o;9877:176::-;9991:7;10018:11;:18;10030:5;10018:18;;;;;;;;;;;;;;;:27;10037:7;10018:27;;;;;;;;;;;;;;;;10011:34;;9877:176;;;;:::o;14327:33::-;;;;:::o;14676:25::-;;;;:::o;16912:415::-;7957:12;:10;:12::i;:::-;7946:23;;:7;:5;:7::i;:::-;:23;;;7938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17008:15:::1;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16990:55;;;17068:4;17088:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16990:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16974:13;;:147;;;;;;;;;;;;;;;;;;17132:55;17166:13;;;;;;;;;;;17182:4;17132:25;:55::i;:::-;17198:58;17235:13;;;;;;;;;;;17251:4;17198:28;:58::i;:::-;17269:50;17283:24;17301:4;17283:9;:24::i;:::-;17309:9;17269:13;:50::i;:::-;16912:415::o:0;8145:238::-;7957:12;:10;:12::i;:::-;7946:23;;:7;:5;:7::i;:::-;:23;;;7938:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8268:1:::1;8248:22;;:8;:22;;::::0;8226:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8347:28;8366:8;8347:18;:28::i;:::-;8145:238:::0;:::o;7332:98::-;7385:7;7412:10;7405:17;;7332:98;:::o;13365:380::-;13518:1;13501:19;;:5;:19;;;13493:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13599:1;13580:21;;:7;:21;;;13572:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13683:6;13653:11;:18;13665:5;13653:18;;;;;;;;;;;;;;;:27;13672:7;13653:27;;;;;;;;;;;;;;;:36;;;;13721:7;13705:32;;13714:5;13705:32;;;13730:6;13705:32;;;;;;:::i;:::-;;;;;;;;13365:380;;;:::o;20365:5060::-;20513:1;20497:18;;:4;:18;;;20489:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20590:1;20576:16;;:2;:16;;;20568:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20659:1;20649:6;:11;20645:93;;20677:28;20693:4;20699:2;20703:1;20677:15;:28::i;:::-;20720:7;;20645:93;20750:19;20772:12;20750:34;;20801:14;;;;;;;;;;;20797:1661;;;20862:7;:5;:7::i;:::-;20854:15;;:4;:15;;;;:49;;;;;20896:7;:5;:7::i;:::-;20890:13;;:2;:13;;;;20854:49;:86;;;;;20938:1;20924:16;;:2;:16;;;;20854:86;:128;;;;;20975:6;20961:21;;:2;:21;;;;20854:128;:160;;;;;21004:10;;;;;;;;;;;21003:11;20854:160;20832:1615;;;21054:13;;;;;;;;;;;21049:223;;21126:19;:25;21146:4;21126:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21155:19;:23;21175:2;21155:23;;;;;;;;;;;;;;;;;;;;;;;;;21126:52;21092:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;21049:223;21318:25;:31;21344:4;21318:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21375:31;:35;21407:2;21375:35;;;;;;;;;;;;;;;;;;;;;;;;;21374:36;21318:92;21292:1140;;;21497:20;;21487:6;:30;;21453:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;21705:20;;21688:13;21698:2;21688:9;:13::i;:::-;21679:6;:22;;;;:::i;:::-;:46;;21645:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;21292:1140;;;21865:25;:29;21891:2;21865:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21920:31;:37;21952:4;21920:37;;;;;;;;;;;;;;;;;;;;;;;;;21919:38;21865:92;21839:593;;;22044:20;;22034:6;:30;;22000:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;21839:593;;;22201:31;:35;22233:2;22201:35;;;;;;;;;;;;;;;;;;;;;;;;;22196:236;;22321:20;;22304:13;22314:2;22304:9;:13::i;:::-;22295:6;:22;;;;:::i;:::-;:46;;22261:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;22196:236;21839:593;21292:1140;20832:1615;20797:1661;22470:28;22501:24;22519:4;22501:9;:24::i;:::-;22470:55;;22536:12;22575:18;;22551:20;:42;;22536:57;;22624:7;:35;;;;;22649:10;;;;;;;;;;;22648:11;22624:35;:83;;;;;22705:1;22677:11;:24;22689:11;22677:24;;;;;;;;;;;;:29;;22624:83;:132;;;;;22725:25;:31;22751:4;22725:31;;;;;;;;;;;;;;;;;;;;;;;;;22724:32;22624:132;:175;;;;;22774:19;:25;22794:4;22774:25;;;;;;;;;;;;;;;;;;;;;;;;;22773:26;22624:175;:216;;;;;22817:19;:23;22837:2;22817:23;;;;;;;;;;;;;;;;;;;;;;;;;22816:24;22624:216;22606:395;;;22880:4;22867:10;;:17;;;;;;;;;;;;;;;;;;22901:10;:8;:10::i;:::-;22930:11;:24;22942:11;22930:24;;;;;;;;;;;;22928:26;;;;;:::i;:::-;;;;;;;;22984:5;22971:10;;:18;;;;;;;;;;;;;;;;;;22606:395;23032:10;;;;;;;;;;;23031:11;:57;;;;;23059:25;:29;23085:2;23059:29;;;;;;;;;;;;;;;;;;;;;;;;;23031:57;:100;;;;;23106:19;:25;23126:4;23106:25;;;;;;;;;;;;;;;;;;;;;;;;;23105:26;23031:100;23013:186;;;23158:29;:27;:29::i;:::-;23013:186;23211:12;23227:10;;;;;;;;;;;23226:11;23211:26;;23254:19;:25;23274:4;23254:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23283:19;:23;23303:2;23283:23;;;;;;;;;;;;;;;;;;;;;;;;;23254:52;23250:100;;;23333:5;23323:15;;23250:100;23362:12;23389:18;23422:14;23623:7;23619:1753;;;23675:25;:29;23701:2;23675:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23724:1;23708:13;;:17;23675:50;23671:1427;;;23780:3;23763:13;;23754:6;:22;;;;:::i;:::-;23753:30;;;;:::i;:::-;23746:37;;23834:13;;23819:11;;23812:4;:18;;;;:::i;:::-;23811:36;;;;:::i;:::-;23802:45;;23886:6;23879:4;:13;;;;:::i;:::-;23866:26;;24173:11;;:13;;;;;;;;;:::i;:::-;;;;;;24205:17;24225:24;24235:13;;;;;;;;;;;24225:9;:24::i;:::-;24205:44;;24282:1;24272:6;:11;24268:490;;24351:4;24339:9;:16;:36;;;;;24374:1;24359:11;;:16;;24339:36;24338:105;;;;24418:4;24406:9;:16;:36;;;;;24441:1;24426:11;;:16;;24406:36;24338:105;:171;;;;24485:3;24473:9;:15;:35;;;;;24507:1;24492:11;;:16;;24473:35;24338:171;:238;;;;24551:3;24539:9;:15;:36;;;;;24573:2;24558:11;;:17;;24539:36;24338:238;24308:431;;;24641:1;24627:11;:15;;;;24678:1;24669:10;;24714:1;24706:9;;;;;:::i;:::-;;;24308:431;24268:490;24799:6;24778:17;;:27;;;;;;;:::i;:::-;;;;;;;;23727:1094;23671:1427;;;24882:1;24867:12;;:16;:51;;;;;24887:25;:31;24913:4;24887:31;;;;;;;;;;;;;;;;;;;;;;;;;24867:51;24863:235;;;24972:3;24956:12;;24947:6;:21;;;;:::i;:::-;24946:29;;;;:::i;:::-;24939:36;;25025:12;;25011:10;;25004:4;:17;;;;:::i;:::-;25003:34;;;;:::i;:::-;24994:43;;25076:6;25069:4;:13;;;;:::i;:::-;25056:26;;24863:235;23671:1427;25131:1;25118:10;:14;25114:103;;;25153:48;25169:4;25183;25190:10;25153:15;:48::i;:::-;25114:103;25246:1;25237:6;:10;25233:97;;;25268:46;25284:4;25298:6;25307;25268:15;:46::i;:::-;25233:97;25356:4;25346:14;;;;;:::i;:::-;;;23619:1753;25384:33;25400:4;25406:2;25410:6;25384:15;:33::i;:::-;20478:4947;;;;;;;20365:5060;;;;:::o;8391:191::-;8465:16;8484:6;;;;;;;;;;;8465:25;;8510:8;8501:6;;:17;;;;;;;;;;;;;;;;;;8565:8;8534:40;;8555:8;8534:40;;;;;;;;;;;;8454:128;8391:191;:::o;19908:219::-;20025:5;19991:25;:31;20017:4;19991:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20057:4;20041:13;;:20;;;;;;;;;;;;;;;;;;20113:5;20079:40;;20107:4;20079:40;;;;;;;;;;;;19908:219;;:::o;17335:363::-;17417:62;17434:4;17449:15;17467:11;17417:8;:62::i;:::-;17492:15;:31;;;17531:9;17564:4;17584:11;17610:1;17626;17642:7;:5;:7::i;:::-;17664:15;17492:198;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17335:363;;:::o;11581:770::-;11739:1;11721:20;;:6;:20;;;11713:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11823:1;11802:23;;:9;:23;;;11794:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11878:47;11899:6;11907:9;11918:6;11878:20;:47::i;:::-;11938:21;11962:9;:17;11972:6;11962:17;;;;;;;;;;;;;;;;11938:41;;12029:6;12012:13;:23;;11990:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;12173:6;12157:13;:22;12137:9;:17;12147:6;12137:17;;;;;;;;;;;;;;;:42;;;;12225:6;12201:9;:20;12211:9;12201:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12266:9;12249:35;;12258:6;12249:35;;;12277:6;12249:35;;;;;;:::i;:::-;;;;;;;;12297:46;12317:6;12325:9;12336:6;12297:19;:46::i;:::-;11702:649;11581:770;;;:::o;25433:517::-;25472:23;25498:24;25516:4;25498:9;:24::i;:::-;25472:50;;25533:12;25581:1;25562:15;:20;25558:59;;25599:7;;;;25558:59;25651:13;;25633:15;:31;25629:95;;;25699:13;;25681:31;;25629:95;25736:26;25765:15;25736:44;;25793:36;25810:18;25793:16;:36::i;:::-;25864:14;;;;;;;;;;;25856:28;;25906:21;25856:86;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25842:100;;;;;25461:489;;;25433:517;:::o;26441:697::-;26500:28;26531:24;26541:13;;;;;;;;;;;26531:9;:24::i;:::-;26500:55;;26595:3;26572:20;:26;26568:563;;;26639:4;26619:17;;:24;26615:312;;;26703:15;;26686:14;;:32;;;;:::i;:::-;26668:15;:50;26664:186;;;26743:7;;;26664:186;26815:15;26798:14;:32;;;;26615:312;;;26910:1;26890:17;:21;;;;26615:312;26943:50;26959:13;;;;;;;;;;;26982:6;26991:1;26943:15;:50::i;:::-;27010:19;27047:13;;;;;;;;;;;27010:51;;27076:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27107:12;;;;;;;;;;26600:531;26568:563;26489:649;26441:697;:::o;13753:125::-;;;;:::o;13886:124::-;;;;:::o;25958:475::-;26024:21;26062:1;26048:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26024:40;;26093:4;26075;26080:1;26075:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26119:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26109:4;26114:1;26109:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26154:62;26171:4;26186:15;26204:11;26154:8;:62::i;:::-;26229:15;:66;;;26310:11;26336:1;26352:4;26379;26399:15;26229:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26013:420;25958:475;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:329::-;3985:6;4034:2;4022:9;4013:7;4009:23;4005:32;4002:119;;;4040:79;;:::i;:::-;4002:119;4160:1;4185:53;4230:7;4221:6;4210:9;4206:22;4185:53;:::i;:::-;4175:63;;4131:117;3926:329;;;;:::o;4261:60::-;4289:3;4310:5;4303:12;;4261:60;;;:::o;4327:142::-;4377:9;4410:53;4428:34;4437:24;4455:5;4437:24;:::i;:::-;4428:34;:::i;:::-;4410:53;:::i;:::-;4397:66;;4327:142;;;:::o;4475:126::-;4525:9;4558:37;4589:5;4558:37;:::i;:::-;4545:50;;4475:126;;;:::o;4607:152::-;4683:9;4716:37;4747:5;4716:37;:::i;:::-;4703:50;;4607:152;;;:::o;4765:183::-;4878:63;4935:5;4878:63;:::i;:::-;4873:3;4866:76;4765:183;;:::o;4954:274::-;5073:4;5111:2;5100:9;5096:18;5088:26;;5124:97;5218:1;5207:9;5203:17;5194:6;5124:97;:::i;:::-;4954:274;;;;:::o;5234:118::-;5321:24;5339:5;5321:24;:::i;:::-;5316:3;5309:37;5234:118;;:::o;5358:222::-;5451:4;5489:2;5478:9;5474:18;5466:26;;5502:71;5570:1;5559:9;5555:17;5546:6;5502:71;:::i;:::-;5358:222;;;;:::o;5586:619::-;5663:6;5671;5679;5728:2;5716:9;5707:7;5703:23;5699:32;5696:119;;;5734:79;;:::i;:::-;5696:119;5854:1;5879:53;5924:7;5915:6;5904:9;5900:22;5879:53;:::i;:::-;5869:63;;5825:117;5981:2;6007:53;6052:7;6043:6;6032:9;6028:22;6007:53;:::i;:::-;5997:63;;5952:118;6109:2;6135:53;6180:7;6171:6;6160:9;6156:22;6135:53;:::i;:::-;6125:63;;6080:118;5586:619;;;;;:::o;6211:118::-;6298:24;6316:5;6298:24;:::i;:::-;6293:3;6286:37;6211:118;;:::o;6335:222::-;6428:4;6466:2;6455:9;6451:18;6443:26;;6479:71;6547:1;6536:9;6532:17;6523:6;6479:71;:::i;:::-;6335:222;;;;:::o;6563:86::-;6598:7;6638:4;6631:5;6627:16;6616:27;;6563:86;;;:::o;6655:112::-;6738:22;6754:5;6738:22;:::i;:::-;6733:3;6726:35;6655:112;;:::o;6773:214::-;6862:4;6900:2;6889:9;6885:18;6877:26;;6913:67;6977:1;6966:9;6962:17;6953:6;6913:67;:::i;:::-;6773:214;;;;:::o;6993:116::-;7063:21;7078:5;7063:21;:::i;:::-;7056:5;7053:32;7043:60;;7099:1;7096;7089:12;7043:60;6993:116;:::o;7115:133::-;7158:5;7196:6;7183:20;7174:29;;7212:30;7236:5;7212:30;:::i;:::-;7115:133;;;;:::o;7254:468::-;7319:6;7327;7376:2;7364:9;7355:7;7351:23;7347:32;7344:119;;;7382:79;;:::i;:::-;7344:119;7502:1;7527:53;7572:7;7563:6;7552:9;7548:22;7527:53;:::i;:::-;7517:63;;7473:117;7629:2;7655:50;7697:7;7688:6;7677:9;7673:22;7655:50;:::i;:::-;7645:60;;7600:115;7254:468;;;;;:::o;7728:329::-;7787:6;7836:2;7824:9;7815:7;7811:23;7807:32;7804:119;;;7842:79;;:::i;:::-;7804:119;7962:1;7987:53;8032:7;8023:6;8012:9;8008:22;7987:53;:::i;:::-;7977:63;;7933:117;7728:329;;;;:::o;8063:474::-;8131:6;8139;8188:2;8176:9;8167:7;8163:23;8159:32;8156:119;;;8194:79;;:::i;:::-;8156:119;8314:1;8339:53;8384:7;8375:6;8364:9;8360:22;8339:53;:::i;:::-;8329:63;;8285:117;8441:2;8467:53;8512:7;8503:6;8492:9;8488:22;8467:53;:::i;:::-;8457:63;;8412:118;8063:474;;;;;:::o;8543:182::-;8683:34;8679:1;8671:6;8667:14;8660:58;8543:182;:::o;8731:366::-;8873:3;8894:67;8958:2;8953:3;8894:67;:::i;:::-;8887:74;;8970:93;9059:3;8970:93;:::i;:::-;9088:2;9083:3;9079:12;9072:19;;8731:366;;;:::o;9103:419::-;9269:4;9307:2;9296:9;9292:18;9284:26;;9356:9;9350:4;9346:20;9342:1;9331:9;9327:17;9320:47;9384:131;9510:4;9384:131;:::i;:::-;9376:139;;9103:419;;;:::o;9528:180::-;9576:77;9573:1;9566:88;9673:4;9670:1;9663:15;9697:4;9694:1;9687:15;9714:191;9754:3;9773:20;9791:1;9773:20;:::i;:::-;9768:25;;9807:20;9825:1;9807:20;:::i;:::-;9802:25;;9850:1;9847;9843:9;9836:16;;9871:3;9868:1;9865:10;9862:36;;;9878:18;;:::i;:::-;9862:36;9714:191;;;;:::o;9911:180::-;9959:77;9956:1;9949:88;10056:4;10053:1;10046:15;10080:4;10077:1;10070:15;10097:320;10141:6;10178:1;10172:4;10168:12;10158:22;;10225:1;10219:4;10215:12;10246:18;10236:81;;10302:4;10294:6;10290:17;10280:27;;10236:81;10364:2;10356:6;10353:14;10333:18;10330:38;10327:84;;10383:18;;:::i;:::-;10327:84;10148:269;10097:320;;;:::o;10423:227::-;10563:34;10559:1;10551:6;10547:14;10540:58;10632:10;10627:2;10619:6;10615:15;10608:35;10423:227;:::o;10656:366::-;10798:3;10819:67;10883:2;10878:3;10819:67;:::i;:::-;10812:74;;10895:93;10984:3;10895:93;:::i;:::-;11013:2;11008:3;11004:12;10997:19;;10656:366;;;:::o;11028:419::-;11194:4;11232:2;11221:9;11217:18;11209:26;;11281:9;11275:4;11271:20;11267:1;11256:9;11252:17;11245:47;11309:131;11435:4;11309:131;:::i;:::-;11301:139;;11028:419;;;:::o;11453:244::-;11593:34;11589:1;11581:6;11577:14;11570:58;11662:27;11657:2;11649:6;11645:15;11638:52;11453:244;:::o;11703:366::-;11845:3;11866:67;11930:2;11925:3;11866:67;:::i;:::-;11859:74;;11942:93;12031:3;11942:93;:::i;:::-;12060:2;12055:3;12051:12;12044:19;;11703:366;;;:::o;12075:419::-;12241:4;12279:2;12268:9;12264:18;12256:26;;12328:9;12322:4;12318:20;12314:1;12303:9;12299:17;12292:47;12356:131;12482:4;12356:131;:::i;:::-;12348:139;;12075:419;;;:::o;12500:332::-;12621:4;12659:2;12648:9;12644:18;12636:26;;12672:71;12740:1;12729:9;12725:17;12716:6;12672:71;:::i;:::-;12753:72;12821:2;12810:9;12806:18;12797:6;12753:72;:::i;:::-;12500:332;;;;;:::o;12838:137::-;12892:5;12923:6;12917:13;12908:22;;12939:30;12963:5;12939:30;:::i;:::-;12838:137;;;;:::o;12981:345::-;13048:6;13097:2;13085:9;13076:7;13072:23;13068:32;13065:119;;;13103:79;;:::i;:::-;13065:119;13223:1;13248:61;13301:7;13292:6;13281:9;13277:22;13248:61;:::i;:::-;13238:71;;13194:125;12981:345;;;;:::o;13332:224::-;13472:34;13468:1;13460:6;13456:14;13449:58;13541:7;13536:2;13528:6;13524:15;13517:32;13332:224;:::o;13562:366::-;13704:3;13725:67;13789:2;13784:3;13725:67;:::i;:::-;13718:74;;13801:93;13890:3;13801:93;:::i;:::-;13919:2;13914:3;13910:12;13903:19;;13562:366;;;:::o;13934:419::-;14100:4;14138:2;14127:9;14123:18;14115:26;;14187:9;14181:4;14177:20;14173:1;14162:9;14158:17;14151:47;14215:131;14341:4;14215:131;:::i;:::-;14207:139;;13934:419;;;:::o;14359:143::-;14416:5;14447:6;14441:13;14432:22;;14463:33;14490:5;14463:33;:::i;:::-;14359:143;;;;:::o;14508:351::-;14578:6;14627:2;14615:9;14606:7;14602:23;14598:32;14595:119;;;14633:79;;:::i;:::-;14595:119;14753:1;14778:64;14834:7;14825:6;14814:9;14810:22;14778:64;:::i;:::-;14768:74;;14724:128;14508:351;;;;:::o;14865:332::-;14986:4;15024:2;15013:9;15009:18;15001:26;;15037:71;15105:1;15094:9;15090:17;15081:6;15037:71;:::i;:::-;15118:72;15186:2;15175:9;15171:18;15162:6;15118:72;:::i;:::-;14865:332;;;;;:::o;15203:225::-;15343:34;15339:1;15331:6;15327:14;15320:58;15412:8;15407:2;15399:6;15395:15;15388:33;15203:225;:::o;15434:366::-;15576:3;15597:67;15661:2;15656:3;15597:67;:::i;:::-;15590:74;;15673:93;15762:3;15673:93;:::i;:::-;15791:2;15786:3;15782:12;15775:19;;15434:366;;;:::o;15806:419::-;15972:4;16010:2;15999:9;15995:18;15987:26;;16059:9;16053:4;16049:20;16045:1;16034:9;16030:17;16023:47;16087:131;16213:4;16087:131;:::i;:::-;16079:139;;15806:419;;;:::o;16231:223::-;16371:34;16367:1;16359:6;16355:14;16348:58;16440:6;16435:2;16427:6;16423:15;16416:31;16231:223;:::o;16460:366::-;16602:3;16623:67;16687:2;16682:3;16623:67;:::i;:::-;16616:74;;16699:93;16788:3;16699:93;:::i;:::-;16817:2;16812:3;16808:12;16801:19;;16460:366;;;:::o;16832:419::-;16998:4;17036:2;17025:9;17021:18;17013:26;;17085:9;17079:4;17075:20;17071:1;17060:9;17056:17;17049:47;17113:131;17239:4;17113:131;:::i;:::-;17105:139;;16832:419;;;:::o;17257:221::-;17397:34;17393:1;17385:6;17381:14;17374:58;17466:4;17461:2;17453:6;17449:15;17442:29;17257:221;:::o;17484:366::-;17626:3;17647:67;17711:2;17706:3;17647:67;:::i;:::-;17640:74;;17723:93;17812:3;17723:93;:::i;:::-;17841:2;17836:3;17832:12;17825:19;;17484:366;;;:::o;17856:419::-;18022:4;18060:2;18049:9;18045:18;18037:26;;18109:9;18103:4;18099:20;18095:1;18084:9;18080:17;18073:47;18137:131;18263:4;18137:131;:::i;:::-;18129:139;;17856:419;;;:::o;18281:224::-;18421:34;18417:1;18409:6;18405:14;18398:58;18490:7;18485:2;18477:6;18473:15;18466:32;18281:224;:::o;18511:366::-;18653:3;18674:67;18738:2;18733:3;18674:67;:::i;:::-;18667:74;;18750:93;18839:3;18750:93;:::i;:::-;18868:2;18863:3;18859:12;18852:19;;18511:366;;;:::o;18883:419::-;19049:4;19087:2;19076:9;19072:18;19064:26;;19136:9;19130:4;19126:20;19122:1;19111:9;19107:17;19100:47;19164:131;19290:4;19164:131;:::i;:::-;19156:139;;18883:419;;;:::o;19308:222::-;19448:34;19444:1;19436:6;19432:14;19425:58;19517:5;19512:2;19504:6;19500:15;19493:30;19308:222;:::o;19536:366::-;19678:3;19699:67;19763:2;19758:3;19699:67;:::i;:::-;19692:74;;19775:93;19864:3;19775:93;:::i;:::-;19893:2;19888:3;19884:12;19877:19;;19536:366;;;:::o;19908:419::-;20074:4;20112:2;20101:9;20097:18;20089:26;;20161:9;20155:4;20151:20;20147:1;20136:9;20132:17;20125:47;20189:131;20315:4;20189:131;:::i;:::-;20181:139;;19908:419;;;:::o;20333:172::-;20473:24;20469:1;20461:6;20457:14;20450:48;20333:172;:::o;20511:366::-;20653:3;20674:67;20738:2;20733:3;20674:67;:::i;:::-;20667:74;;20750:93;20839:3;20750:93;:::i;:::-;20868:2;20863:3;20859:12;20852:19;;20511:366;;;:::o;20883:419::-;21049:4;21087:2;21076:9;21072:18;21064:26;;21136:9;21130:4;21126:20;21122:1;21111:9;21107:17;21100:47;21164:131;21290:4;21164:131;:::i;:::-;21156:139;;20883:419;;;:::o;21308:240::-;21448:34;21444:1;21436:6;21432:14;21425:58;21517:23;21512:2;21504:6;21500:15;21493:48;21308:240;:::o;21554:366::-;21696:3;21717:67;21781:2;21776:3;21717:67;:::i;:::-;21710:74;;21793:93;21882:3;21793:93;:::i;:::-;21911:2;21906:3;21902:12;21895:19;;21554:366;;;:::o;21926:419::-;22092:4;22130:2;22119:9;22115:18;22107:26;;22179:9;22173:4;22169:20;22165:1;22154:9;22150:17;22143:47;22207:131;22333:4;22207:131;:::i;:::-;22199:139;;21926:419;;;:::o;22351:169::-;22491:21;22487:1;22479:6;22475:14;22468:45;22351:169;:::o;22526:366::-;22668:3;22689:67;22753:2;22748:3;22689:67;:::i;:::-;22682:74;;22765:93;22854:3;22765:93;:::i;:::-;22883:2;22878:3;22874:12;22867:19;;22526:366;;;:::o;22898:419::-;23064:4;23102:2;23091:9;23087:18;23079:26;;23151:9;23145:4;23141:20;23137:1;23126:9;23122:17;23115:47;23179:131;23305:4;23179:131;:::i;:::-;23171:139;;22898:419;;;:::o;23323:241::-;23463:34;23459:1;23451:6;23447:14;23440:58;23532:24;23527:2;23519:6;23515:15;23508:49;23323:241;:::o;23570:366::-;23712:3;23733:67;23797:2;23792:3;23733:67;:::i;:::-;23726:74;;23809:93;23898:3;23809:93;:::i;:::-;23927:2;23922:3;23918:12;23911:19;;23570:366;;;:::o;23942:419::-;24108:4;24146:2;24135:9;24131:18;24123:26;;24195:9;24189:4;24185:20;24181:1;24170:9;24166:17;24159:47;24223:131;24349:4;24223:131;:::i;:::-;24215:139;;23942:419;;;:::o;24367:233::-;24406:3;24429:24;24447:5;24429:24;:::i;:::-;24420:33;;24475:66;24468:5;24465:77;24462:103;;24545:18;;:::i;:::-;24462:103;24592:1;24585:5;24581:13;24574:20;;24367:233;;;:::o;24606:410::-;24646:7;24669:20;24687:1;24669:20;:::i;:::-;24664:25;;24703:20;24721:1;24703:20;:::i;:::-;24698:25;;24758:1;24755;24751:9;24780:30;24798:11;24780:30;:::i;:::-;24769:41;;24959:1;24950:7;24946:15;24943:1;24940:22;24920:1;24913:9;24893:83;24870:139;;24989:18;;:::i;:::-;24870:139;24654:362;24606:410;;;;:::o;25022:180::-;25070:77;25067:1;25060:88;25167:4;25164:1;25157:15;25191:4;25188:1;25181:15;25208:185;25248:1;25265:20;25283:1;25265:20;:::i;:::-;25260:25;;25299:20;25317:1;25299:20;:::i;:::-;25294:25;;25338:1;25328:35;;25343:18;;:::i;:::-;25328:35;25385:1;25382;25378:9;25373:14;;25208:185;;;;:::o;25399:194::-;25439:4;25459:20;25477:1;25459:20;:::i;:::-;25454:25;;25493:20;25511:1;25493:20;:::i;:::-;25488:25;;25537:1;25534;25530:9;25522:17;;25561:1;25555:4;25552:11;25549:37;;;25566:18;;:::i;:::-;25549:37;25399:194;;;;:::o;25599:85::-;25644:7;25673:5;25662:16;;25599:85;;;:::o;25690:158::-;25748:9;25781:61;25799:42;25808:32;25834:5;25808:32;:::i;:::-;25799:42;:::i;:::-;25781:61;:::i;:::-;25768:74;;25690:158;;;:::o;25854:147::-;25949:45;25988:5;25949:45;:::i;:::-;25944:3;25937:58;25854:147;;:::o;26007:807::-;26256:4;26294:3;26283:9;26279:19;26271:27;;26308:71;26376:1;26365:9;26361:17;26352:6;26308:71;:::i;:::-;26389:72;26457:2;26446:9;26442:18;26433:6;26389:72;:::i;:::-;26471:80;26547:2;26536:9;26532:18;26523:6;26471:80;:::i;:::-;26561;26637:2;26626:9;26622:18;26613:6;26561:80;:::i;:::-;26651:73;26719:3;26708:9;26704:19;26695:6;26651:73;:::i;:::-;26734;26802:3;26791:9;26787:19;26778:6;26734:73;:::i;:::-;26007:807;;;;;;;;;:::o;26820:143::-;26877:5;26908:6;26902:13;26893:22;;26924:33;26951:5;26924:33;:::i;:::-;26820:143;;;;:::o;26969:663::-;27057:6;27065;27073;27122:2;27110:9;27101:7;27097:23;27093:32;27090:119;;;27128:79;;:::i;:::-;27090:119;27248:1;27273:64;27329:7;27320:6;27309:9;27305:22;27273:64;:::i;:::-;27263:74;;27219:128;27386:2;27412:64;27468:7;27459:6;27448:9;27444:22;27412:64;:::i;:::-;27402:74;;27357:129;27525:2;27551:64;27607:7;27598:6;27587:9;27583:22;27551:64;:::i;:::-;27541:74;;27496:129;26969:663;;;;;:::o;27638:225::-;27778:34;27774:1;27766:6;27762:14;27755:58;27847:8;27842:2;27834:6;27830:15;27823:33;27638:225;:::o;27869:366::-;28011:3;28032:67;28096:2;28091:3;28032:67;:::i;:::-;28025:74;;28108:93;28197:3;28108:93;:::i;:::-;28226:2;28221:3;28217:12;28210:19;;27869:366;;;:::o;28241:419::-;28407:4;28445:2;28434:9;28430:18;28422:26;;28494:9;28488:4;28484:20;28480:1;28469:9;28465:17;28458:47;28522:131;28648:4;28522:131;:::i;:::-;28514:139;;28241:419;;;:::o;28666:147::-;28767:11;28804:3;28789:18;;28666:147;;;;:::o;28819:114::-;;:::o;28939:398::-;29098:3;29119:83;29200:1;29195:3;29119:83;:::i;:::-;29112:90;;29211:93;29300:3;29211:93;:::i;:::-;29329:1;29324:3;29320:11;29313:18;;28939:398;;;:::o;29343:379::-;29527:3;29549:147;29692:3;29549:147;:::i;:::-;29542:154;;29713:3;29706:10;;29343:379;;;:::o;29728:180::-;29776:77;29773:1;29766:88;29873:4;29870:1;29863:15;29897:4;29894:1;29887:15;29914:180;29962:77;29959:1;29952:88;30059:4;30056:1;30049:15;30083:4;30080:1;30073:15;30100:114;30167:6;30201:5;30195:12;30185:22;;30100:114;;;:::o;30220:184::-;30319:11;30353:6;30348:3;30341:19;30393:4;30388:3;30384:14;30369:29;;30220:184;;;;:::o;30410:132::-;30477:4;30500:3;30492:11;;30530:4;30525:3;30521:14;30513:22;;30410:132;;;:::o;30548:108::-;30625:24;30643:5;30625:24;:::i;:::-;30620:3;30613:37;30548:108;;:::o;30662:179::-;30731:10;30752:46;30794:3;30786:6;30752:46;:::i;:::-;30830:4;30825:3;30821:14;30807:28;;30662:179;;;;:::o;30847:113::-;30917:4;30949;30944:3;30940:14;30932:22;;30847:113;;;:::o;30996:732::-;31115:3;31144:54;31192:5;31144:54;:::i;:::-;31214:86;31293:6;31288:3;31214:86;:::i;:::-;31207:93;;31324:56;31374:5;31324:56;:::i;:::-;31403:7;31434:1;31419:284;31444:6;31441:1;31438:13;31419:284;;;31520:6;31514:13;31547:63;31606:3;31591:13;31547:63;:::i;:::-;31540:70;;31633:60;31686:6;31633:60;:::i;:::-;31623:70;;31479:224;31466:1;31463;31459:9;31454:14;;31419:284;;;31423:14;31719:3;31712:10;;31120:608;;;30996:732;;;;:::o;31734:831::-;31997:4;32035:3;32024:9;32020:19;32012:27;;32049:71;32117:1;32106:9;32102:17;32093:6;32049:71;:::i;:::-;32130:80;32206:2;32195:9;32191:18;32182:6;32130:80;:::i;:::-;32257:9;32251:4;32247:20;32242:2;32231:9;32227:18;32220:48;32285:108;32388:4;32379:6;32285:108;:::i;:::-;32277:116;;32403:72;32471:2;32460:9;32456:18;32447:6;32403:72;:::i;:::-;32485:73;32553:3;32542:9;32538:19;32529:6;32485:73;:::i;:::-;31734:831;;;;;;;;:::o
Swarm Source
ipfs://bb16a46f544eb4818af8efb74c24fb201e7818b46351804a895a7e6704273cb2
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $1 | 249.9745 | $249.97 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.