ETH Price: $3,320.29 (+1.52%)
Gas: 12 Gwei

Token

Pepe Cocaine (PEPAINE)
 

Overview

Max Total Supply

1,000,000,000,000 PEPAINE

Holders

50

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: PEPAINE
Balance
892,257,059,659.650255081342165866 PEPAINE

Value
$0.00
0x0543fb1b4472ff8703cea2aa4a16386b13176837
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PEPAINE

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-16
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

/*
$PEPAINE - Pepe Cocaine

https://pepaine.com/
https://t.me/PEPAINE
https://twitter.com/pepecocaine
*/ 

abstract contract Context {
	function _msgSender() internal view virtual returns (address) {
		return msg.sender;
	}

	function _msgData() internal view virtual returns (bytes calldata) {
		this;
		return msg.data;
	}
}

interface IUniswapV2Pair {
	event Approval(address indexed owner, address indexed spender, uint value);
	event Transfer(address indexed from, address indexed to, uint 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 (uint);
	function balanceOf(address owner) external view returns (uint);
	function allowance(address owner, address spender) external view returns (uint);
	function approve(address spender, uint value) external returns (bool);
	function transfer(address to, uint value) external returns (bool);
	function transferFrom(address from, address to, uint 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 (uint);
	function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

	event Mint(address indexed sender, uint amount0, uint amount1);
	event Swap(
		address indexed sender,
		uint amount0In,
		uint amount1In,
		uint amount0Out,
		uint amount1Out,
		address indexed to
	);
	event Sync(uint112 reserve0, uint112 reserve1);

	function MINIMUM_LIQUIDITY() external pure returns (uint);
	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 (uint);
	function price1CumulativeLast() external view returns (uint);
	function kLast() external view returns (uint);
	function mint(address to) external returns (uint liquidity);
	function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
	function skim(address to) external;
	function sync() external;
	function initialize(address, address) external;
	}

interface IUniswapV2Factory {
	event PairCreated(address indexed token0, address indexed token1, address pair, uint);
	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(uint) external view returns (address pair);
	function allPairsLength() external view returns (uint);
	function createPair(address tokenA, address tokenB) external returns (address pair);
	function setFeeTo(address) external;
	function setFeeToSetter(address) external;
}

interface IERC20 {
	function totalSupply() external view returns (uint256);
	function balanceOf(address account) external view returns (uint256);
	function transfer(address recipient, uint256 amount) external returns (bool);
	function allowance(address owner, address spender) external view returns (uint256);
	function approve(address spender, uint256 amount) external returns (bool);
	function transferFrom(
		address sender,
		address recipient,
		uint256 amount
	) external returns (bool);
	event Transfer(address indexed from, address indexed to, uint256 value);
	event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
	function name() external view returns (string memory);
	function symbol() external view returns (string memory);
	function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
	using SafeMath for uint256;
	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);
		_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
		return true;
	}

	function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
		_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
		return true;
	}

	function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
		_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
		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);
		_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
		_balances[recipient] = _balances[recipient].add(amount);
		emit Transfer(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 = _totalSupply.add(amount);
		_balances[account] = _balances[account].add(amount);

		emit Transfer(address(0), account, 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 {}

}

library SafeMath {
	
	function add(uint256 a, uint256 b) internal pure returns (uint256) {
		uint256 c = a + b;
		require(c >= a, "SafeMath: addition overflow");

		return c;
	}

	function sub(uint256 a, uint256 b) internal pure returns (uint256) {
		return sub(a, b, "SafeMath: subtraction overflow");
	}


	function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
		require(b <= a, errorMessage);
		uint256 c = a - b;

		return c;

	}

	function mul(uint256 a, uint256 b) internal pure returns (uint256) {
		if (a == 0) {
			return 0;
		}
		uint256 c = a * b;
		require(c / a == b, "SafeMath: multiplication overflow");

		return c;
	}

	function div(uint256 a, uint256 b) internal pure returns (uint256) {
		return div(a, b, "SafeMath: division by zero");
	}

	function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
		require(b > 0, errorMessage);
		uint256 c = a / b;
		return c;
	}

	function mod(uint256 a, uint256 b) internal pure returns (uint256) {
		return mod(a, b, "SafeMath: modulo by zero");
	}
	function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
		require(b != 0, errorMessage);
		return a % b;
	}
}

contract Ownable is Context {
	address private _owner;

	event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

	constructor () {
		address msgSender = _msgSender();
		_owner = msgSender;
		emit OwnershipTransferred(address(0), msgSender);
	}

	function owner() public view returns (address) {
		return _owner;
	}

	modifier onlyOwner() {
		require(_owner == _msgSender(), "Ownable: caller is not the owner");
		_;
	}

	function renounceOwnership() public virtual onlyOwner {
		emit OwnershipTransferred(_owner, address(0));
		_owner = address(0);
	}
	function transferOwnership(address newOwner) public virtual onlyOwner {
		require(newOwner != address(0), "Ownable: new owner is the zero address");
		emit OwnershipTransferred(_owner, newOwner);
		_owner = newOwner;
	}
}

library SafeMathInt {
	int256 private constant MIN_INT256 = int256(1) << 255;
	int256 private constant MAX_INT256 = ~(int256(1) << 255);

	function mul(int256 a, int256 b) internal pure returns (int256) {
		int256 c = a * b;
		require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
		require((b == 0) || (c / b == a));
		return c;
	}

	function div(int256 a, int256 b) internal pure returns (int256) {
		require(b != -1 || a != MIN_INT256);
		return a / b;
	}

	function sub(int256 a, int256 b) internal pure returns (int256) {
		int256 c = a - b;
		require((b >= 0 && c <= a) || (b < 0 && c > a));
		return c;
	}

	function add(int256 a, int256 b) internal pure returns (int256) {
		int256 c = a + b;
		require((b >= 0 && c >= a) || (b < 0 && c < a));
		return c;
	}

	function abs(int256 a) internal pure returns (int256) {
		require(a != MIN_INT256);
		return a < 0 ? -a : a;
	}
	function toUint256Safe(int256 a) internal pure returns (uint256) {
		require(a >= 0);
		return uint256(a);
	}
}

library SafeMathUint {
function toInt256Safe(uint256 a) internal pure returns (int256) {
	int256 b = int256(a);
	require(b >= 0);
	return b;
}
}

interface IUniswapV2Router01 {
	function factory() external pure returns (address);
	function WETH() external pure returns (address);
	function addLiquidity(
		address tokenA,
		address tokenB,
		uint amountADesired,
		uint amountBDesired,
		uint amountAMin,
		uint amountBMin,
		address to,
		uint deadline
	) external returns (uint amountA, uint amountB, uint liquidity);
	function addLiquidityETH(
		address token,
		uint amountTokenDesired,
		uint amountTokenMin,
		uint amountETHMin,
		address to,
		uint deadline
	) external payable returns (uint amountToken, uint amountETH, uint liquidity);
	function removeLiquidity(
		address tokenA,
		address tokenB,
		uint liquidity,
		uint amountAMin,
		uint amountBMin,
		address to,
		uint deadline
	) external returns (uint amountA, uint amountB);

