Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
20,000,000 UNO
Holders
95
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
76,348.822476139484806928 UNOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
UNO
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-08 */ // SPDX-License-Identifier: MIT /* https://bit.ly/3D3JYj0 */ pragma solidity ^0.8.15; pragma experimental ABIEncoderV2; ////// lib/openzeppelin-contracts/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.0 (utils/Context.sol) /* pragma solidity ^0.8.15; */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } ////// lib/openzeppelin-contracts/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.0 (access/Ownable.sol) /* pragma solidity ^0.8.15; */ /* import "../utils/Context.sol"; */ 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); } } ////// lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol) /* pragma solidity ^0.8.15; */ 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); } ////// lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol) /* pragma solidity ^0.8.15; */ /* import "../IERC20.sol"; */ interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } ////// lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol) /* pragma solidity ^0.8.15; */ /* import "./IERC20.sol"; */ /* import "./extensions/IERC20Metadata.sol"; */ /* import "../../utils/Context.sol"; */ 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; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } 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 18; } 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 {} } ////// lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts v4.4.0 (utils/math/SafeMath.sol) /* pragma solidity ^0.8.15; */ library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } /* pragma solidity 0.8.15; */ /* pragma experimental ABIEncoderV2; */ 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; } /* pragma solidity 0.8.15; */ /* pragma experimental ABIEncoderV2; */ 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; } /* pragma solidity 0.8.15; */ /* pragma experimental ABIEncoderV2; */ 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; } /* pragma solidity >=0.8.15; */ /* import {IUniswapV2Router02} from "./IUniswapV2Router02.sol"; */ /* import {IUniswapV2Factory} from "./IUniswapV2Factory.sol"; */ /* import {IUniswapV2Pair} from "./IUniswapV2Pair.sol"; */ /* import {IERC20} from "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; */ /* import {ERC20} from "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; */ /* import {Ownable} from "lib/openzeppelin-contracts/contracts/access/Ownable.sol"; */ /* import {SafeMath} from "lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol"; */ contract UNO is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public marketingWallet; address public devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public transferDelayEnabled = false; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; /******************/ // exlcude from fees and max transaction amount mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("Unowned", "UNO") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 3; uint256 _buyLiquidityFee = 2; uint256 _buyDevFee = 0; uint256 _sellMarketingFee = 3; uint256 _sellLiquidityFee = 2; uint256 _sellDevFee = 0; uint256 totalSupply = 20000000 * 1e18; maxTransactionAmount = (totalSupply * 2) / 100; // 2% from total supply maxTransactionAmountTxn maxWallet = (totalSupply * 2) / 100; // 2% from total supply maxWallet swapTokensAtAmount = (totalSupply * 10) / 10000; // 0.1% swap wallet buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; marketingWallet = address(0x9CAC56dE8419A4cDFF71548edB312294aEF4a00A); // set as marketing wallet devWallet = address(0x9CAC56dE8419A4cDFF71548edB312294aEF4a00A); // set as dev wallet // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(address(marketingWallet), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(address(marketingWallet), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable {} // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%" ); maxTransactionAmount = newNum * (10**18); } function setFee(uint256 buyLiq, uint256 buyMkt, uint256 buyDev, uint256 sellLiq, uint256 sellMkt, uint256 sellDev) external onlyOwner { buyMarketingFee = buyMkt; buyLiquidityFee = buyLiq; buyDevFee = buyDev; sellMarketingFee = sellMkt; sellLiquidityFee = sellLiq; sellDevFee = sellDev; } function updateTax() external onlyOwner { buyMarketingFee = 3; buyLiquidityFee = 2; sellMarketingFee = 3; sellLiquidityFee = 2; } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } 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; emit SetAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } 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; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if ( to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForDev += (fees * sellDevFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable devWallet, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success, ) = address(devWallet).call{value: ethForDev}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, liquidityTokens ); } (success, ) = address(marketingWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":[{"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":"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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","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":"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","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":"updAds","type":"address"},{"internalType":"bool","name":"isEx","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","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":[{"internalType":"uint256","name":"buyLiq","type":"uint256"},{"internalType":"uint256","name":"buyMkt","type":"uint256"},{"internalType":"uint256","name":"buyDev","type":"uint256"},{"internalType":"uint256","name":"sellLiq","type":"uint256"},{"internalType":"uint256","name":"sellMkt","type":"uint256"},{"internalType":"uint256","name":"sellDev","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","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":[],"name":"updateTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600b805462ffffff19166001179055600d805460ff191690553480156200002a57600080fd5b5060405180604001604052806007815260200166155b9bdddb995960ca1b81525060405180604001604052806003815260200162554e4f60e81b815250816003908162000078919062000766565b50600462000087828262000766565b505050620000a46200009e6200040a60201b60201c565b6200040e565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000c681600162000460565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000111573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000137919062000832565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000185573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ab919062000832565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620001f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021f919062000832565b6001600160a01b031660a08190526200023a90600162000460565b60a0516200024a906001620004da565b6003600260008282826a108b2a2c2802909400000060646200026d82856200087a565b6200027991906200089c565b60085560646200028b8260026200087a565b6200029791906200089c565b600a90815561271090620002ad9083906200087a565b620002b991906200089c565b600955600f8790556010869055601185905584620002d88789620008bf565b620002e49190620008bf565b600e5560138490556014839055601582905581620003038486620008bf565b6200030f9190620008bf565b60125560068054739cac56de8419a4cdff71548edb312294aef4a00a6001600160a01b03199182168117909255600780549091169091179055620003676200035f6005546001600160a01b031690565b60016200052e565b620003743060016200052e565b6200038361dead60016200052e565b6006546200039c906001600160a01b031660016200052e565b620003bb620003b36005546001600160a01b031690565b600162000460565b620003c830600162000460565b620003d761dead600162000460565b600654620003f0906001600160a01b0316600162000460565b620003fc3382620005d8565b5050505050505050620008da565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620004af5760405162461bcd60e51b815260206004820181905260248201526000805160206200310683398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6001600160a01b0382166000818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005795760405162461bcd60e51b81526020600482018190526024820152600080516020620031068339815191526044820152606401620004a6565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004a6565b8060026000828254620006449190620008bf565b90915550506001600160a01b0382166000908152602081905260408120805483929062000673908490620008bf565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006ed57607f821691505b6020821081036200070e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006bd57600081815260208120601f850160051c810160208610156200073d5750805b601f850160051c820191505b818110156200075e5782815560010162000749565b505050505050565b81516001600160401b03811115620007825762000782620006c2565b6200079a81620007938454620006d8565b8462000714565b602080601f831160018114620007d25760008415620007b95750858301515b600019600386901b1c1916600185901b1785556200075e565b600085815260208120601f198616915b828110156200080357888601518255948401946001909101908401620007e2565b5085821015620008225787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200084557600080fd5b81516001600160a01b03811681146200085d57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161562000897576200089762000864565b500290565b600082620008ba57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620008d557620008d562000864565b500190565b60805160a0516127ce62000938600039600081816104ec01528181610db201526115de0152600081816103ac015281816115a001528181612111015281816121ca015281816122060152818161228001526122e801526127ce6000f3fe6080604052600436106103035760003560e01c80638ea5220f11610190578063c0246668116100dc578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610913578063f2fde38b14610929578063f637434214610949578063f8b45b051461095f57600080fd5b8063dd62ed3e146108a2578063e2f45605146108e8578063e884f260146108fe57600080fd5b8063c0246668146107fc578063c18bc1951461081c578063c876d0b91461083c578063c8c8ebe414610856578063d257b34f1461086c578063d85ba0631461088c57600080fd5b80639fccce3211610149578063a9059cbb11610123578063a9059cbb1461076d578063b62496f51461078d578063bbc0c742146107bd578063bd9a3b6d146107dc57600080fd5b80639fccce3214610721578063a0d82dc514610737578063a457c2d71461074d57600080fd5b80638ea5220f1461068057806392136913146106a0578063924de9b7146106b657806395d89b41146106d65780639a7a23d6146106eb5780639c3b4fdc1461070b57600080fd5b806349bd5a5e1161024f578063715018a61161020857806375f0a874116101e257806375f0a874146106175780637bce5a04146106375780638a8c523c1461064d5780638da5cb5b1461066257600080fd5b8063715018a6146105cd578063751039fc146105e25780637571336a146105f757600080fd5b806349bd5a5e146104da5780634a62bb651461050e5780634fbee193146105285780636a486a8e146105615780636ddd17131461057757806370a082311461059757600080fd5b80631f3fed8f116102bc57806323b872dd1161029657806323b872dd1461046857806327c8f83514610488578063313ce5671461049e57806339509351146104ba57600080fd5b80631f3fed8f1461041b578063203e727e14610431578063219e9fe41461045357600080fd5b806306fdde031461030f578063095ea7b31461033a57806310d5de531461036a5780631694505e1461039a57806318160ddd146103e65780631a8145bb1461040557600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610975565b6040516103319190612360565b60405180910390f35b34801561034657600080fd5b5061035a6103553660046123ca565b610a07565b6040519015158152602001610331565b34801561037657600080fd5b5061035a6103853660046123f6565b601a6020526000908152604090205460ff1681565b3480156103a657600080fd5b506103ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610331565b3480156103f257600080fd5b506002545b604051908152602001610331565b34801561041157600080fd5b506103f760175481565b34801561042757600080fd5b506103f760165481565b34801561043d57600080fd5b5061045161044c366004612413565b610a1d565b005b34801561045f57600080fd5b50610451610b03565b34801561047457600080fd5b5061035a61048336600461242c565b610b46565b34801561049457600080fd5b506103ce61dead81565b3480156104aa57600080fd5b5060405160128152602001610331565b3480156104c657600080fd5b5061035a6104d53660046123ca565b610bf0565b3480156104e657600080fd5b506103ce7f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a57600080fd5b50600b5461035a9060ff1681565b34801561053457600080fd5b5061035a6105433660046123f6565b6001600160a01b031660009081526019602052604090205460ff1690565b34801561056d57600080fd5b506103f760125481565b34801561058357600080fd5b50600b5461035a9062010000900460ff1681565b3480156105a357600080fd5b506103f76105b23660046123f6565b6001600160a01b031660009081526020819052604090205490565b3480156105d957600080fd5b50610451610c2c565b3480156105ee57600080fd5b5061035a610c62565b34801561060357600080fd5b5061045161061236600461247d565b610c9f565b34801561062357600080fd5b506006546103ce906001600160a01b031681565b34801561064357600080fd5b506103f7600f5481565b34801561065957600080fd5b50610451610cf4565b34801561066e57600080fd5b506005546001600160a01b03166103ce565b34801561068c57600080fd5b506007546103ce906001600160a01b031681565b3480156106ac57600080fd5b506103f760135481565b3480156106c257600080fd5b506104516106d13660046124b2565b610d31565b3480156106e257600080fd5b50610324610d77565b3480156106f757600080fd5b5061045161070636600461247d565b610d86565b34801561071757600080fd5b506103f760115481565b34801561072d57600080fd5b506103f760185481565b34801561074357600080fd5b506103f760155481565b34801561075957600080fd5b5061035a6107683660046123ca565b610e65565b34801561077957600080fd5b5061035a6107883660046123ca565b610efe565b34801561079957600080fd5b5061035a6107a83660046123f6565b601b6020526000908152604090205460ff1681565b3480156107c957600080fd5b50600b5461035a90610100900460ff1681565b3480156107e857600080fd5b506104516107f73660046124cd565b610f0b565b34801561080857600080fd5b5061045161081736600461247d565b610f58565b34801561082857600080fd5b50610451610837366004612413565b610fe1565b34801561084857600080fd5b50600d5461035a9060ff1681565b34801561086257600080fd5b506103f760085481565b34801561087857600080fd5b5061035a610887366004612413565b6110b2565b34801561089857600080fd5b506103f7600e5481565b3480156108ae57600080fd5b506103f76108bd366004612510565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108f457600080fd5b506103f760095481565b34801561090a57600080fd5b5061035a611209565b34801561091f57600080fd5b506103f760105481565b34801561093557600080fd5b506104516109443660046123f6565b611246565b34801561095557600080fd5b506103f760145481565b34801561096b57600080fd5b506103f7600a5481565b60606003805461098490612549565b80601f01602080910402602001604051908101604052809291908181526020018280546109b090612549565b80156109fd5780601f106109d2576101008083540402835291602001916109fd565b820191906000526020600020905b8154815290600101906020018083116109e057829003601f168201915b5050505050905090565b6000610a143384846112e1565b50600192915050565b6005546001600160a01b03163314610a505760405162461bcd60e51b8152600401610a4790612583565b60405180910390fd5b670de0b6b3a76400006103e8610a6560025490565b610a709060016125ce565b610a7a91906125ed565b610a8491906125ed565b811015610aeb5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610a47565b610afd81670de0b6b3a76400006125ce565b60085550565b6005546001600160a01b03163314610b2d5760405162461bcd60e51b8152600401610a4790612583565b6003600f81905560026010819055601391909155601455565b6000610b53848484611405565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bd85760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a47565b610be585338584036112e1565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a14918590610c2790869061260f565b6112e1565b6005546001600160a01b03163314610c565760405162461bcd60e51b8152600401610a4790612583565b610c606000611c5c565b565b6005546000906001600160a01b03163314610c8f5760405162461bcd60e51b8152600401610a4790612583565b50600b805460ff19169055600190565b6005546001600160a01b03163314610cc95760405162461bcd60e51b8152600401610a4790612583565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d1e5760405162461bcd60e51b8152600401610a4790612583565b600b805462ffff00191662010100179055565b6005546001600160a01b03163314610d5b5760405162461bcd60e51b8152600401610a4790612583565b600b8054911515620100000262ff000019909216919091179055565b60606004805461098490612549565b6005546001600160a01b03163314610db05760405162461bcd60e51b8152600401610a4790612583565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610e575760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a47565b610e618282611cae565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610ee75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a47565b610ef433858584036112e1565b5060019392505050565b6000610a14338484611405565b6005546001600160a01b03163314610f355760405162461bcd60e51b8152600401610a4790612583565b600f94909455601094909455601191909155601392909255601491909155601555565b6005546001600160a01b03163314610f825760405162461bcd60e51b8152600401610a4790612583565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461100b5760405162461bcd60e51b8152600401610a4790612583565b670de0b6b3a76400006103e861102060025490565b61102b9060056125ce565b61103591906125ed565b61103f91906125ed565b81101561109a5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610a47565b6110ac81670de0b6b3a76400006125ce565b600a5550565b6005546000906001600160a01b031633146110df5760405162461bcd60e51b8152600401610a4790612583565b620186a06110ec60025490565b6110f79060016125ce565b61110191906125ed565b82101561116e5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a47565b6103e861117a60025490565b6111859060056125ce565b61118f91906125ed565b8211156111fb5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610a47565b50600981905560015b919050565b6005546000906001600160a01b031633146112365760405162461bcd60e51b8152600401610a4790612583565b50600d805460ff19169055600190565b6005546001600160a01b031633146112705760405162461bcd60e51b8152600401610a4790612583565b6001600160a01b0381166112d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a47565b6112de81611c5c565b50565b6001600160a01b0383166113435760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a47565b6001600160a01b0382166113a45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a47565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661142b5760405162461bcd60e51b8152600401610a4790612627565b6001600160a01b0382166114515760405162461bcd60e51b8152600401610a479061266c565b8060000361146a5761146583836000611d02565b505050565b600b5460ff1615611927576005546001600160a01b038481169116148015906114a157506005546001600160a01b03838116911614155b80156114b557506001600160a01b03821615155b80156114cc57506001600160a01b03821661dead14155b80156114e25750600554600160a01b900460ff16155b1561192757600b54610100900460ff1661157a576001600160a01b03831660009081526019602052604090205460ff168061153557506001600160a01b03821660009081526019602052604090205460ff165b61157a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a47565b600d5460ff16156116c1576005546001600160a01b038381169116148015906115d557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561161357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156116c157326000908152600c602052604090205443116116ae5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610a47565b326000908152600c602052604090204390555b6001600160a01b0383166000908152601b602052604090205460ff16801561170257506001600160a01b0382166000908152601a602052604090205460ff16155b156117e6576008548111156117775760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a47565b600a546001600160a01b03831660009081526020819052604090205461179d908361260f565b11156117e15760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a47565b611927565b6001600160a01b0382166000908152601b602052604090205460ff16801561182757506001600160a01b0383166000908152601a602052604090205460ff16155b1561189d576008548111156117e15760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a47565b6001600160a01b0382166000908152601a602052604090205460ff1661192757600a546001600160a01b0383166000908152602081905260409020546118e3908361260f565b11156119275760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a47565b30600090815260208190526040902054600954811080159081906119535750600b5462010000900460ff165b80156119695750600554600160a01b900460ff16155b801561198e57506001600160a01b0385166000908152601b602052604090205460ff16155b80156119b357506001600160a01b03851660009081526019602052604090205460ff16155b80156119d857506001600160a01b03841660009081526019602052604090205460ff16155b15611a06576005805460ff60a01b1916600160a01b1790556119f8611e57565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526019602052604090205460ff600160a01b909204821615911680611a5457506001600160a01b03851660009081526019602052604090205460ff165b15611a5d575060005b60008115611c48576001600160a01b0386166000908152601b602052604090205460ff168015611a8f57506000601254115b15611b4d57611ab46064611aae6012548861208f90919063ffffffff16565b906120a2565b905060125460145482611ac791906125ce565b611ad191906125ed565b60176000828254611ae2919061260f565b9091555050601254601554611af790836125ce565b611b0191906125ed565b60186000828254611b12919061260f565b9091555050601254601354611b2790836125ce565b611b3191906125ed565b60166000828254611b42919061260f565b90915550611c2a9050565b6001600160a01b0387166000908152601b602052604090205460ff168015611b7757506000600e54115b15611c2a57611b966064611aae600e548861208f90919063ffffffff16565b9050600e5460105482611ba991906125ce565b611bb391906125ed565b60176000828254611bc4919061260f565b9091555050600e54601154611bd990836125ce565b611be391906125ed565b60186000828254611bf4919061260f565b9091555050600e54600f54611c0990836125ce565b611c1391906125ed565b60166000828254611c24919061260f565b90915550505b8015611c3b57611c3b873083611d02565b611c4581866126af565b94505b611c53878787611d02565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611d285760405162461bcd60e51b8152600401610a4790612627565b6001600160a01b038216611d4e5760405162461bcd60e51b8152600401610a479061266c565b6001600160a01b03831660009081526020819052604090205481811015611dc65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a47565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611dfd90849061260f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e4991815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601854601654601754611e7e919061260f565b611e88919061260f565b90506000821580611e97575081155b15611ea157505050565b600954611eaf9060146125ce565b831115611ec757600954611ec49060146125ce565b92505b600060028360175486611eda91906125ce565b611ee491906125ed565b611eee91906125ed565b90506000611efc85836120ae565b905047611f08826120ba565b6000611f1447836120ae565b90506000611f3187611aae6016548561208f90919063ffffffff16565b90506000611f4e88611aae6018548661208f90919063ffffffff16565b9050600081611f5d84866126af565b611f6791906126af565b60006017819055601681905560188190556007546040519293506001600160a01b031691849181818185875af1925050503d8060008114611fc4576040519150601f19603f3d011682016040523d82523d6000602084013e611fc9565b606091505b50909850508615801590611fdd5750600081115b1561202e57611fec878261227a565b60408051878152602081018390529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d806000811461207b576040519150601f19603f3d011682016040523d82523d6000602084013e612080565b606091505b50505050505050505050505050565b600061209b82846125ce565b9392505050565b600061209b82846125ed565b600061209b82846126af565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120ef576120ef6126c6565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561216d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219191906126dc565b816001815181106121a4576121a46126c6565b60200260200101906001600160a01b031690816001600160a01b0316815250506121ef307f0000000000000000000000000000000000000000000000000000000000000000846112e1565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906122449085906000908690309042906004016126f9565b600060405180830381600087803b15801561225e57600080fd5b505af1158015612272573d6000803e3d6000fd5b505050505050565b6122a5307f0000000000000000000000000000000000000000000000000000000000000000846112e1565b60075460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990839060c40160606040518083038185885af1158015612334573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612359919061276a565b5050505050565b600060208083528351808285015260005b8181101561238d57858101830151858201604001528201612371565b8181111561239f576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146112de57600080fd5b600080604083850312156123dd57600080fd5b82356123e8816123b5565b946020939093013593505050565b60006020828403121561240857600080fd5b813561209b816123b5565b60006020828403121561242557600080fd5b5035919050565b60008060006060848603121561244157600080fd5b833561244c816123b5565b9250602084013561245c816123b5565b929592945050506040919091013590565b8035801515811461120457600080fd5b6000806040838503121561249057600080fd5b823561249b816123b5565b91506124a96020840161246d565b90509250929050565b6000602082840312156124c457600080fd5b61209b8261246d565b60008060008060008060c087890312156124e657600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806040838503121561252357600080fd5b823561252e816123b5565b9150602083013561253e816123b5565b809150509250929050565b600181811c9082168061255d57607f821691505b60208210810361257d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156125e8576125e86125b8565b500290565b60008261260a57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612622576126226125b8565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156126c1576126c16125b8565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156126ee57600080fd5b815161209b816123b5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127495784516001600160a01b031683529383019391830191600101612724565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561277f57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220737db9844fcefb6603b3162431a2932137551f6ef0a9d3e7660b2f9a0c56055e64736f6c634300080f00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106103035760003560e01c80638ea5220f11610190578063c0246668116100dc578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610913578063f2fde38b14610929578063f637434214610949578063f8b45b051461095f57600080fd5b8063dd62ed3e146108a2578063e2f45605146108e8578063e884f260146108fe57600080fd5b8063c0246668146107fc578063c18bc1951461081c578063c876d0b91461083c578063c8c8ebe414610856578063d257b34f1461086c578063d85ba0631461088c57600080fd5b80639fccce3211610149578063a9059cbb11610123578063a9059cbb1461076d578063b62496f51461078d578063bbc0c742146107bd578063bd9a3b6d146107dc57600080fd5b80639fccce3214610721578063a0d82dc514610737578063a457c2d71461074d57600080fd5b80638ea5220f1461068057806392136913146106a0578063924de9b7146106b657806395d89b41146106d65780639a7a23d6146106eb5780639c3b4fdc1461070b57600080fd5b806349bd5a5e1161024f578063715018a61161020857806375f0a874116101e257806375f0a874146106175780637bce5a04146106375780638a8c523c1461064d5780638da5cb5b1461066257600080fd5b8063715018a6146105cd578063751039fc146105e25780637571336a146105f757600080fd5b806349bd5a5e146104da5780634a62bb651461050e5780634fbee193146105285780636a486a8e146105615780636ddd17131461057757806370a082311461059757600080fd5b80631f3fed8f116102bc57806323b872dd1161029657806323b872dd1461046857806327c8f83514610488578063313ce5671461049e57806339509351146104ba57600080fd5b80631f3fed8f1461041b578063203e727e14610431578063219e9fe41461045357600080fd5b806306fdde031461030f578063095ea7b31461033a57806310d5de531461036a5780631694505e1461039a57806318160ddd146103e65780631a8145bb1461040557600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610975565b6040516103319190612360565b60405180910390f35b34801561034657600080fd5b5061035a6103553660046123ca565b610a07565b6040519015158152602001610331565b34801561037657600080fd5b5061035a6103853660046123f6565b601a6020526000908152604090205460ff1681565b3480156103a657600080fd5b506103ce7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610331565b3480156103f257600080fd5b506002545b604051908152602001610331565b34801561041157600080fd5b506103f760175481565b34801561042757600080fd5b506103f760165481565b34801561043d57600080fd5b5061045161044c366004612413565b610a1d565b005b34801561045f57600080fd5b50610451610b03565b34801561047457600080fd5b5061035a61048336600461242c565b610b46565b34801561049457600080fd5b506103ce61dead81565b3480156104aa57600080fd5b5060405160128152602001610331565b3480156104c657600080fd5b5061035a6104d53660046123ca565b610bf0565b3480156104e657600080fd5b506103ce7f0000000000000000000000005e9671cc9b39ce7660490c433adb84c2812e22a781565b34801561051a57600080fd5b50600b5461035a9060ff1681565b34801561053457600080fd5b5061035a6105433660046123f6565b6001600160a01b031660009081526019602052604090205460ff1690565b34801561056d57600080fd5b506103f760125481565b34801561058357600080fd5b50600b5461035a9062010000900460ff1681565b3480156105a357600080fd5b506103f76105b23660046123f6565b6001600160a01b031660009081526020819052604090205490565b3480156105d957600080fd5b50610451610c2c565b3480156105ee57600080fd5b5061035a610c62565b34801561060357600080fd5b5061045161061236600461247d565b610c9f565b34801561062357600080fd5b506006546103ce906001600160a01b031681565b34801561064357600080fd5b506103f7600f5481565b34801561065957600080fd5b50610451610cf4565b34801561066e57600080fd5b506005546001600160a01b03166103ce565b34801561068c57600080fd5b506007546103ce906001600160a01b031681565b3480156106ac57600080fd5b506103f760135481565b3480156106c257600080fd5b506104516106d13660046124b2565b610d31565b3480156106e257600080fd5b50610324610d77565b3480156106f757600080fd5b5061045161070636600461247d565b610d86565b34801561071757600080fd5b506103f760115481565b34801561072d57600080fd5b506103f760185481565b34801561074357600080fd5b506103f760155481565b34801561075957600080fd5b5061035a6107683660046123ca565b610e65565b34801561077957600080fd5b5061035a6107883660046123ca565b610efe565b34801561079957600080fd5b5061035a6107a83660046123f6565b601b6020526000908152604090205460ff1681565b3480156107c957600080fd5b50600b5461035a90610100900460ff1681565b3480156107e857600080fd5b506104516107f73660046124cd565b610f0b565b34801561080857600080fd5b5061045161081736600461247d565b610f58565b34801561082857600080fd5b50610451610837366004612413565b610fe1565b34801561084857600080fd5b50600d5461035a9060ff1681565b34801561086257600080fd5b506103f760085481565b34801561087857600080fd5b5061035a610887366004612413565b6110b2565b34801561089857600080fd5b506103f7600e5481565b3480156108ae57600080fd5b506103f76108bd366004612510565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108f457600080fd5b506103f760095481565b34801561090a57600080fd5b5061035a611209565b34801561091f57600080fd5b506103f760105481565b34801561093557600080fd5b506104516109443660046123f6565b611246565b34801561095557600080fd5b506103f760145481565b34801561096b57600080fd5b506103f7600a5481565b60606003805461098490612549565b80601f01602080910402602001604051908101604052809291908181526020018280546109b090612549565b80156109fd5780601f106109d2576101008083540402835291602001916109fd565b820191906000526020600020905b8154815290600101906020018083116109e057829003601f168201915b5050505050905090565b6000610a143384846112e1565b50600192915050565b6005546001600160a01b03163314610a505760405162461bcd60e51b8152600401610a4790612583565b60405180910390fd5b670de0b6b3a76400006103e8610a6560025490565b610a709060016125ce565b610a7a91906125ed565b610a8491906125ed565b811015610aeb5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610a47565b610afd81670de0b6b3a76400006125ce565b60085550565b6005546001600160a01b03163314610b2d5760405162461bcd60e51b8152600401610a4790612583565b6003600f81905560026010819055601391909155601455565b6000610b53848484611405565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bd85760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a47565b610be585338584036112e1565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a14918590610c2790869061260f565b6112e1565b6005546001600160a01b03163314610c565760405162461bcd60e51b8152600401610a4790612583565b610c606000611c5c565b565b6005546000906001600160a01b03163314610c8f5760405162461bcd60e51b8152600401610a4790612583565b50600b805460ff19169055600190565b6005546001600160a01b03163314610cc95760405162461bcd60e51b8152600401610a4790612583565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d1e5760405162461bcd60e51b8152600401610a4790612583565b600b805462ffff00191662010100179055565b6005546001600160a01b03163314610d5b5760405162461bcd60e51b8152600401610a4790612583565b600b8054911515620100000262ff000019909216919091179055565b60606004805461098490612549565b6005546001600160a01b03163314610db05760405162461bcd60e51b8152600401610a4790612583565b7f0000000000000000000000005e9671cc9b39ce7660490c433adb84c2812e22a76001600160a01b0316826001600160a01b031603610e575760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a47565b610e618282611cae565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610ee75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a47565b610ef433858584036112e1565b5060019392505050565b6000610a14338484611405565b6005546001600160a01b03163314610f355760405162461bcd60e51b8152600401610a4790612583565b600f94909455601094909455601191909155601392909255601491909155601555565b6005546001600160a01b03163314610f825760405162461bcd60e51b8152600401610a4790612583565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461100b5760405162461bcd60e51b8152600401610a4790612583565b670de0b6b3a76400006103e861102060025490565b61102b9060056125ce565b61103591906125ed565b61103f91906125ed565b81101561109a5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610a47565b6110ac81670de0b6b3a76400006125ce565b600a5550565b6005546000906001600160a01b031633146110df5760405162461bcd60e51b8152600401610a4790612583565b620186a06110ec60025490565b6110f79060016125ce565b61110191906125ed565b82101561116e5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a47565b6103e861117a60025490565b6111859060056125ce565b61118f91906125ed565b8211156111fb5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610a47565b50600981905560015b919050565b6005546000906001600160a01b031633146112365760405162461bcd60e51b8152600401610a4790612583565b50600d805460ff19169055600190565b6005546001600160a01b031633146112705760405162461bcd60e51b8152600401610a4790612583565b6001600160a01b0381166112d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a47565b6112de81611c5c565b50565b6001600160a01b0383166113435760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a47565b6001600160a01b0382166113a45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a47565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661142b5760405162461bcd60e51b8152600401610a4790612627565b6001600160a01b0382166114515760405162461bcd60e51b8152600401610a479061266c565b8060000361146a5761146583836000611d02565b505050565b600b5460ff1615611927576005546001600160a01b038481169116148015906114a157506005546001600160a01b03838116911614155b80156114b557506001600160a01b03821615155b80156114cc57506001600160a01b03821661dead14155b80156114e25750600554600160a01b900460ff16155b1561192757600b54610100900460ff1661157a576001600160a01b03831660009081526019602052604090205460ff168061153557506001600160a01b03821660009081526019602052604090205460ff165b61157a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a47565b600d5460ff16156116c1576005546001600160a01b038381169116148015906115d557507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561161357507f0000000000000000000000005e9671cc9b39ce7660490c433adb84c2812e22a76001600160a01b0316826001600160a01b031614155b156116c157326000908152600c602052604090205443116116ae5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610a47565b326000908152600c602052604090204390555b6001600160a01b0383166000908152601b602052604090205460ff16801561170257506001600160a01b0382166000908152601a602052604090205460ff16155b156117e6576008548111156117775760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a47565b600a546001600160a01b03831660009081526020819052604090205461179d908361260f565b11156117e15760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a47565b611927565b6001600160a01b0382166000908152601b602052604090205460ff16801561182757506001600160a01b0383166000908152601a602052604090205460ff16155b1561189d576008548111156117e15760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a47565b6001600160a01b0382166000908152601a602052604090205460ff1661192757600a546001600160a01b0383166000908152602081905260409020546118e3908361260f565b11156119275760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a47565b30600090815260208190526040902054600954811080159081906119535750600b5462010000900460ff165b80156119695750600554600160a01b900460ff16155b801561198e57506001600160a01b0385166000908152601b602052604090205460ff16155b80156119b357506001600160a01b03851660009081526019602052604090205460ff16155b80156119d857506001600160a01b03841660009081526019602052604090205460ff16155b15611a06576005805460ff60a01b1916600160a01b1790556119f8611e57565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526019602052604090205460ff600160a01b909204821615911680611a5457506001600160a01b03851660009081526019602052604090205460ff165b15611a5d575060005b60008115611c48576001600160a01b0386166000908152601b602052604090205460ff168015611a8f57506000601254115b15611b4d57611ab46064611aae6012548861208f90919063ffffffff16565b906120a2565b905060125460145482611ac791906125ce565b611ad191906125ed565b60176000828254611ae2919061260f565b9091555050601254601554611af790836125ce565b611b0191906125ed565b60186000828254611b12919061260f565b9091555050601254601354611b2790836125ce565b611b3191906125ed565b60166000828254611b42919061260f565b90915550611c2a9050565b6001600160a01b0387166000908152601b602052604090205460ff168015611b7757506000600e54115b15611c2a57611b966064611aae600e548861208f90919063ffffffff16565b9050600e5460105482611ba991906125ce565b611bb391906125ed565b60176000828254611bc4919061260f565b9091555050600e54601154611bd990836125ce565b611be391906125ed565b60186000828254611bf4919061260f565b9091555050600e54600f54611c0990836125ce565b611c1391906125ed565b60166000828254611c24919061260f565b90915550505b8015611c3b57611c3b873083611d02565b611c4581866126af565b94505b611c53878787611d02565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611d285760405162461bcd60e51b8152600401610a4790612627565b6001600160a01b038216611d4e5760405162461bcd60e51b8152600401610a479061266c565b6001600160a01b03831660009081526020819052604090205481811015611dc65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a47565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611dfd90849061260f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e4991815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601854601654601754611e7e919061260f565b611e88919061260f565b90506000821580611e97575081155b15611ea157505050565b600954611eaf9060146125ce565b831115611ec757600954611ec49060146125ce565b92505b600060028360175486611eda91906125ce565b611ee491906125ed565b611eee91906125ed565b90506000611efc85836120ae565b905047611f08826120ba565b6000611f1447836120ae565b90506000611f3187611aae6016548561208f90919063ffffffff16565b90506000611f4e88611aae6018548661208f90919063ffffffff16565b9050600081611f5d84866126af565b611f6791906126af565b60006017819055601681905560188190556007546040519293506001600160a01b031691849181818185875af1925050503d8060008114611fc4576040519150601f19603f3d011682016040523d82523d6000602084013e611fc9565b606091505b50909850508615801590611fdd5750600081115b1561202e57611fec878261227a565b60408051878152602081018390529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d806000811461207b576040519150601f19603f3d011682016040523d82523d6000602084013e612080565b606091505b50505050505050505050505050565b600061209b82846125ce565b9392505050565b600061209b82846125ed565b600061209b82846126af565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120ef576120ef6126c6565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561216d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219191906126dc565b816001815181106121a4576121a46126c6565b60200260200101906001600160a01b031690816001600160a01b0316815250506121ef307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846112e1565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906122449085906000908690309042906004016126f9565b600060405180830381600087803b15801561225e57600080fd5b505af1158015612272573d6000803e3d6000fd5b505050505050565b6122a5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846112e1565b60075460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990839060c40160606040518083038185885af1158015612334573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612359919061276a565b5050505050565b600060208083528351808285015260005b8181101561238d57858101830151858201604001528201612371565b8181111561239f576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146112de57600080fd5b600080604083850312156123dd57600080fd5b82356123e8816123b5565b946020939093013593505050565b60006020828403121561240857600080fd5b813561209b816123b5565b60006020828403121561242557600080fd5b5035919050565b60008060006060848603121561244157600080fd5b833561244c816123b5565b9250602084013561245c816123b5565b929592945050506040919091013590565b8035801515811461120457600080fd5b6000806040838503121561249057600080fd5b823561249b816123b5565b91506124a96020840161246d565b90509250929050565b6000602082840312156124c457600080fd5b61209b8261246d565b60008060008060008060c087890312156124e657600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806040838503121561252357600080fd5b823561252e816123b5565b9150602083013561253e816123b5565b809150509250929050565b600181811c9082168061255d57607f821691505b60208210810361257d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156125e8576125e86125b8565b500290565b60008261260a57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612622576126226125b8565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156126c1576126c16125b8565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156126ee57600080fd5b815161209b816123b5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127495784516001600160a01b031683529383019391830191600101612724565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561277f57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220737db9844fcefb6603b3162431a2932137551f6ef0a9d3e7660b2f9a0c56055e64736f6c634300080f0033
Deployed Bytecode Sourcemap
17281:15367:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3762:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4676:169;;;;;;;;;;-1:-1:-1;4676:169:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;4676:169:0;1072:187:1;18620:63:0;;;;;;;;;;-1:-1:-1;18620:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17354:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1707:32:1;;;1689:51;;1677:2;1662:18;17354:51:0;1516:230:1;4083:108:0;;;;;;;;;;-1:-1:-1;4171:12:0;;4083:108;;;1897:25:1;;;1885:2;1870:18;4083:108:0;1751:177:1;18404:33:0;;;;;;;;;;;;;;;;18364;;;;;;;;;;;;;;;;22866:275;;;;;;;;;;-1:-1:-1;22866:275:0;;;;;:::i;:::-;;:::i;:::-;;23505:170;;;;;;;;;;;;;:::i;4853:492::-;;;;;;;;;;-1:-1:-1;4853:492:0;;;;;:::i;:::-;;:::i;17457:53::-;;;;;;;;;;;;17503:6;17457:53;;3982:93;;;;;;;;;;-1:-1:-1;3982:93:0;;4065:2;2929:36:1;;2917:2;2902:18;3982:93:0;2787:184:1;5353:215:0;;;;;;;;;;-1:-1:-1;5353:215:0;;;;;:::i;:::-;;:::i;17412:38::-;;;;;;;;;;;;;;;17734:33;;;;;;;;;;-1:-1:-1;17734:33:0;;;;;;;;25017:126;;;;;;;;;;-1:-1:-1;25017:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;25107:28:0;25083:4;25107:28;;;:19;:28;;;;;;;;;25017:126;18219:28;;;;;;;;;;;;;;;;17814:31;;;;;;;;;;-1:-1:-1;17814:31:0;;;;;;;;;;;4199:127;;;;;;;;;;-1:-1:-1;4199:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4300:18:0;4273:7;4300:18;;;;;;;;;;;;4199:127;1197:103;;;;;;;;;;;;;:::i;21974:121::-;;;;;;;;;;;;;:::i;23948:167::-;;;;;;;;;;-1:-1:-1;23948:167:0;;;;;:::i;:::-;;:::i;17549:30::-;;;;;;;;;;-1:-1:-1;17549:30:0;;;;-1:-1:-1;;;;;17549:30:0;;;18112;;;;;;;;;;;;;;;;21810:112;;;;;;;;;;;;;:::i;974:87::-;;;;;;;;;;-1:-1:-1;1047:6:0;;-1:-1:-1;;;;;1047:6:0;974:87;;17586:24;;;;;;;;;;-1:-1:-1;17586:24:0;;;;-1:-1:-1;;;;;17586:24:0;;;18254:31;;;;;;;;;;;;;;;;24211:100;;;;;;;;;;-1:-1:-1;24211:100:0;;;;;:::i;:::-;;:::i;3870:104::-;;;;;;;;;;;;;:::i;24509:304::-;;;;;;;;;;-1:-1:-1;24509:304:0;;;;;:::i;:::-;;:::i;18186:24::-;;;;;;;;;;;;;;;;18444:27;;;;;;;;;;;;;;;;18330:25;;;;;;;;;;;;;;;;5576:413;;;;;;;;;;-1:-1:-1;5576:413:0;;;;;:::i;:::-;;:::i;4334:175::-;;;;;;;;;;-1:-1:-1;4334:175:0;;;;;:::i;:::-;;:::i;18841:57::-;;;;;;;;;;-1:-1:-1;18841:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17774:33;;;;;;;;;;-1:-1:-1;17774:33:0;;;;;;;;;;;23149:348;;;;;;;;;;-1:-1:-1;23149:348:0;;;;;:::i;:::-;;:::i;24319:182::-;;;;;;;;;;-1:-1:-1;24319:182:0;;;;;:::i;:::-;;:::i;23683:256::-;;;;;;;;;;-1:-1:-1;23683:256:0;;;;;:::i;:::-;;:::i;18032:40::-;;;;;;;;;;-1:-1:-1;18032:40:0;;;;;;;;17619:35;;;;;;;;;;;;;;;;22361:497;;;;;;;;;;-1:-1:-1;22361:497:0;;;;;:::i;:::-;;:::i;18081:27::-;;;;;;;;;;;;;;;;4517:151;;;;;;;;;;-1:-1:-1;4517:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4633:18:0;;;4606:7;4633:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4517:151;17661:33;;;;;;;;;;;;;;;;22156:135;;;;;;;;;;;;;:::i;18149:30::-;;;;;;;;;;;;;;;;1308:201;;;;;;;;;;-1:-1:-1;1308:201:0;;;;;:::i;:::-;;:::i;18292:31::-;;;;;;;;;;;;;;;;17701:24;;;;;;;;;;;;;;;;3762:100;3816:13;3849:5;3842:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3762:100;:::o;4676:169::-;4759:4;4776:39;405:10;4799:7;4808:6;4776:8;:39::i;:::-;-1:-1:-1;4833:4:0;4676:169;;;;:::o;22866:275::-;1047:6;;-1:-1:-1;;;;;1047:6:0;405:10;1109:23;1101:68;;;;-1:-1:-1;;;1101:68:0;;;;;;;:::i;:::-;;;;;;;;;23003:4:::1;22995;22974:13;4171:12:::0;;;4083:108;22974:13:::1;:17;::::0;22990:1:::1;22974:17;:::i;:::-;22973:26;;;;:::i;:::-;22972:35;;;;:::i;:::-;22962:6;:45;;22940:142;;;::::0;-1:-1:-1;;;22940:142:0;;6042:2:1;22940:142:0::1;::::0;::::1;6024:21:1::0;6081:2;6061:18;;;6054:30;6120:34;6100:18;;;6093:62;-1:-1:-1;;;6171:18:1;;;6164:45;6226:19;;22940:142:0::1;5840:411:1::0;22940:142:0::1;23116:17;:6:::0;23126::::1;23116:17;:::i;:::-;23093:20;:40:::0;-1:-1:-1;22866:275:0:o;23505:170::-;1047:6;;-1:-1:-1;;;;;1047:6:0;405:10;1109:23;1101:68;;;;-1:-1:-1;;;1101:68:0;;;;;;;:::i;:::-;23574:1:::1;23556:15;:19:::0;;;23604:1:::1;23586:15;:19:::0;;;23616:16:::1;:20:::0;;;;23647:16:::1;:20:::0;23505:170::o;4853:492::-;4993:4;5010:36;5020:6;5028:9;5039:6;5010:9;:36::i;:::-;-1:-1:-1;;;;;5086:19:0;;5059:24;5086:19;;;:11;:19;;;;;;;;405:10;5086:33;;;;;;;;5138:26;;;;5130:79;;;;-1:-1:-1;;;5130:79:0;;6458:2:1;5130:79:0;;;6440:21:1;6497:2;6477:18;;;6470:30;6536:34;6516:18;;;6509:62;-1:-1:-1;;;6587:18:1;;;6580:38;6635:19;;5130:79:0;6256:404:1;5130:79:0;5245:57;5254:6;405:10;5295:6;5276:16;:25;5245:8;:57::i;:::-;-1:-1:-1;5333:4:0;;4853:492;-1:-1:-1;;;;4853:492:0:o;5353:215::-;405:10;5441:4;5490:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5490:34:0;;;;;;;;;;5441:4;;5458:80;;5481:7;;5490:47;;5527:10;;5490:47;:::i;:::-;5458:8;:80::i;1197:103::-;1047:6;;-1:-1:-1;;;;;1047:6:0;405:10;1109:23;1101:68;;;;-1:-1:-1;;;1101:68:0;;;;;;;:::i;:::-;1262:30:::1;1289:1;1262:18;:30::i;:::-;1197:103::o:0;21974:121::-;1047:6;;22026:4;;-1:-1:-1;;;;;1047:6:0;405:10;1109:23;1101:68;;;;-1:-1:-1;;;1101:68:0;;;;;;;:::i;:::-;-1:-1:-1;22043:14:0::1;:22:::0;;-1:-1:-1;;22043:22:0::1;::::0;;;21974:121;:::o;23948:167::-;1047:6;;-1:-1:-1;;;;;1047:6:0;405:10;1109:23;1101:68;;;;-1:-1:-1;;;1101:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24061:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;24061:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23948:167::o;21810:112::-;1047:6;;-1:-1:-1;;;;;1047:6:0;405:10;1109:23;1101:68;;;;-1:-1:-1;;;1101:68:0;;;;;;;:::i;:::-;21865:13:::1;:20:::0;;-1:-1:-1;;21896:18:0;;;;;21810:112::o;24211:100::-;1047:6;;-1:-1:-1;;;;;1047:6:0;405:10;1109:23;1101:68;;;;-1:-1:-1;;;1101:68:0;;;;;;;:::i;:::-;24282:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;24282:21:0;;::::1;::::0;;;::::1;::::0;;24211:100::o;3870:104::-;3926:13;3959:7;3952:14;;;;;:::i;24509:304::-;1047:6;;-1:-1:-1;;;;;1047:6:0;405:10;1109:23;1101:68;;;;-1:-1:-1;;;1101:68:0;;;;;;;:::i;:::-;24653:13:::1;-1:-1:-1::0;;;;;24645:21:0::1;:4;-1:-1:-1::0;;;;;24645:21:0::1;::::0;24623:128:::1;;;::::0;-1:-1:-1;;;24623:128:0;;7000:2:1;24623:128:0::1;::::0;::::1;6982:21:1::0;7039:2;7019:18;;;7012:30;7078:34;7058:18;;;7051:62;7149:27;7129:18;;;7122:55;7194:19;;24623:128:0::1;6798:421:1::0;24623:128:0::1;24764:41;24793:4;24799:5;24764:28;:41::i;:::-;24509:304:::0;;:::o;5576:413::-;405:10;5669:4;5713:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5713:34:0;;;;;;;;;;5766:35;;;;5758:85;;;;-1:-1:-1;;;5758:85:0;;7426:2:1;5758:85:0;;;7408:21:1;7465:2;7445:18;;;7438:30;7504:34;7484:18;;;7477:62;-1:-1:-1;;;7555:18:1;;;7548:35;7600:19;;5758:85:0;7224:401:1;5758:85:0;5879:67;405:10;5902:7;5930:15;5911:16;:34;5879:8;:67::i;:::-;-1:-1:-1;5977:4:0;;5576:413;-1:-1:-1;;;5576:413:0:o;4334:175::-;4420:4;4437:42;405:10;4461:9;4472:6;4437:9;:42::i;23149:348::-;1047:6;;-1:-1:-1;;;;;1047:6:0;405:10;1109:23;1101:68;;;;-1:-1:-1;;;1101:68:0;;;;;;;:::i;:::-;23294:15:::1;:24:::0;;;;23329:15:::1;:24:::0;;;;23364:9:::1;:18:::0;;;;23393:16:::1;:26:::0;;;;23430:16:::1;:26:::0;;;;23467:10:::1;:20:::0;23149:348::o;24319:182::-;1047:6;;-1:-1:-1;;;;;1047:6:0;405:10;1109:23;1101:68;;;;-1:-1:-1;;;1101:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24404:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;24404:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;24459:34;;1212:41:1;;;24459:34:0::1;::::0;1185:18:1;24459:34:0::1;;;;;;;24319:182:::0;;:::o;23683:256::-;1047:6;;-1:-1:-1;;;;;1047:6:0;405:10;1109:23;1101:68;;;;-1:-1:-1;;;1101:68:0;;;;;;;:::i;:::-;23823:4:::1;23815;23794:13;4171:12:::0;;;4083:108;23794:13:::1;:17;::::0;23810:1:::1;23794:17;:::i;:::-;23793:26;;;;:::i;:::-;23792:35;;;;:::i;:::-;23782:6;:45;;23760:131;;;::::0;-1:-1:-1;;;23760:131:0;;7832:2:1;23760:131:0::1;::::0;::::1;7814:21:1::0;7871:2;7851:18;;;7844:30;7910:34;7890:18;;;7883:62;-1:-1:-1;;;7961:18:1;;;7954:34;8005:19;;23760:131:0::1;7630:400:1::0;23760:131:0::1;23914:17;:6:::0;23924::::1;23914:17;:::i;:::-;23902:9;:29:::0;-1:-1:-1;23683:256:0:o;22361:497::-;1047:6;;22469:4;;-1:-1:-1;;;;;1047:6:0;405:10;1109:23;1101:68;;;;-1:-1:-1;;;1101:68:0;;;;;;;:::i;:::-;22548:6:::1;22527:13;4171:12:::0;;;4083:108;22527:13:::1;:17;::::0;22543:1:::1;22527:17;:::i;:::-;22526:28;;;;:::i;:::-;22513:9;:41;;22491:144;;;::::0;-1:-1:-1;;;22491:144:0;;8237:2:1;22491:144:0::1;::::0;::::1;8219:21:1::0;8276:2;8256:18;;;8249:30;8315:34;8295:18;;;8288:62;-1:-1:-1;;;8366:18:1;;;8359:51;8427:19;;22491:144:0::1;8035:417:1::0;22491:144:0::1;22703:4;22682:13;4171:12:::0;;;4083:108;22682:13:::1;:17;::::0;22698:1:::1;22682:17;:::i;:::-;22681:26;;;;:::i;:::-;22668:9;:39;;22646:141;;;::::0;-1:-1:-1;;;22646:141:0;;8659:2:1;22646:141:0::1;::::0;::::1;8641:21:1::0;8698:2;8678:18;;;8671:30;8737:34;8717:18;;;8710:62;-1:-1:-1;;;8788:18:1;;;8781:50;8848:19;;22646:141:0::1;8457:416:1::0;22646:141:0::1;-1:-1:-1::0;22798:18:0::1;:30:::0;;;22846:4:::1;1180:1;22361:497:::0;;;:::o;22156:135::-;1047:6;;22216:4;;-1:-1:-1;;;;;1047:6:0;405:10;1109:23;1101:68;;;;-1:-1:-1;;;1101:68:0;;;;;;;:::i;:::-;-1:-1:-1;22233:20:0::1;:28:::0;;-1:-1:-1;;22233:28:0::1;::::0;;;22156:135;:::o;1308:201::-;1047:6;;-1:-1:-1;;;;;1047:6:0;405:10;1109:23;1101:68;;;;-1:-1:-1;;;1101:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1397:22:0;::::1;1389:73;;;::::0;-1:-1:-1;;;1389:73:0;;9080:2:1;1389:73:0::1;::::0;::::1;9062:21:1::0;9119:2;9099:18;;;9092:30;9158:34;9138:18;;;9131:62;-1:-1:-1;;;9209:18:1;;;9202:36;9255:19;;1389:73:0::1;8878:402:1::0;1389:73:0::1;1473:28;1492:8;1473:18;:28::i;:::-;1308:201:::0;:::o;7744:380::-;-1:-1:-1;;;;;7880:19:0;;7872:68;;;;-1:-1:-1;;;7872:68:0;;9487:2:1;7872:68:0;;;9469:21:1;9526:2;9506:18;;;9499:30;9565:34;9545:18;;;9538:62;-1:-1:-1;;;9616:18:1;;;9609:34;9660:19;;7872:68:0;9285:400:1;7872:68:0;-1:-1:-1;;;;;7959:21:0;;7951:68;;;;-1:-1:-1;;;7951:68:0;;9892:2:1;7951:68:0;;;9874:21:1;9931:2;9911:18;;;9904:30;9970:34;9950:18;;;9943:62;-1:-1:-1;;;10021:18:1;;;10014:32;10063:19;;7951:68:0;9690:398:1;7951:68:0;-1:-1:-1;;;;;8032:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8084:32;;1897:25:1;;;8084:32:0;;1870:18:1;8084:32:0;;;;;;;7744:380;;;:::o;25151:4717::-;-1:-1:-1;;;;;25283:18:0;;25275:68;;;;-1:-1:-1;;;25275:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25362:16:0;;25354:64;;;;-1:-1:-1;;;25354:64:0;;;;;;;:::i;:::-;25435:6;25445:1;25435:11;25431:93;;25463:28;25479:4;25485:2;25489:1;25463:15;:28::i;:::-;25151:4717;;;:::o;25431:93::-;25540:14;;;;25536:2487;;;1047:6;;-1:-1:-1;;;;;25593:15:0;;;1047:6;;25593:15;;;;:49;;-1:-1:-1;1047:6:0;;-1:-1:-1;;;;;25629:13:0;;;1047:6;;25629:13;;25593:49;:86;;;;-1:-1:-1;;;;;;25663:16:0;;;;25593:86;:128;;;;-1:-1:-1;;;;;;25700:21:0;;25714:6;25700:21;;25593:128;:158;;;;-1:-1:-1;25743:8:0;;-1:-1:-1;;;25743:8:0;;;;25742:9;25593:158;25571:2441;;;25791:13;;;;;;;25786:223;;-1:-1:-1;;;;;25863:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;25892:23:0;;;;;;:19;:23;;;;;;;;25863:52;25829:160;;;;-1:-1:-1;;;25829:160:0;;11105:2:1;25829:160:0;;;11087:21:1;11144:2;11124:18;;;11117:30;-1:-1:-1;;;11163:18:1;;;11156:52;11225:18;;25829:160:0;10903:346:1;25829:160:0;26165:20;;;;26161:641;;;1047:6;;-1:-1:-1;;;;;26240:13:0;;;1047:6;;26240:13;;;;:72;;;26296:15;-1:-1:-1;;;;;26282:30:0;:2;-1:-1:-1;;;;;26282:30:0;;;26240:72;:129;;;;;26355:13;-1:-1:-1;;;;;26341:28:0;:2;-1:-1:-1;;;;;26341:28:0;;;26240:129;26210:573;;;26487:9;26458:39;;;;:28;:39;;;;;;26533:12;-1:-1:-1;26420:258:0;;;;-1:-1:-1;;;26420:258:0;;11456:2:1;26420:258:0;;;11438:21:1;11495:2;11475:18;;;11468:30;11534:34;11514:18;;;11507:62;11605:34;11585:18;;;11578:62;-1:-1:-1;;;11656:19:1;;;11649:40;11706:19;;26420:258:0;11254:477:1;26420:258:0;26734:9;26705:39;;;;:28;:39;;;;;26747:12;26705:54;;26210:573;-1:-1:-1;;;;;26876:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;26933:35:0;;;;;;:31;:35;;;;;;;;26932:36;26876:92;26850:1147;;;27055:20;;27045:6;:30;;27011:169;;;;-1:-1:-1;;;27011:169:0;;11938:2:1;27011:169:0;;;11920:21:1;11977:2;11957:18;;;11950:30;12016:34;11996:18;;;11989:62;-1:-1:-1;;;12067:18:1;;;12060:51;12128:19;;27011:169:0;11736:417:1;27011:169:0;27263:9;;-1:-1:-1;;;;;4300:18:0;;4273:7;4300:18;;;;;;;;;;;27237:22;;:6;:22;:::i;:::-;:35;;27203:140;;;;-1:-1:-1;;;27203:140:0;;12360:2:1;27203:140:0;;;12342:21:1;12399:2;12379:18;;;12372:30;-1:-1:-1;;;12418:18:1;;;12411:49;12477:18;;27203:140:0;12158:343:1;27203:140:0;26850:1147;;;-1:-1:-1;;;;;27441:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;27496:37:0;;;;;;:31;:37;;;;;;;;27495:38;27441:92;27415:582;;;27620:20;;27610:6;:30;;27576:170;;;;-1:-1:-1;;;27576:170:0;;12708:2:1;27576:170:0;;;12690:21:1;12747:2;12727:18;;;12720:30;12786:34;12766:18;;;12759:62;-1:-1:-1;;;12837:18:1;;;12830:52;12899:19;;27576:170:0;12506:418:1;27415:582:0;-1:-1:-1;;;;;27777:35:0;;;;;;:31;:35;;;;;;;;27772:225;;27897:9;;-1:-1:-1;;;;;4300:18:0;;4273:7;4300:18;;;;;;;;;;;27871:22;;:6;:22;:::i;:::-;:35;;27837:140;;;;-1:-1:-1;;;27837:140:0;;12360:2:1;27837:140:0;;;12342:21:1;12399:2;12379:18;;;12372:30;-1:-1:-1;;;12418:18:1;;;12411:49;12477:18;;27837:140:0;12158:343:1;27837:140:0;28084:4;28035:28;4300:18;;;;;;;;;;;28142;;28118:42;;;;;;;28191:35;;-1:-1:-1;28215:11:0;;;;;;;28191:35;:61;;;;-1:-1:-1;28244:8:0;;-1:-1:-1;;;28244:8:0;;;;28243:9;28191:61;:110;;;;-1:-1:-1;;;;;;28270:31:0;;;;;;:25;:31;;;;;;;;28269:32;28191:110;:153;;;;-1:-1:-1;;;;;;28319:25:0;;;;;;:19;:25;;;;;;;;28318:26;28191:153;:194;;;;-1:-1:-1;;;;;;28362:23:0;;;;;;:19;:23;;;;;;;;28361:24;28191:194;28173:326;;;28412:8;:15;;-1:-1:-1;;;;28412:15:0;-1:-1:-1;;;28412:15:0;;;28444:10;:8;:10::i;:::-;28471:8;:16;;-1:-1:-1;;;;28471:16:0;;;28173:326;28527:8;;-1:-1:-1;;;;;28637:25:0;;28511:12;28637:25;;;:19;:25;;;;;;28527:8;-1:-1:-1;;;28527:8:0;;;;;28526:9;;28637:25;;:52;;-1:-1:-1;;;;;;28666:23:0;;;;;;:19;:23;;;;;;;;28637:52;28633:100;;;-1:-1:-1;28716:5:0;28633:100;28745:12;28850:7;28846:969;;;-1:-1:-1;;;;;28902:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;28951:1;28935:13;;:17;28902:50;28898:768;;;28980:34;29010:3;28980:25;28991:13;;28980:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;28973:41;;29083:13;;29063:16;;29056:4;:23;;;;:::i;:::-;29055:41;;;;:::i;:::-;29033:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;29153:13:0;;29139:10;;29132:17;;:4;:17;:::i;:::-;29131:35;;;;:::i;:::-;29115:12;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;29235:13:0;;29215:16;;29208:23;;:4;:23;:::i;:::-;29207:41;;;;:::i;:::-;29185:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;28898:768:0;;-1:-1:-1;28898:768:0;;-1:-1:-1;;;;;29310:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;29360:1;29345:12;;:16;29310:51;29306:360;;;29389:33;29418:3;29389:24;29400:12;;29389:6;:10;;:24;;;;:::i;:33::-;29382:40;;29490:12;;29471:15;;29464:4;:22;;;;:::i;:::-;29463:39;;;;:::i;:::-;29441:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;29558:12:0;;29545:9;;29538:16;;:4;:16;:::i;:::-;29537:33;;;;:::i;:::-;29521:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;29638:12:0;;29619:15;;29612:22;;:4;:22;:::i;:::-;29611:39;;;;:::i;:::-;29589:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;29306:360:0;29686:8;;29682:91;;29715:42;29731:4;29745;29752;29715:15;:42::i;:::-;29789:14;29799:4;29789:14;;:::i;:::-;;;28846:969;29827:33;29843:4;29849:2;29853:6;29827:15;:33::i;:::-;25264:4604;;;;25151:4717;;;:::o;1517:191::-;1610:6;;;-1:-1:-1;;;;;1627:17:0;;;-1:-1:-1;;;;;;1627:17:0;;;;;;;1660:40;;1610:6;;;1627:17;1610:6;;1660:40;;1591:16;;1660:40;1580:128;1517:191;:::o;24821:188::-;-1:-1:-1;;;;;24904:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;24904:39:0;;;;;;;;;;24961:40;;24904:39;;:31;24961:40;;;24821:188;;:::o;5997:733::-;-1:-1:-1;;;;;6137:20:0;;6129:70;;;;-1:-1:-1;;;6129:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6218:23:0;;6210:71;;;;-1:-1:-1;;;6210:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6378:17:0;;6354:21;6378:17;;;;;;;;;;;6414:23;;;;6406:74;;;;-1:-1:-1;;;6406:74:0;;13261:2:1;6406:74:0;;;13243:21:1;13300:2;13280:18;;;13273:30;13339:34;13319:18;;;13312:62;-1:-1:-1;;;13390:18:1;;;13383:36;13436:19;;6406:74:0;13059:402:1;6406:74:0;-1:-1:-1;;;;;6516:17:0;;;:9;:17;;;;;;;;;;;6536:22;;;6516:42;;6580:20;;;;;;;;:30;;6552:6;;6516:9;6580:30;;6552:6;;6580:30;:::i;:::-;;;;;;;;6645:9;-1:-1:-1;;;;;6628:35:0;6637:6;-1:-1:-1;;;;;6628:35:0;;6656:6;6628:35;;;;1897:25:1;;1885:2;1870:18;;1751:177;6628:35:0;;;;;;;;6118:612;5997:733;;;:::o;30996:1647::-;31079:4;31035:23;4300:18;;;;;;;;;;;31035:50;;31096:25;31166:12;;31145:18;;31124;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;31096:82;-1:-1:-1;31189:12:0;31218:20;;;:46;;-1:-1:-1;31242:22:0;;31218:46;31214:85;;;31281:7;;;30996:1647::o;31214:85::-;31333:18;;:23;;31354:2;31333:23;:::i;:::-;31315:15;:41;31311:115;;;31391:18;;:23;;31412:2;31391:23;:::i;:::-;31373:41;;31311:115;31487:23;31574:1;31554:17;31532:18;;31514:15;:36;;;;:::i;:::-;31513:58;;;;:::i;:::-;:62;;;;:::i;:::-;31487:88;-1:-1:-1;31586:26:0;31615:36;:15;31487:88;31615:19;:36::i;:::-;31586:65;-1:-1:-1;31692:21:0;31726:36;31586:65;31726:16;:36::i;:::-;31775:18;31796:44;:21;31822:17;31796:25;:44::i;:::-;31775:65;;31853:23;31879:57;31918:17;31879:34;31894:18;;31879:10;:14;;:34;;;;:::i;:57::-;31853:83;;31947:17;31967:51;32000:17;31967:28;31982:12;;31967:10;:14;;:28;;;;:::i;:51::-;31947:71;-1:-1:-1;32031:23:0;31947:71;32057:28;32070:15;32057:10;:28;:::i;:::-;:40;;;;:::i;:::-;32125:1;32104:18;:22;;;32137:18;:22;;;32170:12;:16;;;32221:9;;32213:45;;32031:66;;-1:-1:-1;;;;;;32221:9:0;;32244;;32213:45;32125:1;32213:45;32244:9;32221;32213:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32199:59:0;;-1:-1:-1;;32275:19:0;;;;;:42;;;32316:1;32298:15;:19;32275:42;32271:275;;;32334:46;32347:15;32364;32334:12;:46::i;:::-;32400:134;;;13878:25:1;;;13934:2;13919:18;;13912:34;;;13962:18;;;13955:34;;;32400:134:0;;13866:2:1;13851:18;32400:134:0;;;;;;;32271:275;32580:15;;32572:63;;-1:-1:-1;;;;;32580:15:0;;;;32609:21;;32572:63;;;;32609:21;32580:15;32572:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;30996:1647:0:o;10151:98::-;10209:7;10236:5;10240:1;10236;:5;:::i;:::-;10229:12;10151:98;-1:-1:-1;;;10151:98:0:o;10257:::-;10315:7;10342:5;10346:1;10342;:5;:::i;10045:98::-;10103:7;10130:5;10134:1;10130;:5;:::i;29876:589::-;30026:16;;;30040:1;30026:16;;;;;;;;30002:21;;30026:16;;;;;;;;;;-1:-1:-1;30026:16:0;30002:40;;30071:4;30053;30058:1;30053:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;30053:23:0;;;-1:-1:-1;;;;;30053:23:0;;;;;30097:15;-1:-1:-1;;;;;30097:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30087:4;30092:1;30087:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;30087:32:0;;;-1:-1:-1;;;;;30087:32:0;;;;;30132:62;30149:4;30164:15;30182:11;30132:8;:62::i;:::-;30233:224;;-1:-1:-1;;;30233:224:0;;-1:-1:-1;;;;;30233:15:0;:66;;;;:224;;30314:11;;30340:1;;30384:4;;30411;;30431:15;;30233:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29931:534;29876:589;:::o;30473:515::-;30621:62;30638:4;30653:15;30671:11;30621:8;:62::i;:::-;30930:9;;30726:254;;-1:-1:-1;;;30726:254:0;;30798:4;30726:254;;;15846:34:1;15896:18;;;15889:34;;;30844:1:0;15939:18:1;;;15932:34;;;15982:18;;;15975:34;-1:-1:-1;;;;;30930:9:0;;;16025:19:1;;;16018:44;30954:15:0;16078:19:1;;;16071:35;30726:15:0;:31;;;;;;30765:9;;15780:19:1;;30726:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30473:515;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:247::-;1323:6;1376:2;1364:9;1355:7;1351:23;1347:32;1344:52;;;1392:1;1389;1382:12;1344:52;1431:9;1418:23;1450:31;1475:5;1450:31;:::i;1933:180::-;1992:6;2045:2;2033:9;2024:7;2020:23;2016:32;2013:52;;;2061:1;2058;2051:12;2013:52;-1:-1:-1;2084:23:1;;1933:180;-1:-1:-1;1933:180:1:o;2118:456::-;2195:6;2203;2211;2264:2;2252:9;2243:7;2239:23;2235:32;2232:52;;;2280:1;2277;2270:12;2232:52;2319:9;2306:23;2338:31;2363:5;2338:31;:::i;:::-;2388:5;-1:-1:-1;2445:2:1;2430:18;;2417:32;2458:33;2417:32;2458:33;:::i;:::-;2118:456;;2510:7;;-1:-1:-1;;;2564:2:1;2549:18;;;;2536:32;;2118:456::o;2976:160::-;3041:20;;3097:13;;3090:21;3080:32;;3070:60;;3126:1;3123;3116:12;3141:315;3206:6;3214;3267:2;3255:9;3246:7;3242:23;3238:32;3235:52;;;3283:1;3280;3273:12;3235:52;3322:9;3309:23;3341:31;3366:5;3341:31;:::i;:::-;3391:5;-1:-1:-1;3415:35:1;3446:2;3431:18;;3415:35;:::i;:::-;3405:45;;3141:315;;;;;:::o;3461:180::-;3517:6;3570:2;3558:9;3549:7;3545:23;3541:32;3538:52;;;3586:1;3583;3576:12;3538:52;3609:26;3625:9;3609:26;:::i;3646:523::-;3750:6;3758;3766;3774;3782;3790;3843:3;3831:9;3822:7;3818:23;3814:33;3811:53;;;3860:1;3857;3850:12;3811:53;-1:-1:-1;;3883:23:1;;;3953:2;3938:18;;3925:32;;-1:-1:-1;4004:2:1;3989:18;;3976:32;;4055:2;4040:18;;4027:32;;-1:-1:-1;4106:3:1;4091:19;;4078:33;;-1:-1:-1;4158:3:1;4143:19;4130:33;;-1:-1:-1;3646:523:1;-1:-1:-1;3646:523:1:o;4174:388::-;4242:6;4250;4303:2;4291:9;4282:7;4278:23;4274:32;4271:52;;;4319:1;4316;4309:12;4271:52;4358:9;4345:23;4377:31;4402:5;4377:31;:::i;:::-;4427:5;-1:-1:-1;4484:2:1;4469:18;;4456:32;4497:33;4456:32;4497:33;:::i;:::-;4549:7;4539:17;;;4174:388;;;;;:::o;4567:380::-;4646:1;4642:12;;;;4689;;;4710:61;;4764:4;4756:6;4752:17;4742:27;;4710:61;4817:2;4809:6;4806:14;4786:18;4783:38;4780:161;;4863:10;4858:3;4854:20;4851:1;4844:31;4898:4;4895:1;4888:15;4926:4;4923:1;4916:15;4780:161;;4567:380;;;:::o;4952:356::-;5154:2;5136:21;;;5173:18;;;5166:30;5232:34;5227:2;5212:18;;5205:62;5299:2;5284:18;;4952:356::o;5313:127::-;5374:10;5369:3;5365:20;5362:1;5355:31;5405:4;5402:1;5395:15;5429:4;5426:1;5419:15;5445:168;5485:7;5551:1;5547;5543:6;5539:14;5536:1;5533:21;5528:1;5521:9;5514:17;5510:45;5507:71;;;5558:18;;:::i;:::-;-1:-1:-1;5598:9:1;;5445:168::o;5618:217::-;5658:1;5684;5674:132;;5728:10;5723:3;5719:20;5716:1;5709:31;5763:4;5760:1;5753:15;5791:4;5788:1;5781:15;5674:132;-1:-1:-1;5820:9:1;;5618:217::o;6665:128::-;6705:3;6736:1;6732:6;6729:1;6726:13;6723:39;;;6742:18;;:::i;:::-;-1:-1:-1;6778:9:1;;6665:128::o;10093:401::-;10295:2;10277:21;;;10334:2;10314:18;;;10307:30;10373:34;10368:2;10353:18;;10346:62;-1:-1:-1;;;10439:2:1;10424:18;;10417:35;10484:3;10469:19;;10093:401::o;10499:399::-;10701:2;10683:21;;;10740:2;10720:18;;;10713:30;10779:34;10774:2;10759:18;;10752:62;-1:-1:-1;;;10845:2:1;10830:18;;10823:33;10888:3;10873:19;;10499:399::o;12929:125::-;12969:4;12997:1;12994;12991:8;12988:34;;;13002:18;;:::i;:::-;-1:-1:-1;13039:9:1;;12929:125::o;14132:127::-;14193:10;14188:3;14184:20;14181:1;14174:31;14224:4;14221:1;14214:15;14248:4;14245:1;14238:15;14264:251;14334:6;14387:2;14375:9;14366:7;14362:23;14358:32;14355:52;;;14403:1;14400;14393:12;14355:52;14435:9;14429:16;14454:31;14479:5;14454:31;:::i;14520:980::-;14782:4;14830:3;14819:9;14815:19;14861:6;14850:9;14843:25;14887:2;14925:6;14920:2;14909:9;14905:18;14898:34;14968:3;14963:2;14952:9;14948:18;14941:31;14992:6;15027;15021:13;15058:6;15050;15043:22;15096:3;15085:9;15081:19;15074:26;;15135:2;15127:6;15123:15;15109:29;;15156:1;15166:195;15180:6;15177:1;15174:13;15166:195;;;15245:13;;-1:-1:-1;;;;;15241:39:1;15229:52;;15336:15;;;;15301:12;;;;15277:1;15195:9;15166:195;;;-1:-1:-1;;;;;;;15417:32:1;;;;15412:2;15397:18;;15390:60;-1:-1:-1;;;15481:3:1;15466:19;15459:35;15378:3;14520:980;-1:-1:-1;;;14520:980:1:o;16117:306::-;16205:6;16213;16221;16274:2;16262:9;16253:7;16249:23;16245:32;16242:52;;;16290:1;16287;16280:12;16242:52;16319:9;16313:16;16303:26;;16369:2;16358:9;16354:18;16348:25;16338:35;;16413:2;16402:9;16398:18;16392:25;16382:35;;16117:306;;;;;:::o
Swarm Source
ipfs://737db9844fcefb6603b3162431a2932137551f6ef0a9d3e7660b2f9a0c56055e
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.