	function removeLiquidityETH(
		address token,
		uint liquidity,
		uint amountTokenMin,
		uint amountETHMin,
		address to,
		uint deadline
	) external returns (uint amountToken, uint amountETH);
	function removeLiquidityWithPermit(
		address tokenA,
		address tokenB,
		uint liquidity,
		uint amountAMin,
		uint amountBMin,
		address to,
		uint deadline,
		bool approveMax, uint8 v, bytes32 r, bytes32 s
	) external returns (uint amountA, uint amountB);
	function removeLiquidityETHWithPermit(
		address token,
		uint liquidity,
		uint amountTokenMin,
		uint amountETHMin,
		address to,
		uint deadline,
		bool approveMax, uint8 v, bytes32 r, bytes32 s
	) external returns (uint amountToken, uint amountETH);
	function swapExactTokensForTokens(
		uint amountIn,
		uint amountOutMin,
		address[] calldata path,
		address to,
		uint deadline
	) external returns (uint[] memory amounts);
	function swapTokensForExactTokens(
		uint amountOut,

		uint amountInMax,
		address[] calldata path,
		address to,
		uint deadline
	) external returns (uint[] memory amounts);
	function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
		external
		payable
		returns (uint[] memory amounts);
	function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
		external
		returns (uint[] memory amounts);
	function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
		external
		returns (uint[] memory amounts);
		function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
		external
		payable
		returns (uint[] memory amounts);
	function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
	function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
	function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
	function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
	function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
	function removeLiquidityETHSupportingFeeOnTransferTokens(
		address token,
		uint liquidity,
		uint amountTokenMin,
		uint amountETHMin,
		address to,
		uint deadline

	) external returns (uint amountETH);
	function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
		address token,
		uint liquidity,
		uint amountTokenMin,
		uint amountETHMin,
		address to,
		uint deadline,
		bool approveMax, uint8 v, bytes32 r, bytes32 s
	) external returns (uint amountETH);

	function swapExactTokensForTokensSupportingFeeOnTransferTokens(
		uint amountIn,
		uint amountOutMin,
		address[] calldata path,
		address to,
		uint deadline

	) external;
	function swapExactETHForTokensSupportingFeeOnTransferTokens(
		uint amountOutMin,
		address[] calldata path,
		address to,
		uint deadline
		) external payable;
	function swapExactTokensForETHSupportingFeeOnTransferTokens(
		uint amountIn,
		uint amountOutMin,
		address[] calldata path,
		address to,
		uint deadline
	) external;
}
contract PEPAINE is ERC20, Ownable {
	using SafeMath for uint256;

	IUniswapV2Router02 public immutable uniswapV2Router;

	address public immutable uniswapV2Pair;

	bool private swapping;

	address public marketingWallet;
	
	uint256 public maxTransactionAmount;
	uint256 public swapTokensAtAmount;

	uint256 public maxWallet;

	bool public swapEnabled = true;

	uint256 public buyTotalFees;
	uint256 public buyMarketingFee;
	
	uint256 public sellTotalFees;
	uint256 public sellMarketingFee;
	
	uint256 public tokensForMarketing;

	mapping (address => bool) private _isExcludedFromFees;
	mapping (address => bool) public _isExcludedMaxTransactionAmount;

	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 marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
	event BuyBackTriggered(uint256 amount);

	constructor() ERC20("Pepe Cocaine", "PEPAINE") {
		address newOwner = address(owner());
		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 = 15;
	
		uint256 _sellMarketingFee = 25;
		
		uint256 totalSupply = 1 * 1e12 * 1e18;
		
		maxTransactionAmount = (totalSupply * 2 / 100) + (1 * 1e18);
		maxWallet = (totalSupply * 3 / 100) + (1 * 1e18);
        swapTokensAtAmount = totalSupply * 10 / 10000;

		buyMarketingFee = _buyMarketingFee;
		buyTotalFees = buyMarketingFee;
		
		sellMarketingFee = _sellMarketingFee;
		sellTotalFees = sellMarketingFee;
		
		marketingWallet = address(0x8Af585510F147d3b410FbD4588316f6C50dcB6Ec);

		excludeFromFees(newOwner, true);
		excludeFromFees(address(this), true);
		excludeFromFees(address(0xdead), true);
		excludeFromFees(marketingWallet, true);
		
		excludeFromMaxTransaction(newOwner, true);
		excludeFromMaxTransaction(address(this), true);
		excludeFromMaxTransaction(address(0xdead), true);
		excludeFromMaxTransaction(marketingWallet, true);

		_mint(newOwner, totalSupply);

		transferOwnership(newOwner);
	}

	receive() external payable {
	}

	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 updateMaxTxAmount(uint256 newNum) external onlyOwner {
		require(newNum >= (totalSupply() * 2 / 100)/1e18, "Cannot set maxTransactionAmount lower than 2%");
		maxTransactionAmount = (newNum * 1e18) + (1 * 1e18) ;
	}
	
	function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
		require(newNum >= (totalSupply() * 3 / 100)/1e18, "Cannot set maxWalletAmount lower than 3%");
		maxWallet = (newNum * 1e18) + (1 * 1e18);
	}

	function removeLimits() external onlyOwner {
		maxTransactionAmount = totalSupply();
		maxWallet = totalSupply();
	}
	
	function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
		_isExcludedMaxTransactionAmount[updAds] = isEx;
	}

	function updateSwapEnabled(bool enabled) external onlyOwner(){
		swapEnabled = enabled;
	}

	function updateBuyFees(uint256 _marketingFee) external onlyOwner {
		buyMarketingFee = _marketingFee;
		buyTotalFees = buyMarketingFee;
		require(buyTotalFees <= 15, "Must keep buy fees at 15% or less");
	}

	function updateSellFees(uint256 _marketingFee) external onlyOwner {
		sellMarketingFee = _marketingFee;
		sellTotalFees = sellMarketingFee;
		require(sellTotalFees <= 25, "Must keep sell fees at 25% or less");
	}

	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 updateMarketingWallet(address newMarketingWallet) external onlyOwner {
		emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
		marketingWallet = newMarketingWallet;
	}

	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 (
				from != owner() &&

				to != owner() &&
				to != address(0) &&
				to != address(0xdead) &&
				!swapping
			){
				// buy transaction
				if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
						require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
						require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");

				}
				
				//sell transaction
				else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
						require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
				}
			}
		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(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
			takeFee = false;
		}
		uint256 fees = 0;
		if(takeFee){
			if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
				fees = amount.mul(sellTotalFees).div(100);
				tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
			}
			else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
				fees = amount.mul(buyTotalFees).div(100);
				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 {
		address[] memory path = new address[](2);
		path[0] = address(this);

		path[1] = uniswapV2Router.WETH();
		_approve(address(this), address(uniswapV2Router), tokenAmount);
		uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			tokenAmount,
			0,
			path,
			address(this),
			block.timestamp
		);
	}

	function swapBack() private {
		uint256 contractBalance = balanceOf(address(this));
		uint256 totalTokensToSwap = tokensForMarketing;
		
		if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
		uint256 amountToSwapForETH = contractBalance;
		uint256 initialETHBalance = address(this).balance;
		swapTokensForEth(amountToSwapForETH); 
		uint256 ethBalance = address(this).balance.sub(initialETHBalance);
		uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);

		tokensForMarketing = 0;
		
		(bool success,) = address(marketingWallet).call{value: ethForMarketing}("");
		(success,) = address(marketingWallet).call{value: address(this).balance}("");
	}
	
}

Contract Security Audit

Contract ABI

[{"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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","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":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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","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":"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":"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":[{"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":"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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":[],"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":"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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","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"},{"stateMutability":"payable","type":"receive"}]

60c0604052600a805460ff191660011790553480156200001e57600080fd5b50604080518082018252600c81526b5065706520436f6361696e6560a01b60208083019182528351808501909452600784526650455041494e4560c81b90840152815191929162000072916003916200081b565b508051620000889060049060208401906200081b565b50505060006200009d6200043c60201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062002c8c833981519152908290a3506000620000ef6005546001600160a01b031690565b9050737a250d5630b4cf539739df2c5dacb4c659f2488d6200011381600162000440565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200015957600080fd5b505afa1580156200016e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001949190620008c1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001dd57600080fd5b505afa158015620001f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002189190620008c1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200026157600080fd5b505af115801562000276573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029c9190620008c1565b6001600160a01b031660a0819052620002b790600162000440565b60a051620002c7906001620004ba565b600f60196c0c9f2c9cd04674edea400000006064620002e882600262000902565b620002f4919062000924565b6200030890670de0b6b3a764000062000947565b60075560646200031a82600362000902565b62000326919062000924565b6200033a90670de0b6b3a764000062000947565b6009556127106200034d82600a62000902565b62000359919062000924565b600855600c839055600b839055600e829055600d829055600680546001600160a01b031916738af585510f147d3b410fbd4588316f6c50dcb6ec179055620003a38560016200050e565b620003b03060016200050e565b620003bf61dead60016200050e565b600654620003d8906001600160a01b031660016200050e565b620003e585600162000440565b620003f230600162000440565b6200040161dead600162000440565b6006546200041a906001600160a01b0316600162000440565b620004268582620005b8565b6200043185620006b4565b50505050506200099f565b3390565b6005546001600160a01b031633146200048f5760405162461bcd60e51b8152602060048201819052602482015260008051602062002c6c83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260126020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005595760405162461bcd60e51b8152602060048201819052602482015260008051602062002c6c833981519152604482015260640162000486565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006105760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000486565b6200062c81600254620007b160201b620011c01790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200065f918390620011c0620007b1821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620006ff5760405162461bcd60e51b8152602060048201819052602482015260008051602062002c6c833981519152604482015260640162000486565b6001600160a01b038116620007665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000486565b6005546040516001600160a01b0380841692169060008051602062002c8c83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080620007c0838562000947565b905083811015620008145760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000486565b9392505050565b828054620008299062000962565b90600052602060002090601f0160209004810192826200084d576000855562000898565b82601f106200086857805160ff191683800117855562000898565b8280016001018555821562000898579182015b82811115620008985782518255916020019190600101906200087b565b50620008a6929150620008aa565b5090565b5b80821115620008a65760008155600101620008ab565b600060208284031215620008d457600080fd5b81516001600160a01b03811681146200081457600080fd5b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200091f576200091f620008ec565b500290565b6000826200094257634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200095d576200095d620008ec565b500190565b600181811c908216806200097757607f821691505b602082108114156200099957634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05161228b620009e1600039600081816103c50152610be70152600081816102e801528181611c3201528181611cfa0152611d36015261228b6000f3fe60806040526004361061023f5760003560e01c80637bce5a041161012e578063c0246668116100ab578063dd62ed3e1161006f578063dd62ed3e146106ed578063e2f4560514610733578063eba4c33314610749578063f2fde38b14610769578063f8b45b051461078957600080fd5b8063c024666814610661578063c18bc19514610681578063c8c8ebe4146106a1578063d257b34f146106b7578063d85ba063146106d757600080fd5b80639a7a23d6116100f25780639a7a23d6146105b1578063a457c2d7146105d1578063a9059cbb146105f1578063aacebbe314610611578063b62496f51461063157600080fd5b80637bce5a04146105325780638da5cb5b146105485780639213691314610566578063924de9b71461057c57806395d89b411461059c57600080fd5b80634fbee193116101bc578063715018a611610180578063715018a6146104a857806371fc4688146104bd578063751039fc146104dd5780637571336a146104f257806375f0a8741461051257600080fd5b80634fbee193146103e75780636256d181146104205780636a486a8e146104425780636ddd17131461045857806370a082311461047257600080fd5b80631f3fed8f116102035780631f3fed8f1461034157806323b872dd14610357578063313ce56714610377578063395093511461039357806349bd5a5e146103b357600080fd5b806306fdde031461024b578063095ea7b31461027657806310d5de53146102a65780631694505e146102d657806318160ddd1461032257600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026061079f565b60405161026d9190611e1a565b60405180910390f35b34801561028257600080fd5b50610296610291366004611e84565b610831565b604051901515815260200161026d565b3480156102b257600080fd5b506102966102c1366004611eb0565b60116020526000908152604090205460ff1681565b3480156102e257600080fd5b5061030a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026d565b34801561032e57600080fd5b506002545b60405190815260200161026d565b34801561034d57600080fd5b50610333600f5481565b34801561036357600080fd5b50610296610372366004611ecd565b610848565b34801561038357600080fd5b506040516012815260200161026d565b34801561039f57600080fd5b506102966103ae366004611e84565b6108b1565b3480156103bf57600080fd5b5061030a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f357600080fd5b50610296610402366004611eb0565b6001600160a01b031660009081526010602052604090205460ff1690565b34801561042c57600080fd5b5061044061043b366004611f0e565b6108e7565b005b34801561044e57600080fd5b50610333600d5481565b34801561046457600080fd5b50600a546102969060ff1681565b34801561047e57600080fd5b5061033361048d366004611eb0565b6001600160a01b031660009081526020819052604090205490565b3480156104b457600080fd5b506104406109dc565b3480156104c957600080fd5b506104406104d8366004611f0e565b610a50565b3480156104e957600080fd5b50610440610ae2565b3480156104fe57600080fd5b5061044061050d366004611f37565b610b1a565b34801561051e57600080fd5b5060065461030a906001600160a01b031681565b34801561053e57600080fd5b50610333600c5481565b34801561055457600080fd5b506005546001600160a01b031661030a565b34801561057257600080fd5b50610333600e5481565b34801561058857600080fd5b50610440610597366004611f6c565b610b6f565b3480156105a857600080fd5b50610260610bac565b3480156105bd57600080fd5b506104406105cc366004611f37565b610bbb565b3480156105dd57600080fd5b506102966105ec366004611e84565b610c9b565b3480156105fd57600080fd5b5061029661060c366004611e84565b610cea565b34801561061d57600080fd5b5061044061062c366004611eb0565b610cf7565b34801561063d57600080fd5b5061029661064c366004611eb0565b60126020526000908152604090205460ff1681565b34801561066d57600080fd5b5061044061067c366004611f37565b610d7e565b34801561068d57600080fd5b5061044061069c366004611f0e565b610e07565b3480156106ad57600080fd5b5061033360075481565b3480156106c357600080fd5b506102966106d2366004611f0e565b610eee565b3480156106e357600080fd5b50610333600b5481565b3480156106f957600080fd5b50610333610708366004611f87565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561073f57600080fd5b5061033360085481565b34801561075557600080fd5b50610440610764366004611f0e565b611045565b34801561077557600080fd5b50610440610784366004611eb0565b6110d5565b34801561079557600080fd5b5061033360095481565b6060600380546107ae90611fc0565b80601f01602080910402602001604051908101604052809291908181526020018280546107da90611fc0565b80156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b5050505050905090565b600061083e338484611226565b5060015b92915050565b600061085584848461134b565b6108a784336108a285604051806060016040528060288152602001612209602891396001600160a01b038a166000908152600160209081526040808320338452909152902054919061186a565b611226565b5060019392505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161083e9185906108a290866111c0565b6005546001600160a01b0316331461091a5760405162461bcd60e51b815260040161091190611ffb565b60405180910390fd5b670de0b6b3a7640000606461092e60025490565b610939906002612046565b6109439190612065565b61094d9190612065565b8110156109b25760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526c6c6f776572207468616e20322560981b6064820152608401610911565b6109c481670de0b6b3a7640000612046565b6109d690670de0b6b3a7640000612087565b60075550565b6005546001600160a01b03163314610a065760405162461bcd60e51b815260040161091190611ffb565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610a7a5760405162461bcd60e51b815260040161091190611ffb565b600c819055600b819055600f811115610adf5760405162461bcd60e51b815260206004820152602160248201527f4d757374206b65657020627579206665657320617420313525206f72206c65736044820152607360f81b6064820152608401610911565b50565b6005546001600160a01b03163314610b0c5760405162461bcd60e51b815260040161091190611ffb565b600254600755600254600955565b6005546001600160a01b03163314610b445760405162461bcd60e51b815260040161091190611ffb565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610b995760405162461bcd60e51b815260040161091190611ffb565b600a805460ff1916911515919091179055565b6060600480546107ae90611fc0565b6005546001600160a01b03163314610be55760405162461bcd60e51b815260040161091190611ffb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415610c8d5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610911565b610c9782826118a4565b5050565b600061083e33846108a285604051806060016040528060258152602001612231602591393360009081526001602090815260408083206001600160a01b038d168452909152902054919061186a565b600061083e33848461134b565b6005546001600160a01b03163314610d215760405162461bcd60e51b815260040161091190611ffb565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610da85760405162461bcd60e51b815260040161091190611ffb565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610e315760405162461bcd60e51b815260040161091190611ffb565b670de0b6b3a76400006064610e4560025490565b610e50906003612046565b610e5a9190612065565b610e649190612065565b811015610ec45760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c6574416d6f756e74206c6f776572604482015267207468616e20332560c01b6064820152608401610911565b610ed681670de0b6b3a7640000612046565b610ee890670de0b6b3a7640000612087565b60095550565b6005546000906001600160a01b03163314610f1b5760405162461bcd60e51b815260040161091190611ffb565b620186a0610f2860025490565b610f33906001612046565b610f3d9190612065565b821015610faa5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610911565b6103e8610fb660025490565b610fc1906005612046565b610fcb9190612065565b8211156110375760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610911565b50600881905560015b919050565b6005546001600160a01b0316331461106f5760405162461bcd60e51b815260040161091190611ffb565b600e819055600d8190556019811115610adf5760405162461bcd60e51b815260206004820152602260248201527f4d757374206b6565702073656c6c206665657320617420323525206f72206c65604482015261737360f01b6064820152608401610911565b6005546001600160a01b031633146110ff5760405162461bcd60e51b815260040161091190611ffb565b6001600160a01b0381166111645760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610911565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000806111cd8385612087565b90508381101561121f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610911565b9392505050565b6001600160a01b0383166112885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610911565b6001600160a01b0382166112e95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610911565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113715760405162461bcd60e51b81526004016109119061209f565b6001600160a01b0382166113975760405162461bcd60e51b8152600401610911906120e4565b806113ad576113a8838360006118f8565b505050565b6005546001600160a01b038481169116148015906113d957506005546001600160a01b03838116911614155b80156113ed57506001600160a01b03821615155b801561140457506001600160a01b03821661dead14155b801561141a5750600554600160a01b900460ff16155b156115fb576001600160a01b03831660009081526012602052604090205460ff16801561146057506001600160a01b03821660009081526011602052604090205460ff16155b15611544576007548111156114d55760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610911565b6009546001600160a01b0383166000908152602081905260409020546114fb9083612087565b111561153f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610911565b6115fb565b6001600160a01b03821660009081526012602052604090205460ff16801561158557506001600160a01b03831660009081526011602052604090205460ff16155b156115fb576007548111156115fb5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610911565b30600090815260208190526040902054600854811080159081906116215750600a5460ff165b80156116375750600554600160a01b900460ff16155b801561165c57506001600160a01b03851660009081526012602052604090205460ff16155b801561168157506001600160a01b03851660009081526010602052604090205460ff16155b80156116a657506001600160a01b03841660009081526010602052604090205460ff16155b156116d4576005805460ff60a01b1916600160a01b1790556116c6611a01565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526010602052604090205460ff600160a01b90920482161591168061172257506001600160a01b03851660009081526010602052604090205460ff165b1561172b575060005b60008115611856576001600160a01b03861660009081526012602052604090205460ff16801561175d57506000600d54115b156117bb57611782606461177c600d5488611b1a90919063ffffffff16565b90611b99565b9050600d54600e54826117959190612046565b61179f9190612065565b600f60008282546117b09190612087565b909155506118389050565b6001600160a01b03871660009081526012602052604090205460ff1680156117e557506000600b54115b1561183857611804606461177c600b5488611b1a90919063ffffffff16565b9050600b54600c54826118179190612046565b6118219190612065565b600f60008282546118329190612087565b90915550505b8015611849576118498730836118f8565b6118538186612127565b94505b6118618787876118f8565b50505050505050565b6000818484111561188e5760405162461bcd60e51b81526004016109119190611e1a565b50600061189b8486612127565b95945050505050565b6001600160a01b038216600081815260126020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661191e5760405162461bcd60e51b81526004016109119061209f565b6001600160a01b0382166119445760405162461bcd60e51b8152600401610911906120e4565b611981816040518060600160405280602681526020016121e3602691396001600160a01b038616600090815260208190526040902054919061186a565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546119b090826111c0565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161133e565b30600090815260208190526040902054600f54811580611a1f575080155b15611a28575050565b8147611a3382611bdb565b6000611a3f4783611daa565b90506000611a5c8561177c600f5485611b1a90919063ffffffff16565b6000600f81905560065460405192935090916001600160a01b039091169083908381818185875af1925050503d8060008114611ab4576040519150601f19603f3d011682016040523d82523d6000602084013e611ab9565b606091505b50506006546040519192506001600160a01b0316904790600081818185875af1925050503d8060008114611b09576040519150601f19603f3d011682016040523d82523d6000602084013e611b0e565b606091505b50505050505050505050565b600082611b2957506000610842565b6000611b358385612046565b905082611b428583612065565b1461121f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610911565b600061121f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611dec565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c1057611c1061213e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8957600080fd5b505afa158015611c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc19190612154565b81600181518110611cd457611cd461213e565b60200260200101906001600160a01b031690816001600160a01b031681525050611d1f307f000000000000000000000000000000000000000000000000000000000000000084611226565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611d74908590600090869030904290600401612171565b600060405180830381600087803b158015611d8e57600080fd5b505af1158015611da2573d6000803e3d6000fd5b505050505050565b600061121f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061186a565b60008183611e0d5760405162461bcd60e51b81526004016109119190611e1a565b50600061189b8486612065565b600060208083528351808285015260005b81811015611e4757858101830151858201604001528201611e2b565b81811115611e59576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610adf57600080fd5b60008060408385031215611e9757600080fd5b8235611ea281611e6f565b946020939093013593505050565b600060208284031215611ec257600080fd5b813561121f81611e6f565b600080600060608486031215611ee257600080fd5b8335611eed81611e6f565b92506020840135611efd81611e6f565b929592945050506040919091013590565b600060208284031215611f2057600080fd5b5035919050565b8035801515811461104057600080fd5b60008060408385031215611f4a57600080fd5b8235611f5581611e6f565b9150611f6360208401611f27565b90509250929050565b600060208284031215611f7e57600080fd5b61121f82611f27565b60008060408385031215611f9a57600080fd5b8235611fa581611e6f565b91506020830135611fb581611e6f565b809150509250929050565b600181811c90821680611fd457607f821691505b60208210811415611ff557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561206057612060612030565b500290565b60008261208257634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561209a5761209a612030565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008282101561213957612139612030565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561216657600080fd5b815161121f81611e6f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121c15784516001600160a01b03168352938301939183019160010161219c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220210bc2958a117925e3e3d2760a0f3406032f487938f61ffe59c18fc4a8e429a564736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80637bce5a041161012e578063c0246668116100ab578063dd62ed3e1161006f578063dd62ed3e146106ed578063e2f4560514610733578063eba4c33314610749578063f2fde38b14610769578063f8b45b051461078957600080fd5b8063c024666814610661578063c18bc19514610681578063c8c8ebe4146106a1578063d257b34f146106b7578063d85ba063146106d757600080fd5b80639a7a23d6116100f25780639a7a23d6146105b1578063a457c2d7146105d1578063a9059cbb146105f1578063aacebbe314610611578063b62496f51461063157600080fd5b80637bce5a04146105325780638da5cb5b146105485780639213691314610566578063924de9b71461057c57806395d89b411461059c57600080fd5b80634fbee193116101bc578063715018a611610180578063715018a6146104a857806371fc4688146104bd578063751039fc146104dd5780637571336a146104f257806375f0a8741461051257600080fd5b80634fbee193146103e75780636256d181146104205780636a486a8e146104425780636ddd17131461045857806370a082311461047257600080fd5b80631f3fed8f116102035780631f3fed8f1461034157806323b872dd14610357578063313ce56714610377578063395093511461039357806349bd5a5e146103b357600080fd5b806306fdde031461024b578063095ea7b31461027657806310d5de53146102a65780631694505e146102d657806318160ddd1461032257600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026061079f565b60405161026d9190611e1a565b60405180910390f35b34801561028257600080fd5b50610296610291366004611e84565b610831565b604051901515815260200161026d565b3480156102b257600080fd5b506102966102c1366004611eb0565b60116020526000908152604090205460ff1681565b3480156102e257600080fd5b5061030a7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161026d565b34801561032e57600080fd5b506002545b60405190815260200161026d565b34801561034d57600080fd5b50610333600f5481565b34801561036357600080fd5b50610296610372366004611ecd565b610848565b34801561038357600080fd5b506040516012815260200161026d565b34801561039f57600080fd5b506102966103ae366004611e84565b6108b1565b3480156103bf57600080fd5b5061030a7f0000000000000000000000000543fb1b4472ff8703cea2aa4a16386b1317683781565b3480156103f357600080fd5b50610296610402366004611eb0565b6001600160a01b031660009081526010602052604090205460ff1690565b34801561042c57600080fd5b5061044061043b366004611f0e565b6108e7565b005b34801561044e57600080fd5b50610333600d5481565b34801561046457600080fd5b50600a546102969060ff1681565b34801561047e57600080fd5b5061033361048d366004611eb0565b6001600160a01b031660009081526020819052604090205490565b3480156104b457600080fd5b506104406109dc565b3480156104c957600080fd5b506104406104d8366004611f0e565b610a50565b3480156104e957600080fd5b50610440610ae2565b3480156104fe57600080fd5b5061044061050d366004611f37565b610b1a565b34801561051e57600080fd5b5060065461030a906001600160a01b031681565b34801561053e57600080fd5b50610333600c5481565b34801561055457600080fd5b506005546001600160a01b031661030a565b34801561057257600080fd5b50610333600e5481565b34801561058857600080fd5b50610440610597366004611f6c565b610b6f565b3480156105a857600080fd5b50610260610bac565b3480156105bd57600080fd5b506104406105cc366004611f37565b610bbb565b3480156105dd57600080fd5b506102966105ec366004611e84565b610c9b565b3480156105fd57600080fd5b5061029661060c366004611e84565b610cea565b34801561061d57600080fd5b5061044061062c366004611eb0565b610cf7565b34801561063d57600080fd5b5061029661064c366004611eb0565b60126020526000908152604090205460ff1681565b34801561066d57600080fd5b5061044061067c366004611f37565b610d7e565b34801561068d57600080fd5b5061044061069c366004611f0e565b610e07565b3480156106ad57600080fd5b5061033360075481565b3480156106c357600080fd5b506102966106d2366004611f0e565b610eee565b3480156106e357600080fd5b50610333600b5481565b3480156106f957600080fd5b50610333610708366004611f87565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561073f57600080fd5b5061033360085481565b34801561075557600080fd5b50610440610764366004611f0e565b611045565b34801561077557600080fd5b50610440610784366004611eb0565b6110d5565b34801561079557600080fd5b5061033360095481565b6060600380546107ae90611fc0565b80601f01602080910402602001604051908101604052809291908181526020018280546107da90611fc0565b80156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b5050505050905090565b600061083e338484611226565b5060015b92915050565b600061085584848461134b565b6108a784336108a285604051806060016040528060288152602001612209602891396001600160a01b038a166000908152600160209081526040808320338452909152902054919061186a565b611226565b5060019392505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161083e9185906108a290866111c0565b6005546001600160a01b0316331461091a5760405162461bcd60e51b815260040161091190611ffb565b60405180910390fd5b670de0b6b3a7640000606461092e60025490565b610939906002612046565b6109439190612065565b61094d9190612065565b8110156109b25760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526c6c6f776572207468616e20322560981b6064820152608401610911565b6109c481670de0b6b3a7640000612046565b6109d690670de0b6b3a7640000612087565b60075550565b6005546001600160a01b03163314610a065760405162461bcd60e51b815260040161091190611ffb565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610a7a5760405162461bcd60e51b815260040161091190611ffb565b600c819055600b819055600f811115610adf5760405162461bcd60e51b815260206004820152602160248201527f4d757374206b65657020627579206665657320617420313525206f72206c65736044820152607360f81b6064820152608401610911565b50565b6005546001600160a01b03163314610b0c5760405162461bcd60e51b815260040161091190611ffb565b600254600755600254600955565b6005546001600160a01b03163314610b445760405162461bcd60e51b815260040161091190611ffb565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610b995760405162461bcd60e51b815260040161091190611ffb565b600a805460ff1916911515919091179055565b6060600480546107ae90611fc0565b6005546001600160a01b03163314610be55760405162461bcd60e51b815260040161091190611ffb565b7f0000000000000000000000000543fb1b4472ff8703cea2aa4a16386b131768376001600160a01b0316826001600160a01b03161415610c8d5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610911565b610c9782826118a4565b5050565b600061083e33846108a285604051806060016040528060258152602001612231602591393360009081526001602090815260408083206001600160a01b038d168452909152902054919061186a565b600061083e33848461134b565b6005546001600160a01b03163314610d215760405162461bcd60e51b815260040161091190611ffb565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610da85760405162461bcd60e51b815260040161091190611ffb565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610e315760405162461bcd60e51b815260040161091190611ffb565b670de0b6b3a76400006064610e4560025490565b610e50906003612046565b610e5a9190612065565b610e649190612065565b811015610ec45760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c6574416d6f756e74206c6f776572604482015267207468616e20332560c01b6064820152608401610911565b610ed681670de0b6b3a7640000612046565b610ee890670de0b6b3a7640000612087565b60095550565b6005546000906001600160a01b03163314610f1b5760405162461bcd60e51b815260040161091190611ffb565b620186a0610f2860025490565b610f33906001612046565b610f3d9190612065565b821015610faa5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610911565b6103e8610fb660025490565b610fc1906005612046565b610fcb9190612065565b8211156110375760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610911565b50600881905560015b919050565b6005546001600160a01b0316331461106f5760405162461bcd60e51b815260040161091190611ffb565b600e819055600d8190556019811115610adf5760405162461bcd60e51b815260206004820152602260248201527f4d757374206b6565702073656c6c206665657320617420323525206f72206c65604482015261737360f01b6064820152608401610911565b6005546001600160a01b031633146110ff5760405162461bcd60e51b815260040161091190611ffb565b6001600160a01b0381166111645760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610911565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000806111cd8385612087565b90508381101561121f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610911565b9392505050565b6001600160a01b0383166112885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610911565b6001600160a01b0382166112e95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610911565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113715760405162461bcd60e51b81526004016109119061209f565b6001600160a01b0382166113975760405162461bcd60e51b8152600401610911906120e4565b806113ad576113a8838360006118f8565b505050565b6005546001600160a01b038481169116148015906113d957506005546001600160a01b03838116911614155b80156113ed57506001600160a01b03821615155b801561140457506001600160a01b03821661dead14155b801561141a5750600554600160a01b900460ff16155b156115fb576001600160a01b03831660009081526012602052604090205460ff16801561146057506001600160a01b03821660009081526011602052604090205460ff16155b15611544576007548111156114d55760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610911565b6009546001600160a01b0383166000908152602081905260409020546114fb9083612087565b111561153f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610911565b6115fb565b6001600160a01b03821660009081526012602052604090205460ff16801561158557506001600160a01b03831660009081526011602052604090205460ff16155b156115fb576007548111156115fb5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610911565b30600090815260208190526040902054600854811080159081906116215750600a5460ff165b80156116375750600554600160a01b900460ff16155b801561165c57506001600160a01b03851660009081526012602052604090205460ff16155b801561168157506001600160a01b03851660009081526010602052604090205460ff16155b80156116a657506001600160a01b03841660009081526010602052604090205460ff16155b156116d4576005805460ff60a01b1916600160a01b1790556116c6611a01565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526010602052604090205460ff600160a01b90920482161591168061172257506001600160a01b03851660009081526010602052604090205460ff165b1561172b575060005b60008115611856576001600160a01b03861660009081526012602052604090205460ff16801561175d57506000600d54115b156117bb57611782606461177c600d5488611b1a90919063ffffffff16565b90611b99565b9050600d54600e54826117959190612046565b61179f9190612065565b600f60008282546117b09190612087565b909155506118389050565b6001600160a01b03871660009081526012602052604090205460ff1680156117e557506000600b54115b1561183857611804606461177c600b5488611b1a90919063ffffffff16565b9050600b54600c54826118179190612046565b6118219190612065565b600f60008282546118329190612087565b90915550505b8015611849576118498730836118f8565b6118538186612127565b94505b6118618787876118f8565b50505050505050565b6000818484111561188e5760405162461bcd60e51b81526004016109119190611e1a565b50600061189b8486612127565b95945050505050565b6001600160a01b038216600081815260126020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661191e5760405162461bcd60e51b81526004016109119061209f565b6001600160a01b0382166119445760405162461bcd60e51b8152600401610911906120e4565b611981816040518060600160405280602681526020016121e3602691396001600160a01b038616600090815260208190526040902054919061186a565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546119b090826111c0565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161133e565b30600090815260208190526040902054600f54811580611a1f575080155b15611a28575050565b8147611a3382611bdb565b6000611a3f4783611daa565b90506000611a5c8561177c600f5485611b1a90919063ffffffff16565b6000600f81905560065460405192935090916001600160a01b039091169083908381818185875af1925050503d8060008114611ab4576040519150601f19603f3d011682016040523d82523d6000602084013e611ab9565b606091505b50506006546040519192506001600160a01b0316904790600081818185875af1925050503d8060008114611b09576040519150601f19603f3d011682016040523d82523d6000602084013e611b0e565b606091505b50505050505050505050565b600082611b2957506000610842565b6000611b358385612046565b905082611b428583612065565b1461121f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610911565b600061121f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611dec565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c1057611c1061213e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8957600080fd5b505afa158015611c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc19190612154565b81600181518110611cd457611cd461213e565b60200260200101906001600160a01b031690816001600160a01b031681525050611d1f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611226565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611d74908590600090869030904290600401612171565b600060405180830381600087803b158015611d8e57600080fd5b505af1158015611da2573d6000803e3d6000fd5b505050505050565b600061121f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061186a565b60008183611e0d5760405162461bcd60e51b81526004016109119190611e1a565b50600061189b8486612065565b600060208083528351808285015260005b81811015611e4757858101830151858201604001528201611e2b565b81811115611e59576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610adf57600080fd5b60008060408385031215611e9757600080fd5b8235611ea281611e6f565b946020939093013593505050565b600060208284031215611ec257600080fd5b813561121f81611e6f565b600080600060608486031215611ee257600080fd5b8335611eed81611e6f565b92506020840135611efd81611e6f565b929592945050506040919091013590565b600060208284031215611f2057600080fd5b5035919050565b8035801515811461104057600080fd5b60008060408385031215611f4a57600080fd5b8235611f5581611e6f565b9150611f6360208401611f27565b90509250929050565b600060208284031215611f7e57600080fd5b61121f82611f27565b60008060408385031215611f9a57600080fd5b8235611fa581611e6f565b91506020830135611fb581611e6f565b809150509250929050565b600181811c90821680611fd457607f821691505b60208210811415611ff557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561206057612060612030565b500290565b60008261208257634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561209a5761209a612030565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008282101561213957612139612030565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561216657600080fd5b815161121f81611e6f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121c15784516001600160a01b03168352938301939183019160010161219c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220210bc2958a117925e3e3d2760a0f3406032f487938f61ffe59c18fc4a8e429a564736f6c63430008090033

Deployed Bytecode Sourcemap

15080:8307:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5262:154;;;;;;;;;;-1:-1:-1;5262:154:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;5262:154:0;1072:187:1;15694:64:0;;;;;;;;;;-1:-1:-1;15694:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15151:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1707:32:1;;;1689:51;;1677:2;1662:18;15151:51:0;1516:230:1;4721:99:0;;;;;;;;;;-1:-1:-1;4803:12:0;;4721:99;;;1897:25:1;;;1885:2;1870:18;4721:99:0;1751:177:1;15598:33:0;;;;;;;;;;;;;;;;5421:313;;;;;;;;;;-1:-1:-1;5421:313:0;;;;;:::i;:::-;;:::i;4632:84::-;;;;;;;;;;-1:-1:-1;4632:84:0;;4709:2;2536:36:1;;2524:2;2509:18;4632:84:0;2394:184:1;5739:203:0;;;;;;;;;;-1:-1:-1;5739:203:0;;;;;:::i;:::-;;:::i;15208:38::-;;;;;;;;;;;;;;;20140:116;;;;;;;;;;-1:-1:-1;20140:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;20223:28:0;20205:4;20223:28;;;:19;:28;;;;;;;;;20140:116;18112:227;;;;;;;;;;-1:-1:-1;18112:227:0;;;;;:::i;:::-;;:::i;:::-;;15528:28;;;;;;;;;;;;;;;;15424:30;;;;;;;;;;-1:-1:-1;15424:30:0;;;;;;;;4825:118;;;;;;;;;;-1:-1:-1;4825:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;4920:18:0;4899:7;4920:18;;;;;;;;;;;;4825:118;9295:133;;;;;;;;;;;;;:::i;18926:210::-;;;;;;;;;;-1:-1:-1;18926:210:0;;;;;:::i;:::-;;:::i;18564:119::-;;;;;;;;;;;;;:::i;18689:135::-;;;;;;;;;;-1:-1:-1;18689:135:0;;;;;:::i;:::-;;:::i;15279:30::-;;;;;;;;;;-1:-1:-1;15279:30:0;;;;-1:-1:-1;;;;;15279:30:0;;;15491;;;;;;;;;;;;;;;;9111:70;;;;;;;;;;-1:-1:-1;9170:6:0;;-1:-1:-1;;;;;9170:6:0;9111:70;;15560:31;;;;;;;;;;;;;;;;18829:92;;;;;;;;;;-1:-1:-1;18829:92:0;;;;;:::i;:::-;;:::i;4532:95::-;;;;;;;;;;;;;:::i;19534:227::-;;;;;;;;;;-1:-1:-1;19534:227:0;;;;;:::i;:::-;;:::i;5947:256::-;;;;;;;;;;-1:-1:-1;5947:256:0;;;;;:::i;:::-;;:::i;4948:160::-;;;;;;;;;;-1:-1:-1;4948:160:0;;;;;:::i;:::-;;:::i;19942:193::-;;;;;;;;;;-1:-1:-1;19942:193:0;;;;;:::i;:::-;;:::i;15764:58::-;;;;;;;;;;-1:-1:-1;15764:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19362:167;;;;;;;;;;-1:-1:-1;19362:167:0;;;;;:::i;:::-;;:::i;18345:214::-;;;;;;;;;;-1:-1:-1;18345:214:0;;;;;:::i;:::-;;:::i;15316:35::-;;;;;;;;;;;;;;;;17746:360;;;;;;;;;;-1:-1:-1;17746:360:0;;;;;:::i;:::-;;:::i;15460:27::-;;;;;;;;;;;;;;;;5115:142;;;;;;;;;;-1:-1:-1;5115:142:0;;;;;:::i;:::-;-1:-1:-1;;;;;5225:18:0;;;5204:7;5225:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5115:142;15355:33;;;;;;;;;;;;;;;;19141:216;;;;;;;;;;-1:-1:-1;19141:216:0;;;;;:::i;:::-;;:::i;9431:223::-;;;;;;;;;;-1:-1:-1;9431:223:0;;;;;:::i;:::-;;:::i;15394:24::-;;;;;;;;;;;;;;;;4436:91;4490:13;4517:5;4510:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:91;:::o;5262:154::-;5345:4;5356:39;277:10;5379:7;5388:6;5356:8;:39::i;:::-;-1:-1:-1;5407:4:0;5262:154;;;;;:::o;5421:313::-;5540:4;5551:36;5561:6;5569:9;5580:6;5551:9;:36::i;:::-;5592:121;5601:6;277:10;5623:89;5661:6;5623:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5623:19:0;;;;;;:11;:19;;;;;;;;277:10;5623:33;;;;;;;;;;:37;:89::i;:::-;5592:8;:121::i;:::-;-1:-1:-1;5725:4:0;5421:313;;;;;:::o;5739:203::-;277:10;5827:4;5870:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5870:34:0;;;;;;;;;;5827:4;;5838:83;;5861:7;;5870:50;;5909:10;5870:38;:50::i;18112:227::-;9220:6;;-1:-1:-1;;;;;9220:6:0;277:10;9220:22;9212:67;;;;-1:-1:-1;;;9212:67:0;;;;;;;:::i;:::-;;;;;;;;;18223:4:::1;18218:3;18198:13;4803:12:::0;;;4721:99;18198:13:::1;:17;::::0;18214:1:::1;18198:17;:::i;:::-;:23;;;;:::i;:::-;18197:30;;;;:::i;:::-;18187:6;:40;;18179:98;;;::::0;-1:-1:-1;;;18179:98:0;;5514:2:1;18179:98:0::1;::::0;::::1;5496:21:1::0;5553:2;5533:18;;;5526:30;5592:34;5572:18;;;5565:62;-1:-1:-1;;;5643:18:1;;;5636:43;5696:19;;18179:98:0::1;5312:409:1::0;18179:98:0::1;18306:13;:6:::0;18315:4:::1;18306:13;:::i;:::-;18305:28;::::0;18324:8:::1;18305:28;:::i;:::-;18282:20;:51:::0;-1:-1:-1;18112:227:0:o;9295:133::-;9220:6;;-1:-1:-1;;;;;9220:6:0;277:10;9220:22;9212:67;;;;-1:-1:-1;;;9212:67:0;;;;;;;:::i;:::-;9380:6:::1;::::0;9359:40:::1;::::0;9396:1:::1;::::0;-1:-1:-1;;;;;9380:6:0::1;::::0;9359:40:::1;::::0;9396:1;;9359:40:::1;9404:6;:19:::0;;-1:-1:-1;;;;;;9404:19:0::1;::::0;;9295:133::o;18926:210::-;9220:6;;-1:-1:-1;;;;;9220:6:0;277:10;9220:22;9212:67;;;;-1:-1:-1;;;9212:67:0;;;;;;;:::i;:::-;18996:15:::1;:31:::0;;;19032:12:::1;:30:::0;;;19091:2:::1;19075:18:::0;::::1;;19067:64;;;::::0;-1:-1:-1;;;19067:64:0;;6061:2:1;19067:64:0::1;::::0;::::1;6043:21:1::0;6100:2;6080:18;;;6073:30;6139:34;6119:18;;;6112:62;-1:-1:-1;;;6190:18:1;;;6183:31;6231:19;;19067:64:0::1;5859:397:1::0;19067:64:0::1;18926:210:::0;:::o;18564:119::-;9220:6;;-1:-1:-1;;;;;9220:6:0;277:10;9220:22;9212:67;;;;-1:-1:-1;;;9212:67:0;;;;;;;:::i;:::-;4803:12;;18612:20:::1;:36:::0;4803:12;;18653:9:::1;:25:::0;18564:119::o;18689:135::-;9220:6;;-1:-1:-1;;;;;9220:6:0;277:10;9220:22;9212:67;;;;-1:-1:-1;;;9212:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18773:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;18773:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18689:135::o;18829:92::-;9220:6;;-1:-1:-1;;;;;9220:6:0;277:10;9220:22;9212:67;;;;-1:-1:-1;;;9212:67:0;;;;;;;:::i;:::-;18895:11:::1;:21:::0;;-1:-1:-1;;18895:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18829:92::o;4532:95::-;4588:13;4615:7;4608:14;;;;;:::i;19534:227::-;9220:6;;-1:-1:-1;;;;;9220:6:0;277:10;9220:22;9212:67;;;;-1:-1:-1;;;9212:67:0;;;;;;;:::i;:::-;19635:13:::1;-1:-1:-1::0;;;;;19627:21:0::1;:4;-1:-1:-1::0;;;;;19627:21:0::1;;;19619:91;;;::::0;-1:-1:-1;;;19619:91:0;;6463:2:1;19619:91:0::1;::::0;::::1;6445:21:1::0;6502:2;6482:18;;;6475:30;6541:34;6521:18;;;6514:62;6612:27;6592:18;;;6585:55;6657:19;;19619:91:0::1;6261:421:1::0;19619:91:0::1;19715:41;19744:4;19750:5;19715:28;:41::i;:::-;19534:227:::0;;:::o;5947:256::-;6040:4;6051:129;277:10;6074:7;6083:96;6122:15;6083:96;;;;;;;;;;;;;;;;;277:10;6083:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6083:34:0;;;;;;;;;;;;:38;:96::i;4948:160::-;5034:4;5045:42;277:10;5069:9;5080:6;5045:9;:42::i;19942:193::-;9220:6;;-1:-1:-1;;;;;9220:6:0;277:10;9220:22;9212:67;;;;-1:-1:-1;;;9212:67:0;;;;;;;:::i;:::-;20073:15:::1;::::0;20030:59:::1;::::0;-1:-1:-1;;;;;20073:15:0;;::::1;::::0;20030:59;::::1;::::0;::::1;::::0;20073:15:::1;::::0;20030:59:::1;20094:15;:36:::0;;-1:-1:-1;;;;;;20094:36:0::1;-1:-1:-1::0;;;;;20094:36:0;;;::::1;::::0;;;::::1;::::0;;19942:193::o;19362:167::-;9220:6;;-1:-1:-1;;;;;9220:6:0;277:10;9220:22;9212:67;;;;-1:-1:-1;;;9212:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19441:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;19441:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19490:34;;1212:41:1;;;19490:34:0::1;::::0;1185:18:1;19490:34:0::1;;;;;;;19362:167:::0;;:::o;18345:214::-;9220:6;;-1:-1:-1;;;;;9220:6:0;277:10;9220:22;9212:67;;;;-1:-1:-1;;;9212:67:0;;;;;;;:::i;:::-;18460:4:::1;18455:3;18435:13;4803:12:::0;;;4721:99;18435:13:::1;:17;::::0;18451:1:::1;18435:17;:::i;:::-;:23;;;;:::i;:::-;18434:30;;;;:::i;:::-;18424:6;:40;;18416:93;;;::::0;-1:-1:-1;;;18416:93:0;;6889:2:1;18416:93:0::1;::::0;::::1;6871:21:1::0;6928:2;6908:18;;;6901:30;6967:34;6947:18;;;6940:62;-1:-1:-1;;;7018:18:1;;;7011:38;7066:19;;18416:93:0::1;6687:404:1::0;18416:93:0::1;18527:13;:6:::0;18536:4:::1;18527:13;:::i;:::-;18526:28;::::0;18545:8:::1;18526:28;:::i;:::-;18514:9;:40:::0;-1:-1:-1;18345:214:0:o;17746:360::-;9220:6;;17827:4;;-1:-1:-1;;;;;9220:6:0;277:10;9220:22;9212:67;;;;-1:-1:-1;;;9212:67:0;;;;;;;:::i;:::-;17878:6:::1;17858:13;4803:12:::0;;;4721:99;17858:13:::1;:17;::::0;17874:1:::1;17858:17;:::i;:::-;:26;;;;:::i;:::-;17845:9;:39;;17837:105;;;::::0;-1:-1:-1;;;17837:105:0;;7298:2:1;17837:105:0::1;::::0;::::1;7280:21:1::0;7337:2;7317:18;;;7310:30;7376:34;7356:18;;;7349:62;-1:-1:-1;;;7427:18:1;;;7420:51;7488:19;;17837:105:0::1;7096:417:1::0;17837:105:0::1;17988:4;17968:13;4803:12:::0;;;4721:99;17968:13:::1;:17;::::0;17984:1:::1;17968:17;:::i;:::-;:24;;;;:::i;:::-;17955:9;:37;;17947:102;;;::::0;-1:-1:-1;;;17947:102:0;;7720:2:1;17947:102:0::1;::::0;::::1;7702:21:1::0;7759:2;7739:18;;;7732:30;7798:34;7778:18;;;7771:62;-1:-1:-1;;;7849:18:1;;;7842:50;7909:19;;17947:102:0::1;7518:416:1::0;17947:102:0::1;-1:-1:-1::0;18054:18:0::1;:30:::0;;;18096:4:::1;9284:1;17746:360:::0;;;:::o;19141:216::-;9220:6;;-1:-1:-1;;;;;9220:6:0;277:10;9220:22;9212:67;;;;-1:-1:-1;;;9212:67:0;;;;;;;:::i;:::-;19212:16:::1;:32:::0;;;19249:13:::1;:32:::0;;;19311:2:::1;19294:19:::0;::::1;;19286:66;;;::::0;-1:-1:-1;;;19286:66:0;;8141:2:1;19286:66:0::1;::::0;::::1;8123:21:1::0;8180:2;8160:18;;;8153:30;8219:34;8199:18;;;8192:62;-1:-1:-1;;;8270:18:1;;;8263:32;8312:19;;19286:66:0::1;7939:398:1::0;9431:223:0;9220:6;;-1:-1:-1;;;;;9220:6:0;277:10;9220:22;9212:67;;;;-1:-1:-1;;;9212:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9514:22:0;::::1;9506:73;;;::::0;-1:-1:-1;;;9506:73:0;;8544:2:1;9506:73:0::1;::::0;::::1;8526:21:1::0;8583:2;8563:18;;;8556:30;8622:34;8602:18;;;8595:62;-1:-1:-1;;;8673:18:1;;;8666:36;8719:19;;9506:73:0::1;8342:402:1::0;9506:73:0::1;9610:6;::::0;9589:38:::1;::::0;-1:-1:-1;;;;;9589:38:0;;::::1;::::0;9610:6:::1;::::0;9589:38:::1;::::0;9610:6:::1;::::0;9589:38:::1;9632:6;:17:::0;;-1:-1:-1;;;;;;9632:17:0::1;-1:-1:-1::0;;;;;9632:17:0;;;::::1;::::0;;;::::1;::::0;;9431:223::o;7553:160::-;7611:7;;7637:5;7641:1;7637;:5;:::i;:::-;7625:17;;7660:1;7655;:6;;7647:46;;;;-1:-1:-1;;;7647:46:0;;8951:2:1;7647:46:0;;;8933:21:1;8990:2;8970:18;;;8963:30;9029:29;9009:18;;;9002:57;9076:18;;7647:46:0;8749:351:1;7647:46:0;7707:1;7553:160;-1:-1:-1;;;7553:160:0:o;7077:334::-;-1:-1:-1;;;;;7188:19:0;;7180:68;;;;-1:-1:-1;;;7180:68:0;;9307:2:1;7180:68:0;;;9289:21:1;9346:2;9326:18;;;9319:30;9385:34;9365:18;;;9358:62;-1:-1:-1;;;9436:18:1;;;9429:34;9480:19;;7180:68:0;9105:400:1;7180:68:0;-1:-1:-1;;;;;7261:21:0;;7253:68;;;;-1:-1:-1;;;7253:68:0;;9712:2:1;7253:68:0;;;9694:21:1;9751:2;9731:18;;;9724:30;9790:34;9770:18;;;9763:62;-1:-1:-1;;;9841:18:1;;;9834:32;9883:19;;7253:68:0;9510:398:1;7253:68:0;-1:-1:-1;;;;;7328:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7374:32;;1897:25:1;;;7374:32:0;;1870:18:1;7374:32:0;;;;;;;;7077:334;;;:::o;20261:2017::-;-1:-1:-1;;;;;20366:18:0;;20358:68;;;;-1:-1:-1;;;20358:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20439:16:0;;20431:64;;;;-1:-1:-1;;;20431:64:0;;;;;;;:::i;:::-;20507:11;20504:68;;20526:28;20542:4;20548:2;20552:1;20526:15;:28::i;:::-;20261:2017;;;:::o;20504:68::-;9170:6;;-1:-1:-1;;;;;20587:15:0;;;9170:6;;20587:15;;;;:39;;-1:-1:-1;9170:6:0;;-1:-1:-1;;;;;20613:13:0;;;9170:6;;20613:13;;20587:39;:64;;;;-1:-1:-1;;;;;;20635:16:0;;;;20587:64;:94;;;;-1:-1:-1;;;;;;20660:21:0;;20674:6;20660:21;;20587:94;:112;;;;-1:-1:-1;20691:8:0;;-1:-1:-1;;;20691:8:0;;;;20690:9;20587:112;20577:665;;;-1:-1:-1;;;;;20740:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;20776:35:0;;;;;;:31;:35;;;;;;;;20775:36;20740:71;20736:500;;;20840:20;;20830:6;:30;;20822:96;;;;-1:-1:-1;;;20822:96:0;;10925:2:1;20822:96:0;;;10907:21:1;10964:2;10944:18;;;10937:30;11003:34;10983:18;;;10976:62;-1:-1:-1;;;11054:18:1;;;11047:51;11115:19;;20822:96:0;10723:417:1;20822:96:0;20961:9;;-1:-1:-1;;;;;4920:18:0;;4899:7;4920:18;;;;;;;;;;;20935:22;;:6;:22;:::i;:::-;:35;;20927:67;;;;-1:-1:-1;;;20927:67:0;;11347:2:1;20927:67:0;;;11329:21:1;11386:2;11366:18;;;11359:30;-1:-1:-1;;;11405:18:1;;;11398:49;11464:18;;20927:67:0;11145:343:1;20927:67:0;20736:500;;;-1:-1:-1;;;;;21049:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;21083:37:0;;;;;;:31;:37;;;;;;;;21082:38;21049:71;21045:191;;;21149:20;;21139:6;:30;;21131:97;;;;-1:-1:-1;;;21131:97:0;;11695:2:1;21131:97:0;;;11677:21:1;11734:2;11714:18;;;11707:30;11773:34;11753:18;;;11746:62;-1:-1:-1;;;11824:18:1;;;11817:52;11886:19;;21131:97:0;11493:418:1;21131:97:0;21295:4;21246:28;4920:18;;;;;;;;;;;21345;;21321:42;;;;;;;21379:26;;-1:-1:-1;21394:11:0;;;;21379:26;:43;;;;-1:-1:-1;21414:8:0;;-1:-1:-1;;;21414:8:0;;;;21413:9;21379:43;:83;;;;-1:-1:-1;;;;;;21431:31:0;;;;;;:25;:31;;;;;;;;21430:32;21379:83;:117;;;;-1:-1:-1;;;;;;21471:25:0;;;;;;:19;:25;;;;;;;;21470:26;21379:117;:149;;;;-1:-1:-1;;;;;;21505:23:0;;;;;;:19;:23;;;;;;;;21504:24;21379:149;21370:230;;;21540:8;:15;;-1:-1:-1;;;;21540:15:0;-1:-1:-1;;;21540:15:0;;;21562:10;:8;:10::i;:::-;21578:8;:16;;-1:-1:-1;;;;21578:16:0;;;21370:230;21620:8;;-1:-1:-1;;;;;21640:25:0;;21604:12;21640:25;;;:19;:25;;;;;;21620:8;-1:-1:-1;;;21620:8:0;;;;;21619:9;;21640:25;;:52;;-1:-1:-1;;;;;;21669:23:0;;;;;;:19;:23;;;;;;;;21640:52;21637:84;;;-1:-1:-1;21710:5:0;21637:84;21725:12;21749:7;21746:490;;;-1:-1:-1;;;;;21767:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;21816:1;21800:13;;:17;21767:50;21763:364;;;21832:34;21862:3;21832:25;21843:13;;21832:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;21825:41;;21921:13;;21902:16;;21895:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;21873:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;21763:364:0;;-1:-1:-1;21763:364:0;;-1:-1:-1;;;;;21954:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;22004:1;21989:12;;:16;21954:51;21951:176;;;22021:33;22050:3;22021:24;22032:12;;22021:6;:10;;:24;;;;:::i;:33::-;22014:40;;22108:12;;22090:15;;22083:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;22061:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;21951:176:0;22140:8;;22137:74;;22160:44;22176:4;22190;22198;22160:15;:44::i;:::-;22216:14;22226:4;22216:14;;:::i;:::-;;;21746:490;22240:33;22256:4;22262:2;22266:6;22240:15;:33::i;:::-;20353:1925;;;;20261:2017;;;:::o;7852:173::-;7938:7;7968:12;7960:6;;;;7952:29;;;;-1:-1:-1;;;7952:29:0;;;;;;;;:::i;:::-;-1:-1:-1;7986:9:0;7998:5;8002:1;7998;:5;:::i;:::-;7986:17;7852:173;-1:-1:-1;;;;;7852:173:0:o;19766:171::-;-1:-1:-1;;;;;19843:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;19843:39:0;;;;;;;;;;19892:40;;19843:39;;:31;19892:40;;;19766:171;;:::o;6208:512::-;-1:-1:-1;;;;;6324:20:0;;6316:70;;;;-1:-1:-1;;;6316:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6399:23:0;;6391:71;;;;-1:-1:-1;;;6391:71:0;;;;;;;:::i;:::-;6539;6561:6;6539:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6539:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;6519:17:0;;;:9;:17;;;;;;;;;;;:91;;;;6638:20;;;;;;;:32;;6663:6;6638:24;:32::i;:::-;-1:-1:-1;;;;;6615:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;6680:35;1897:25:1;;;6615:20:0;;6680:35;;;;;;1870:18:1;6680:35:0;1751:177:1;22677:704:0;22754:4;22710:23;4920:18;;;;;;;;;;;22793;;22823:20;;;:46;;-1:-1:-1;22847:22:0;;22823:46;22820:60;;;22872:7;;22677:704::o;22820:60::-;22913:15;22961:21;22987:36;22913:15;22987:16;:36::i;:::-;23029:18;23050:44;:21;23076:17;23050:25;:44::i;:::-;23029:65;;23099:23;23125:57;23164:17;23125:34;23140:18;;23125:10;:14;;:34;;;;:::i;:57::-;23210:1;23189:18;:22;;;23246:15;;23238:57;;23099:83;;-1:-1:-1;23210:1:0;;-1:-1:-1;;;;;23246:15:0;;;;23099:83;;23210:1;23238:57;23210:1;23238:57;23099:83;23246:15;23238:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23321:15:0;;23313:63;;23220:75;;-1:-1:-1;;;;;;23321:15:0;;23350:21;;23313:63;;;;23350:21;23321:15;23313:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;22677:704:0:o;8030:206::-;8088:7;8106:6;8102:32;;-1:-1:-1;8127:1:0;8120:8;;8102:32;8138:9;8150:5;8154:1;8150;:5;:::i;:::-;8138:17;-1:-1:-1;8177:1:0;8168:5;8172:1;8138:17;8168:5;:::i;:::-;:10;8160:56;;;;-1:-1:-1;;;8160:56:0;;12458:2:1;8160:56:0;;;12440:21:1;12497:2;12477:18;;;12470:30;12536:34;12516:18;;;12509:62;-1:-1:-1;;;12587:18:1;;;12580:31;12628:19;;8160:56:0;12256:397:1;8241:123:0;8299:7;8320:39;8324:1;8327;8320:39;;;;;;;;;;;;;;;;;:3;:39::i;22283:389::-;22367:16;;;22381:1;22367:16;;;;;;;;22343:21;;22367:16;;;;;;;;;;-1:-1:-1;22367:16:0;22343:40;;22406:4;22388;22393:1;22388:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;22388:23:0;;;-1:-1:-1;;;;;22388:23:0;;;;;22428:15;-1:-1:-1;;;;;22428:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22418:4;22423:1;22418:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;22418:32:0;;;-1:-1:-1;;;;;22418:32:0;;;;;22455:62;22472:4;22487:15;22505:11;22455:8;:62::i;:::-;22522:145;;-1:-1:-1;;;22522:145:0;;-1:-1:-1;;;;;22522:15:0;:66;;;;:145;;22594:11;;22611:1;;22618:4;;22636;;22647:15;;22522:145;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22338:334;22283:389;:::o;7718:127::-;7776:7;7797:43;7801:1;7804;7797:43;;;;;;;;;;;;;;;;;:3;:43::i;8369:168::-;8455:7;8484:12;8477:5;8469:28;;;;-1:-1:-1;;;8469:28:0;;;;;;;;:::i;:::-;-1:-1:-1;8502:9:0;8514:5;8518:1;8514;:5;:::i;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:456::-;2010:6;2018;2026;2079:2;2067:9;2058:7;2054:23;2050:32;2047:52;;;2095:1;2092;2085:12;2047:52;2134:9;2121:23;2153:31;2178:5;2153:31;:::i;:::-;2203:5;-1:-1:-1;2260:2:1;2245:18;;2232:32;2273:33;2232:32;2273:33;:::i;:::-;1933:456;;2325:7;;-1:-1:-1;;;2379:2:1;2364:18;;;;2351:32;;1933:456::o;2791:180::-;2850:6;2903:2;2891:9;2882:7;2878:23;2874:32;2871:52;;;2919:1;2916;2909:12;2871:52;-1:-1:-1;2942:23:1;;2791:180;-1:-1:-1;2791:180:1: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:388::-;3714:6;3722;3775:2;3763:9;3754:7;3750:23;3746:32;3743:52;;;3791:1;3788;3781:12;3743:52;3830:9;3817:23;3849:31;3874:5;3849:31;:::i;:::-;3899:5;-1:-1:-1;3956:2:1;3941:18;;3928:32;3969:33;3928:32;3969:33;:::i;:::-;4021:7;4011:17;;;3646:388;;;;;:::o;4039:380::-;4118:1;4114:12;;;;4161;;;4182:61;;4236:4;4228:6;4224:17;4214:27;;4182:61;4289:2;4281:6;4278:14;4258:18;4255:38;4252:161;;;4335:10;4330:3;4326:20;4323:1;4316:31;4370:4;4367:1;4360:15;4398:4;4395:1;4388:15;4252:161;;4039:380;;;:::o;4424:356::-;4626:2;4608:21;;;4645:18;;;4638:30;4704:34;4699:2;4684:18;;4677:62;4771:2;4756:18;;4424:356::o;4785:127::-;4846:10;4841:3;4837:20;4834:1;4827:31;4877:4;4874:1;4867:15;4901:4;4898:1;4891:15;4917:168;4957:7;5023:1;5019;5015:6;5011:14;5008:1;5005:21;5000:1;4993:9;4986:17;4982:45;4979:71;;;5030:18;;:::i;:::-;-1:-1:-1;5070:9:1;;4917:168::o;5090:217::-;5130:1;5156;5146:132;;5200:10;5195:3;5191:20;5188:1;5181:31;5235:4;5232:1;5225:15;5263:4;5260:1;5253:15;5146:132;-1:-1:-1;5292:9:1;;5090:217::o;5726:128::-;5766:3;5797:1;5793:6;5790:1;5787:13;5784:39;;;5803:18;;:::i;:::-;-1:-1:-1;5839:9:1;;5726:128::o;9913:401::-;10115:2;10097:21;;;10154:2;10134:18;;;10127:30;10193:34;10188:2;10173:18;;10166:62;-1:-1:-1;;;10259:2:1;10244:18;;10237:35;10304:3;10289:19;;9913:401::o;10319:399::-;10521:2;10503:21;;;10560:2;10540:18;;;10533:30;10599:34;10594:2;10579:18;;10572:62;-1:-1:-1;;;10665:2:1;10650:18;;10643:33;10708:3;10693:19;;10319:399::o;11916:125::-;11956:4;11984:1;11981;11978:8;11975:34;;;11989:18;;:::i;:::-;-1:-1:-1;12026:9:1;;11916:125::o;12790:127::-;12851:10;12846:3;12842:20;12839:1;12832:31;12882:4;12879:1;12872:15;12906:4;12903:1;12896:15;12922:251;12992:6;13045:2;13033:9;13024:7;13020:23;13016:32;13013:52;;;13061:1;13058;13051:12;13013:52;13093:9;13087:16;13112:31;13137:5;13112:31;:::i;13178:980::-;13440:4;13488:3;13477:9;13473:19;13519:6;13508:9;13501:25;13545:2;13583:6;13578:2;13567:9;13563:18;13556:34;13626:3;13621:2;13610:9;13606:18;13599:31;13650:6;13685;13679:13;13716:6;13708;13701:22;13754:3;13743:9;13739:19;13732:26;;13793:2;13785:6;13781:15;13767:29;;13814:1;13824:195;13838:6;13835:1;13832:13;13824:195;;;13903:13;;-1:-1:-1;;;;;13899:39:1;13887:52;;13994:15;;;;13959:12;;;;13935:1;13853:9;13824:195;;;-1:-1:-1;;;;;;;14075:32:1;;;;14070:2;14055:18;;14048:60;-1:-1:-1;;;14139:3:1;14124:19;14117:35;14036:3;13178:980;-1:-1:-1;;;13178:980:1:o

Swarm Source

ipfs://210bc2958a117925e3e3d2760a0f3406032f487938f61ffe59c18fc4a8e429a5
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.