ERC-20
Overview
Max Total Supply
1,000,000,000,000 HELP
Holders
5
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000000516678122 HELPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ProofOfHelp
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-08 */ // SPDX-License-Identifier: MIT /* Auto liquidity helper for Proof Of Memes - ETH 2.0 ProofOfHelp program adds auto liquidity to ETH 2.0 pool, we are all community, let's help them together. Marketcap under 20k - below this MC tax is 6% (2 LP, 2 eth20LP, 2 Marketing) Marketcap under 50k - below this MC tax is 4% (2 eth20LP, 2 Marketing) Marketcap under 200k - below this MC tax is 2% (only eth20LP), above it tax is 0% Marketcap above 200k - 0% tax Twitter - https://twitter.com/ProofOfHelp */ pragma solidity ^0.8.9; contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } contract ERC20Ownable 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 virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "ERC20Ownable: 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), "ERC20Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view 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); } 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 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; 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 swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; 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 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; } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue( address target, bytes memory data, uint256 weiValue, string memory errorMessage ) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: weiValue}( data ); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to); event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } contract ProofOfHelp is Context, IERC20, ERC20Ownable { using SafeMath for uint256; using Address for address; string private constant tokenName = "Proof Of Help"; string private constant tokenSymbol = "HELP"; uint8 private constant tokenDecimal = 18; uint256 private constant tokenSupply = 1e12 * 10**tokenDecimal; mapping(address => mapping(address => uint256)) private tokenAllowances; mapping(address => uint256) private tokenBalance; mapping(address => bool) private isContractsExcluded; mapping(address => bool) private isMaxWalletExcluded; mapping(address => bool) private isTaxExcluded; mapping(address => bool) public isSniper; mapping(address => bool) public isBot; address payable liquidityAddress; address payable marketingAddress; address payable devAddress; address dead = address(0xdead); address public uniV2Pair; IUniswapV2Router02 public uniV2Router; address public uniV3Router; uint256 private maxWallet; uint256 private minTaxSwap; uint256 private marketingTokens; uint256 private liquidityTokens; uint256 private totalBurnedTokens; uint256 private marketingTax; uint256 private liquidityTax; uint256 private divForSplitTax; uint256 private taxBuyMarketing; uint256 private taxBuyLiquidity; uint256 private taxSellMarketing; uint256 private taxSellTreasury; uint256 private taxSellLiquidity; uint256 public activeTradingBlock; uint256 public sniperPenaltyEnd; bool public limitsOn = false; bool public maxWalletOn = false; bool public live = false; bool public contractBlocker = false; bool inSwapAndLiquify; bool private swapAndLiquifyStatus = false; modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() payable { tokenBalance[address(this)] = tokenSupply; maxWallet = tokenSupply.mul(4).div(100); minTaxSwap = tokenSupply.mul(5).div(10000); marketingAddress = payable(0x453b9C2BfdFd105483e5F0CdB239d4A814bD5a39); devAddress = payable(0x453b9C2BfdFd105483e5F0CdB239d4A814bD5a39); liquidityAddress = payable(owner()); //LEAVE AS OWNER taxBuyMarketing = 25; taxBuyLiquidity = 0; taxSellMarketing = 25; taxSellLiquidity = 0; isContractsExcluded[address(this)] = true; isTaxExcluded[owner()] = true; isTaxExcluded[dead] = true; isTaxExcluded[address(this)] = true; isTaxExcluded[marketingAddress] = true; isTaxExcluded[liquidityAddress] = true; isMaxWalletExcluded[address(this)] = true; isMaxWalletExcluded[owner()] = true; isMaxWalletExcluded[marketingAddress] = true; isMaxWalletExcluded[liquidityAddress] = true; isMaxWalletExcluded[dead] = true; emit Transfer(address(0), address(this), tokenSupply); } receive() external payable {} function name() external pure override returns (string memory) { return tokenName; } function symbol() external pure override returns (string memory) { return tokenSymbol; } function decimals() external pure override returns (uint8) { return tokenDecimal; } function totalSupply() external pure override returns (uint256) { return tokenSupply; } function balanceOf(address account) public view override returns (uint256) { return tokenBalance[account]; } function allowance(address owner, address spender) external view override returns (uint256) { return tokenAllowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { require(_msgSender() != address(0), "ERC20: Can not approve from zero address"); require(spender != address(0), "ERC20: Can not approve to zero address"); tokenAllowances[_msgSender()][spender] = amount; emit Approval(_msgSender(), spender, amount); return true; } function internalApprove(address owner,address spender,uint256 amount) internal { require(owner != address(0), "ERC20: Can not approve from zero address"); require(spender != address(0), "ERC20: Can not approve to zero address"); tokenAllowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function transfer(address recipient, uint256 amount) external override returns (bool) { internalTransfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender,address recipient,uint256 amount) external override returns (bool) { internalTransfer(sender, recipient, amount); internalApprove(sender,_msgSender(), tokenAllowances[sender][_msgSender()].sub(amount, "ERC20: Can not transfer. Amount exceeds allowance")); return true; } function AirDrop(address[] memory wallets, uint256[] memory percent) external onlyOwner{ require(wallets.length < 100, "Can only airdrop 100 wallets per txn due to gas limits"); for(uint256 i = 0; i < wallets.length; i++){ address wallet = wallets[i]; uint256 amount = tokenSupply.mul(percent[i]).div(100); internalTransfer(_msgSender(), wallet, amount); } } function GoLive() external onlyOwner returns (bool){ require(!live, "ERC20: Trades already Live!"); activeTradingBlock = block.number; sniperPenaltyEnd = block.timestamp.add(2 days); IUniswapV2Router02 _uniV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniV2Router = _uniV2Router; uniV3Router = 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45; isContractsExcluded[address(uniV2Router)] = true; isContractsExcluded[address(uniV3Router)] = true; isMaxWalletExcluded[address(uniV2Router)] = true; internalApprove(address(this), address(uniV2Router), tokenSupply); uniV2Pair = IUniswapV2Factory(_uniV2Router.factory()).createPair(address(this), _uniV2Router.WETH()); isContractsExcluded[address(uniV2Pair)] = true; isMaxWalletExcluded[address(uniV2Pair)] = true; require(address(this).balance > 0, "ERC20: Must have ETH on contract to Go Live!"); addLiquidity(balanceOf(address(this)), address(this).balance); launchSetLiquidityAddress(dead); maxWalletOn = true; swapAndLiquifyStatus = true; limitsOn = true; live = true; return true; } function internalTransfer(address from, address to, uint256 amount) internal { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "ERC20: Transfer amount must be greater than zero"); require(!isBot[from], "ERC20: Can not transfer from BOT"); if(!live){ require(isTaxExcluded[from] || isTaxExcluded[to], "ERC20: Trading Is Not Live!"); } if (maxWalletOn == true && ! isMaxWalletExcluded[to]) { require(balanceOf(to).add(amount) <= maxWallet, "ERC20: Max amount of tokens for wallet reached"); } if(limitsOn){ if (from != owner() && to != owner() && to != address(0) && to != dead && to != uniV2Pair) { for (uint x = 0; x < 3; x++) { if(block.number == activeTradingBlock.add(x)) { isSniper[to] = true; } } } } if(contractBlocker) { require( !isContract(to) && isContractsExcluded[from] || !isContract(from) && isContractsExcluded[to] || isContract(from) && isContractsExcluded[to] || isContract(to) && isContractsExcluded[from] ); } uint256 totalTokensToSwap = liquidityTokens.add(marketingTokens); uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minTaxSwap; if (!inSwapAndLiquify && swapAndLiquifyStatus && balanceOf(uniV2Pair) > 0 && totalTokensToSwap > 0 && !isTaxExcluded[to] && !isTaxExcluded[from] && to == uniV2Pair && overMinimumTokenBalance) { taxTokenSwap(); } if (isTaxExcluded[from] || isTaxExcluded[to]) { marketingTax = 0; liquidityTax = 0; divForSplitTax = marketingTax.add(liquidityTax); } else { if (from == uniV2Pair) { marketingTax = taxBuyMarketing; liquidityTax = taxBuyLiquidity; divForSplitTax = taxBuyMarketing.add(taxBuyLiquidity); }else if (to == uniV2Pair) { marketingTax = taxSellMarketing; liquidityTax = taxSellLiquidity; divForSplitTax = taxSellMarketing.add(taxSellLiquidity); if(isSniper[from] && sniperPenaltyEnd >= block.timestamp){ marketingTax = 85; liquidityTax = 10; divForSplitTax = marketingTax.add(liquidityTax); } }else { require(!isSniper[from] || sniperPenaltyEnd <= block.timestamp, "ERC20: Snipers can not transfer till penalty time is over"); marketingTax = 0; liquidityTax = 0; } } tokenTransfer(from, to, amount); } function taxTokenSwap() internal lockTheSwap { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = marketingTokens.add(liquidityTokens); uint256 swapLiquidityTokens = liquidityTokens.div(2); uint256 amountToSwapForETH = contractBalance.sub(swapLiquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForETH(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(marketingTokens).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance.sub(ethForMarketing); marketingTokens = 0; liquidityTokens = 0; (bool success,) = address(marketingAddress).call{value: ethForMarketing}(""); if(ethForLiquidity != 0 && swapLiquidityTokens != 0) { addLiquidity(swapLiquidityTokens, ethForLiquidity); } if(address(this).balance > 5 * 1e17){ (success,) = address(devAddress).call{value: address(this).balance}(""); } } function swapTokensForETH(uint256 tokenAmount) internal { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniV2Router.WETH(); internalApprove(address(this), address(uniV2Router), tokenAmount); uniV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal { internalApprove(address(this), address(uniV2Router), tokenAmount); uniV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, liquidityAddress, block.timestamp ); } function calculateTax(uint256 amount) internal view returns (uint256) { return amount.mul(marketingTax.add(liquidityTax)).div(100); } function splitTaxTokens(uint256 taxTokens) internal { marketingTokens += taxTokens.mul(marketingTax).div(divForSplitTax); liquidityTokens += taxTokens.mul(liquidityTax).div(divForSplitTax); } function tokenTransfer(address sender,address recipient,uint256 amount) internal { if(divForSplitTax != 0){ uint256 taxTokens = calculateTax(amount); uint256 transferTokens = amount.sub(taxTokens); splitTaxTokens(taxTokens); tokenBalance[sender] -= amount; tokenBalance[recipient] += transferTokens; tokenBalance[address(this)] += taxTokens; emit Transfer(sender, recipient, transferTokens); }else{ tokenBalance[sender] -= amount; tokenBalance[recipient] += amount; emit Transfer(sender, recipient, amount); } } function launchSetLiquidityAddress(address LPAddress) internal { liquidityAddress = payable(LPAddress); isTaxExcluded[liquidityAddress] = true; } function isContract(address account) public view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function addRemoveContract(address account, bool trueORfalse) external onlyOwner { isContractsExcluded[account] = trueORfalse; } function isExcludedContract(address account) public view returns (bool) { return isContractsExcluded[account]; } function withdrawStuckETH() external onlyOwner { bool success; (success,) = address(owner()).call{value: address(this).balance}(""); } function withdrawStuckTokens(uint256 percent) external onlyOwner { internalTransfer(address(this), owner(), tokenSupply*percent/100); } function manualBurnTokensFromLP(uint256 percent) external onlyOwner returns (bool){ require(percent <= 10, "ERC20: May not nuke more than 10% of tokens in LP"); uint256 liquidityPairBalance = this.balanceOf(uniV2Pair); uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10**2); if (amountToBurn > 0){ internalTransfer(uniV2Pair, dead, amountToBurn); } totalBurnedTokens = balanceOf(dead); require(totalBurnedTokens <= tokenSupply * 50 / 10**2, "ERC20: Can not burn more then 50% of supply"); IUniswapV2Pair pair = IUniswapV2Pair(uniV2Pair); pair.sync(); return true; } function manualSwapTax() external onlyOwner { uint256 contractBalance = balanceOf(address(this)); require(contractBalance >= tokenSupply.mul(5).div(10000), "ERC20: Can only swap back if more than 0.05% of tokens stuck on contract"); taxTokenSwap(); } function addBot(address account) external onlyOwner { require(!isBot[account], "ERC20: Account already added"); isBot[account] = true; } function removeBot(address account) external onlyOwner { require(isBot[account], "ERC20: Account is not bot"); isBot[account] = false; } function removeSniper(address account) external onlyOwner { require(isSniper[account], "ERC20: Account is not sniper"); isSniper[account] = false; } function setExcludedContractAccount(address account, bool trueORfalse) external onlyOwner { isContractsExcluded[address(account)] = trueORfalse; } function setExcludedFromTax(address account, bool trueORfalse) external onlyOwner { isTaxExcluded[address(account)] = trueORfalse; } function setExcludedFromMaxWallet(address account, bool trueORfalse) external onlyOwner { isMaxWalletExcluded[address(account)] = trueORfalse; } function setMaxWalletAmount(uint256 percent, uint256 divider) external onlyOwner { maxWallet = tokenSupply.mul(percent).div(divider); require(maxWallet <=tokenSupply.mul(100).div(100), "ERC20: Can not set max wallet more than 4%"); } function setStatusLimits(bool trueORfalse) external onlyOwner { limitsOn = trueORfalse; } function setStatusMaxWallet(bool trueORfalse) external onlyOwner { maxWalletOn = trueORfalse; } function setStatusContractBlocker(bool trueORfalse) external onlyOwner { contractBlocker = trueORfalse; } function setSwapAndLiquifyStatus(bool trueORfalse) external onlyOwner { swapAndLiquifyStatus = trueORfalse; } function setTaxes(uint256 buyMarketingTax, uint256 buyLiquidityTax, uint256 sellMarketingTax, uint256 sellLiquidityTax) external onlyOwner { taxBuyMarketing = buyMarketingTax; taxBuyLiquidity = buyLiquidityTax; taxSellMarketing = sellMarketingTax; taxSellLiquidity = sellLiquidityTax; } function viewTaxes() public view returns(uint256 marketingBuy, uint256 liquidityBuy, uint256 marketingSell, uint256 liquiditySell) { return(taxBuyMarketing,taxBuyLiquidity,taxSellMarketing,taxSellLiquidity); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"percent","type":"uint256[]"}],"name":"AirDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"GoLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"activeTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"addRemoveContract","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractBlocker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"live","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnTokensFromLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setExcludedContractAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setExcludedFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setExcludedFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divider","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setStatusContractBlocker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setStatusLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setStatusMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setSwapAndLiquifyStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyMarketingTax","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"sellMarketingTax","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityTax","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sniperPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"uniV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniV3Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewTaxes","outputs":[{"internalType":"uint256","name":"marketingBuy","type":"uint256"},{"internalType":"uint256","name":"liquidityBuy","type":"uint256"},{"internalType":"uint256","name":"marketingSell","type":"uint256"},{"internalType":"uint256","name":"liquiditySell","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600b80546001600160a01b03191661dead179055601e805465ff00ffffffff191690556000620000313390565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000896012600a620003fd565b6200009a9064e8d4a510006200040e565b30600090815260026020526040902055620000fd6064620000e96004620000c46012600a620003fd565b620000d59064e8d4a510006200040e565b620002c560201b62001a2e1790919060201c565b620002dc60201b62001a411790919060201c565b600f556200011b612710620000e96005620000c46012600a620003fd565b6010556009805473453b9c2bfdfd105483e5f0cdb239d4a814bd5a396001600160a01b03199182168117909255600a80549091169091179055620001676000546001600160a01b031690565b600880546001600160a01b0319166001600160a01b039283161781556019601781905560006018819055908055601b81905530808252600360209081526040808420805460ff199081166001908117909255855488168652600584528286208054821683179055600b80548916875283872080548316841790558587528387208054831684179055600980548a168852848820805484168517905588548a1688528488208054841685179055868852600490955283872080548316841790558654891687528387208054831684179055935488168652828620805482168317905595548716855281852080548716821790559154909516835293822080549093169093179091557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200029d6012600a620003fd565b620002ae9064e8d4a510006200040e565b60405190815260200160405180910390a36200044b565b6000620002d382846200040e565b90505b92915050565b6000620002d3828462000428565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000341578160001904821115620003255762000325620002ea565b808516156200033357918102915b93841c939080029062000305565b509250929050565b6000826200035a57506001620002d6565b816200036957506000620002d6565b81600181146200038257600281146200038d57620003ad565b6001915050620002d6565b60ff841115620003a157620003a1620002ea565b50506001821b620002d6565b5060208310610133831016604e8410600b8410161715620003d2575081810a620002d6565b620003de838362000300565b8060001904821115620003f557620003f5620002ea565b029392505050565b6000620002d360ff84168362000349565b8082028115828204841417620002d657620002d6620002ea565b6000826200044657634e487b7160e01b600052601260045260246000fd5b500490565b612fb9806200045b6000396000f3fe6080604052600436106102765760003560e01c80637817be6c1161014f578063a73f9b58116100c1578063ee2e5a2e1161007a578063ee2e5a2e146107e5578063f0c0cf8714610805578063f2fde38b1461081b578063f35900d01461083b578063f5648a4f1461085b578063ffecf5161461087057600080fd5b8063a73f9b5814610734578063a9059cbb14610749578063c2ed286b14610769578063dd62ed3e14610789578063e4252ddf1461062d578063ea090d97146107cf57600080fd5b8063957aa58c11610113578063957aa58c1461064d578063958c2e521461066d57806395d89b411461068d57806396c9b442146106ba578063a12a7d61146106db578063a20d9615146106fb57600080fd5b80637817be6c146105af5780638bcea939146105cf5780638c714f80146105ef5780638da5cb5b1461060f57806391c09d1e1461062d57600080fd5b80633b4e935a116101e85780635fafa589116101ac5780635fafa589146104e35780635fecd9261461051b57806370a082311461053b578063715018a61461055b578063745d032f1461057057806375d0cc431461058f57600080fd5b80633b4e935a1461043e5780633bbac57914610453578063412201041461048357806351524e5b146104a35780635e6710de146104c357600080fd5b806318160ddd1161023a57806318160ddd14610383578063186d260d146103a65780631c42047a146103c857806323b872dd146103e2578063313ce5671461040257806333251a0b1461041e57600080fd5b806306fdde0314610282578063095ea7b3146102ca5780630f3a325f146102fa57806311abf5371461032a578063162790551461036357600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5060408051808201909152600d81526c050726f6f66204f662048656c7609c1b60208201525b6040516102c19190612888565b60405180910390f35b3480156102d657600080fd5b506102ea6102e53660046128eb565b610890565b60405190151581526020016102c1565b34801561030657600080fd5b506102ea610315366004612917565b60066020526000908152604090205460ff1681565b34801561033657600080fd5b50601754601854601954601b546040805194855260208501939093529183015260608201526080016102c1565b34801561036f57600080fd5b506102ea61037e366004612917565b610943565b34801561038f57600080fd5b5061039861097f565b6040519081526020016102c1565b3480156103b257600080fd5b506103c66103c1366004612944565b6109a1565b005b3480156103d457600080fd5b50601e546102ea9060ff1681565b3480156103ee57600080fd5b506102ea6103fd36600461295f565b6109de565b34801561040e57600080fd5b50604051601281526020016102c1565b34801561042a57600080fd5b506103c6610439366004612917565b610a47565b34801561044a57600080fd5b506102ea610afa565b34801561045f57600080fd5b506102ea61046e366004612917565b60076020526000908152604090205460ff1681565b34801561048f57600080fd5b506103c661049e3660046129a0565b610ef2565b3480156104af57600080fd5b506103c66104be366004612aab565b610f47565b3480156104cf57600080fd5b506103c66104de366004612b6d565b61107f565b3480156104ef57600080fd5b50600e54610503906001600160a01b031681565b6040516001600160a01b0390911681526020016102c1565b34801561052757600080fd5b506103c6610536366004612917565b6110f9565b34801561054757600080fd5b50610398610556366004612917565b6111ac565b34801561056757600080fd5b506103c66111c7565b34801561057c57600080fd5b50601e546102ea90610100900460ff1681565b34801561059b57600080fd5b506103c66105aa366004612944565b61123b565b3480156105bb57600080fd5b506102ea6105ca366004612b6d565b611283565b3480156105db57600080fd5b50600c54610503906001600160a01b031681565b3480156105fb57600080fd5b506103c661060a366004612944565b6114de565b34801561061b57600080fd5b506000546001600160a01b0316610503565b34801561063957600080fd5b506103c66106483660046129a0565b611522565b34801561065957600080fd5b50601e546102ea9062010000900460ff1681565b34801561067957600080fd5b50600d54610503906001600160a01b031681565b34801561069957600080fd5b50604080518082019091526004815263048454c560e41b60208201526102b4565b3480156106c657600080fd5b50601e546102ea906301000000900460ff1681565b3480156106e757600080fd5b506103c66106f6366004612b86565b611577565b34801561070757600080fd5b506102ea610716366004612917565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561074057600080fd5b506103c66115b5565b34801561075557600080fd5b506102ea6107643660046128eb565b611691565b34801561077557600080fd5b506103c66107843660046129a0565b6116a7565b34801561079557600080fd5b506103986107a4366004612bb8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107db57600080fd5b50610398601c5481565b3480156107f157600080fd5b506103c6610800366004612944565b6116fc565b34801561081157600080fd5b50610398601d5481565b34801561082757600080fd5b506103c6610836366004612917565b611748565b34801561084757600080fd5b506103c6610856366004612bf1565b611837565b34801561086757600080fd5b506103c66118f5565b34801561087c57600080fd5b506103c661088b366004612917565b611977565b6000336108b85760405162461bcd60e51b81526004016108af90612c13565b60405180910390fd5b6001600160a01b0383166108de5760405162461bcd60e51b81526004016108af90612c5b565b3360008181526001602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061097757508115155b949350505050565b600061098d6012600a612d9b565b61099c9064e8d4a51000612daa565b905090565b6000546001600160a01b031633146109cb5760405162461bcd60e51b81526004016108af90612dc1565b601e805460ff1916911515919091179055565b60006109eb848484611a4d565b610a3d8433610a3885604051806060016040528060318152602001612f53603191396001600160a01b038a16600090815260016020908152604080832033845290915290205491906121bb565b6121e7565b5060019392505050565b6000546001600160a01b03163314610a715760405162461bcd60e51b81526004016108af90612dc1565b6001600160a01b03811660009081526006602052604090205460ff16610ad95760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e74206973206e6f7420736e697065720000000060448201526064016108af565b6001600160a01b03166000908152600660205260409020805460ff19169055565b600080546001600160a01b03163314610b255760405162461bcd60e51b81526004016108af90612dc1565b601e5462010000900460ff1615610b7e5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164657320616c7265616479204c69766521000000000060448201526064016108af565b43601c55610b8f426202a300612295565b601d55600d80546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d908117909255600e80549091167368b3465833fb72a70ecdf485e0e4c7bd8665fc451790557ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8805460ff1990811660019081179092557fdc51a0a44317b550a6b5ddb34687ce2bd40e4750eec27343e32b23e6867392088054821683179055600083905260046020527f1fc5acd025f7cc5cf2691b667dba808b5a149bf27192c208fc66f1f0ec4222d780549091169091179055610c8b3082610c7c6012600a612d9b565b610a389064e8d4a51000612daa565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ced9190612e06565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e9190612e06565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610dab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcf9190612e06565b600c80546001600160a01b0319166001600160a01b0392831690811782556000908152600360209081526040808320805460ff19908116600190811790925594549095168352600490915290208054909116909117905547610e885760405162461bcd60e51b815260206004820152602c60248201527f45524332303a204d757374206861766520455448206f6e20636f6e747261637460448201526b20746f20476f204c6976652160a01b60648201526084016108af565b610e9a610e94306111ac565b476122a1565b600b54600880546001600160a01b0319166001600160a01b0390921691821790556000908152600560205260409020805460ff191660011790555050601e805465ff0000ffffff191665010000010101179055600190565b6000546001600160a01b03163314610f1c5760405162461bcd60e51b81526004016108af90612dc1565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f715760405162461bcd60e51b81526004016108af90612dc1565b6064825110610fe15760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b60648201526084016108af565b60005b825181101561107a57600083828151811061100157611001612e23565b602002602001015190506000611058606461105286868151811061102757611027612e23565b60200260200101516012600a61103d9190612d9b565b61104c9064e8d4a51000612daa565b90611a2e565b90611a41565b9050611065338383611a4d565b5050808061107290612e39565b915050610fe4565b505050565b6000546001600160a01b031633146110a95760405162461bcd60e51b81526004016108af90612dc1565b6110f6306110bf6000546001600160a01b031690565b6064846110ce6012600a612d9b565b6110dd9064e8d4a51000612daa565b6110e79190612daa565b6110f19190612e52565b611a4d565b50565b6000546001600160a01b031633146111235760405162461bcd60e51b81526004016108af90612dc1565b6001600160a01b03811660009081526007602052604090205460ff1661118b5760405162461bcd60e51b815260206004820152601960248201527f45524332303a204163636f756e74206973206e6f7420626f740000000000000060448201526064016108af565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6001600160a01b031660009081526002602052604090205490565b6000546001600160a01b031633146111f15760405162461bcd60e51b81526004016108af90612dc1565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112655760405162461bcd60e51b81526004016108af90612dc1565b601e805491151563010000000263ff00000019909216919091179055565b600080546001600160a01b031633146112ae5760405162461bcd60e51b81526004016108af90612dc1565b600a8211156113195760405162461bcd60e51b815260206004820152603160248201527f45524332303a204d6179206e6f74206e756b65206d6f7265207468616e203130604482015270025206f6620746f6b656e7320696e204c5607c1b60648201526084016108af565b600c546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa158015611364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113889190612e74565b9050600061139b60646110528487611a2e565b905080156113c057600c54600b546113c0916001600160a01b03908116911683611a4d565b600b546113d5906001600160a01b03166111ac565b60135560646113e66012600a612d9b565b6113f59064e8d4a51000612daa565b611400906032612daa565b61140a9190612e52565b601354111561146f5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a2043616e206e6f74206275726e206d6f7265207468656e20353060448201526a25206f6620737570706c7960a81b60648201526084016108af565b600c546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b1580156114b957600080fd5b505af11580156114cd573d6000803e3d6000fd5b50505050600193505050505b919050565b6000546001600160a01b031633146115085760405162461bcd60e51b81526004016108af90612dc1565b601e80549115156101000261ff0019909216919091179055565b6000546001600160a01b0316331461154c5760405162461bcd60e51b81526004016108af90612dc1565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115a15760405162461bcd60e51b81526004016108af90612dc1565b601793909355601891909155601955601b55565b6000546001600160a01b031633146115df5760405162461bcd60e51b81526004016108af90612dc1565b60006115ea306111ac565b9050611603612710611052600561103d6012600a612d9b565b8110156116895760405162461bcd60e51b815260206004820152604860248201527f45524332303a2043616e206f6e6c792073776170206261636b206966206d6f7260448201527f65207468616e20302e303525206f6620746f6b656e7320737475636b206f6e2060648201526718dbdb9d1c9858dd60c21b608482015260a4016108af565b6110f6612355565b600061169e338484611a4d565b50600192915050565b6000546001600160a01b031633146116d15760405162461bcd60e51b81526004016108af90612dc1565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117265760405162461bcd60e51b81526004016108af90612dc1565b601e8054911515650100000000000265ff000000000019909216919091179055565b6000546001600160a01b031633146117725760405162461bcd60e51b81526004016108af90612dc1565b6001600160a01b0381166117dc5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016108af565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118615760405162461bcd60e51b81526004016108af90612dc1565b611875816110528461103d6012600a612d9b565b600f5561188d60646110528161103d6012600a612d9b565b600f5411156118f15760405162461bcd60e51b815260206004820152602a60248201527f45524332303a2043616e206e6f7420736574206d61782077616c6c6574206d6f6044820152697265207468616e20342560b01b60648201526084016108af565b5050565b6000546001600160a01b0316331461191f5760405162461bcd60e51b81526004016108af90612dc1565b600080546040516001600160a01b039091169047908381818185875af1925050503d806000811461196c576040519150601f19603f3d011682016040523d82523d6000602084013e611971565b606091505b50505050565b6000546001600160a01b031633146119a15760405162461bcd60e51b81526004016108af90612dc1565b6001600160a01b03811660009081526007602052604090205460ff1615611a0a5760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e7420616c72656164792061646465640000000060448201526064016108af565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000611a3a8284612daa565b9392505050565b6000611a3a8284612e52565b6001600160a01b038316611ab15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108af565b6001600160a01b038216611b135760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108af565b60008111611b7c5760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016108af565b6001600160a01b03831660009081526007602052604090205460ff1615611be55760405162461bcd60e51b815260206004820181905260248201527f45524332303a2043616e206e6f74207472616e736665722066726f6d20424f5460448201526064016108af565b601e5462010000900460ff16611c80576001600160a01b03831660009081526005602052604090205460ff1680611c3457506001600160a01b03821660009081526005602052604090205460ff165b611c805760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164696e67204973204e6f74204c69766521000000000060448201526064016108af565b601e5460ff6101009091041615156001148015611cb657506001600160a01b03821660009081526004602052604090205460ff16155b15611d3657600f54611cd182611ccb856111ac565b90612295565b1115611d365760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204d617820616d6f756e74206f6620746f6b656e7320666f722060448201526d1dd85b1b195d081c995858da195960921b60648201526084016108af565b601e5460ff1615611e11576000546001600160a01b03848116911614801590611d6d57506000546001600160a01b03838116911614155b8015611d8157506001600160a01b03821615155b8015611d9b5750600b546001600160a01b03838116911614155b8015611db55750600c546001600160a01b03838116911614155b15611e115760005b6003811015611e0f57601c54611dd39082612295565b4303611dfd576001600160a01b0383166000908152600660205260409020805460ff191660011790555b80611e0781612e39565b915050611dbd565b505b601e546301000000900460ff1615611ef457611e2c82610943565b158015611e5157506001600160a01b03831660009081526003602052604090205460ff165b80611e855750611e6083610943565b158015611e8557506001600160a01b03821660009081526003602052604090205460ff165b80611eb85750611e9483610943565b8015611eb857506001600160a01b03821660009081526003602052604090205460ff165b80611eeb5750611ec782610943565b8015611eeb57506001600160a01b03831660009081526003602052604090205460ff165b611ef457600080fd5b6000611f0d60115460125461229590919063ffffffff16565b90506000611f1a306111ac565b601054601e5491925082101590640100000000900460ff16158015611f4a5750601e5465010000000000900460ff165b8015611f6b5750600c54600090611f69906001600160a01b03166111ac565b115b8015611f775750600083115b8015611f9c57506001600160a01b03851660009081526005602052604090205460ff16155b8015611fc157506001600160a01b03861660009081526005602052604090205460ff16155b8015611fda5750600c546001600160a01b038681169116145b8015611fe35750805b15611ff057611ff0612355565b6001600160a01b03861660009081526005602052604090205460ff168061202f57506001600160a01b03851660009081526005602052604090205460ff165b156120525760006014819055601581905561204a9080612295565b6016556121a8565b600c546001600160a01b0390811690871603612082576017546014819055601854601581905561204a9190612295565b600c546001600160a01b0390811690861603612101576019546014819055601b5460158190556120b29190612295565b6016556001600160a01b03861660009081526006602052604090205460ff1680156120df575042601d5410155b156120fc5760556014819055600a601581905561204a9190612295565b6121a8565b6001600160a01b03861660009081526006602052604090205460ff16158061212b575042601d5411155b61219d5760405162461bcd60e51b815260206004820152603960248201527f45524332303a20536e69706572732063616e206e6f74207472616e736665722060448201527f74696c6c2070656e616c74792074696d65206973206f7665720000000000000060648201526084016108af565b600060148190556015555b6121b3868686612501565b505050505050565b600081848411156121df5760405162461bcd60e51b81526004016108af9190612888565b505050900390565b6001600160a01b03831661220d5760405162461bcd60e51b81526004016108af90612c13565b6001600160a01b0382166122335760405162461bcd60e51b81526004016108af90612c5b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000611a3a8284612e8d565b600d546122b99030906001600160a01b0316846121e7565b600d5460085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612329573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061234e9190612ea0565b5050505050565b601e805464ff0000000019166401000000001790556000612375306111ac565b9050600061239060125460115461229590919063ffffffff16565b905060006123aa6002601254611a4190919063ffffffff16565b905060006123b884836126a2565b9050476123c4826126ae565b60006123d047836126a2565b905060006123ed8661105260115485611a2e90919063ffffffff16565b905060006123fb83836126a2565b60006011819055601281905560095460405192935090916001600160a01b039091169084908381818185875af1925050503d8060008114612458576040519150601f19603f3d011682016040523d82523d6000602084013e61245d565b606091505b505090508160001415801561247157508615155b156124805761248087836122a1565b6706f05b59d3b200004711156124e857600a546040516001600160a01b03909116904790600081818185875af1925050503d80600081146124dd576040519150601f19603f3d011682016040523d82523d6000602084013e6124e2565b606091505b50909150505b5050601e805464ff000000001916905550505050505050565b6016541561260157600061251482612800565b9050600061252283836126a2565b905061252d82612828565b6001600160a01b03851660009081526002602052604081208054859290612555908490612ece565b90915550506001600160a01b03841660009081526002602052604081208054839290612582908490612e8d565b909155505030600090815260026020526040812080548492906125a6908490612e8d565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125f291815260200190565b60405180910390a35050505050565b6001600160a01b03831660009081526002602052604081208054839290612629908490612ece565b90915550506001600160a01b03821660009081526002602052604081208054839290612656908490612e8d565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161228891815260200190565b6000611a3a8284612ece565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126e3576126e3612e23565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561273c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127609190612e06565b8160018151811061277357612773612e23565b6001600160a01b039283166020918202929092010152600d5461279991309116846121e7565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906127d2908590600090869030904290600401612ee1565b600060405180830381600087803b1580156127ec57600080fd5b505af11580156121b3573d6000803e3d6000fd5b600061093d606461105261282160155460145461229590919063ffffffff16565b8590611a2e565b61284360165461105260145484611a2e90919063ffffffff16565b601160008282546128549190612e8d565b909155505060165460155461286f9190611052908490611a2e565b601260008282546128809190612e8d565b909155505050565b600060208083528351808285015260005b818110156128b557858101830151858201604001528201612899565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146110f657600080fd5b600080604083850312156128fe57600080fd5b8235612909816128d6565b946020939093013593505050565b60006020828403121561292957600080fd5b8135611a3a816128d6565b803580151581146114d957600080fd5b60006020828403121561295657600080fd5b611a3a82612934565b60008060006060848603121561297457600080fd5b833561297f816128d6565b9250602084013561298f816128d6565b929592945050506040919091013590565b600080604083850312156129b357600080fd5b82356129be816128d6565b91506129cc60208401612934565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a1457612a146129d5565b604052919050565b600067ffffffffffffffff821115612a3657612a366129d5565b5060051b60200190565b600082601f830112612a5157600080fd5b81356020612a66612a6183612a1c565b6129eb565b82815260059290921b84018101918181019086841115612a8557600080fd5b8286015b84811015612aa05780358352918301918301612a89565b509695505050505050565b60008060408385031215612abe57600080fd5b823567ffffffffffffffff80821115612ad657600080fd5b818501915085601f830112612aea57600080fd5b81356020612afa612a6183612a1c565b82815260059290921b84018101918181019089841115612b1957600080fd5b948201945b83861015612b40578535612b31816128d6565b82529482019490820190612b1e565b96505086013592505080821115612b5657600080fd5b50612b6385828601612a40565b9150509250929050565b600060208284031215612b7f57600080fd5b5035919050565b60008060008060808587031215612b9c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215612bcb57600080fd5b8235612bd6816128d6565b91506020830135612be6816128d6565b809150509250929050565b60008060408385031215612c0457600080fd5b50508035926020909101359150565b60208082526028908201527f45524332303a2043616e206e6f7420617070726f76652066726f6d207a65726f604082015267206164647265737360c01b606082015260800190565b60208082526026908201527f45524332303a2043616e206e6f7420617070726f766520746f207a65726f206160408201526564647265737360d01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612cf2578160001904821115612cd857612cd8612ca1565b80851615612ce557918102915b93841c9390800290612cbc565b509250929050565b600082612d095750600161093d565b81612d165750600061093d565b8160018114612d2c5760028114612d3657612d52565b600191505061093d565b60ff841115612d4757612d47612ca1565b50506001821b61093d565b5060208310610133831016604e8410600b8410161715612d75575081810a61093d565b612d7f8383612cb7565b8060001904821115612d9357612d93612ca1565b029392505050565b6000611a3a60ff841683612cfa565b808202811582820484141761093d5761093d612ca1565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b600060208284031215612e1857600080fd5b8151611a3a816128d6565b634e487b7160e01b600052603260045260246000fd5b600060018201612e4b57612e4b612ca1565b5060010190565b600082612e6f57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612e8657600080fd5b5051919050565b8082018082111561093d5761093d612ca1565b600080600060608486031215612eb557600080fd5b8351925060208401519150604084015190509250925092565b8181038181111561093d5761093d612ca1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612f315784516001600160a01b031683529383019391830191600101612f0c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a2043616e206e6f74207472616e736665722e20416d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122042c91588521d7f2e1a450892e8a06e9db162d6f463fb4add7f52c3535bfd441464736f6c63430008110033
Deployed Bytecode
0x6080604052600436106102765760003560e01c80637817be6c1161014f578063a73f9b58116100c1578063ee2e5a2e1161007a578063ee2e5a2e146107e5578063f0c0cf8714610805578063f2fde38b1461081b578063f35900d01461083b578063f5648a4f1461085b578063ffecf5161461087057600080fd5b8063a73f9b5814610734578063a9059cbb14610749578063c2ed286b14610769578063dd62ed3e14610789578063e4252ddf1461062d578063ea090d97146107cf57600080fd5b8063957aa58c11610113578063957aa58c1461064d578063958c2e521461066d57806395d89b411461068d57806396c9b442146106ba578063a12a7d61146106db578063a20d9615146106fb57600080fd5b80637817be6c146105af5780638bcea939146105cf5780638c714f80146105ef5780638da5cb5b1461060f57806391c09d1e1461062d57600080fd5b80633b4e935a116101e85780635fafa589116101ac5780635fafa589146104e35780635fecd9261461051b57806370a082311461053b578063715018a61461055b578063745d032f1461057057806375d0cc431461058f57600080fd5b80633b4e935a1461043e5780633bbac57914610453578063412201041461048357806351524e5b146104a35780635e6710de146104c357600080fd5b806318160ddd1161023a57806318160ddd14610383578063186d260d146103a65780631c42047a146103c857806323b872dd146103e2578063313ce5671461040257806333251a0b1461041e57600080fd5b806306fdde0314610282578063095ea7b3146102ca5780630f3a325f146102fa57806311abf5371461032a578063162790551461036357600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5060408051808201909152600d81526c050726f6f66204f662048656c7609c1b60208201525b6040516102c19190612888565b60405180910390f35b3480156102d657600080fd5b506102ea6102e53660046128eb565b610890565b60405190151581526020016102c1565b34801561030657600080fd5b506102ea610315366004612917565b60066020526000908152604090205460ff1681565b34801561033657600080fd5b50601754601854601954601b546040805194855260208501939093529183015260608201526080016102c1565b34801561036f57600080fd5b506102ea61037e366004612917565b610943565b34801561038f57600080fd5b5061039861097f565b6040519081526020016102c1565b3480156103b257600080fd5b506103c66103c1366004612944565b6109a1565b005b3480156103d457600080fd5b50601e546102ea9060ff1681565b3480156103ee57600080fd5b506102ea6103fd36600461295f565b6109de565b34801561040e57600080fd5b50604051601281526020016102c1565b34801561042a57600080fd5b506103c6610439366004612917565b610a47565b34801561044a57600080fd5b506102ea610afa565b34801561045f57600080fd5b506102ea61046e366004612917565b60076020526000908152604090205460ff1681565b34801561048f57600080fd5b506103c661049e3660046129a0565b610ef2565b3480156104af57600080fd5b506103c66104be366004612aab565b610f47565b3480156104cf57600080fd5b506103c66104de366004612b6d565b61107f565b3480156104ef57600080fd5b50600e54610503906001600160a01b031681565b6040516001600160a01b0390911681526020016102c1565b34801561052757600080fd5b506103c6610536366004612917565b6110f9565b34801561054757600080fd5b50610398610556366004612917565b6111ac565b34801561056757600080fd5b506103c66111c7565b34801561057c57600080fd5b50601e546102ea90610100900460ff1681565b34801561059b57600080fd5b506103c66105aa366004612944565b61123b565b3480156105bb57600080fd5b506102ea6105ca366004612b6d565b611283565b3480156105db57600080fd5b50600c54610503906001600160a01b031681565b3480156105fb57600080fd5b506103c661060a366004612944565b6114de565b34801561061b57600080fd5b506000546001600160a01b0316610503565b34801561063957600080fd5b506103c66106483660046129a0565b611522565b34801561065957600080fd5b50601e546102ea9062010000900460ff1681565b34801561067957600080fd5b50600d54610503906001600160a01b031681565b34801561069957600080fd5b50604080518082019091526004815263048454c560e41b60208201526102b4565b3480156106c657600080fd5b50601e546102ea906301000000900460ff1681565b3480156106e757600080fd5b506103c66106f6366004612b86565b611577565b34801561070757600080fd5b506102ea610716366004612917565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561074057600080fd5b506103c66115b5565b34801561075557600080fd5b506102ea6107643660046128eb565b611691565b34801561077557600080fd5b506103c66107843660046129a0565b6116a7565b34801561079557600080fd5b506103986107a4366004612bb8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107db57600080fd5b50610398601c5481565b3480156107f157600080fd5b506103c6610800366004612944565b6116fc565b34801561081157600080fd5b50610398601d5481565b34801561082757600080fd5b506103c6610836366004612917565b611748565b34801561084757600080fd5b506103c6610856366004612bf1565b611837565b34801561086757600080fd5b506103c66118f5565b34801561087c57600080fd5b506103c661088b366004612917565b611977565b6000336108b85760405162461bcd60e51b81526004016108af90612c13565b60405180910390fd5b6001600160a01b0383166108de5760405162461bcd60e51b81526004016108af90612c5b565b3360008181526001602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061097757508115155b949350505050565b600061098d6012600a612d9b565b61099c9064e8d4a51000612daa565b905090565b6000546001600160a01b031633146109cb5760405162461bcd60e51b81526004016108af90612dc1565b601e805460ff1916911515919091179055565b60006109eb848484611a4d565b610a3d8433610a3885604051806060016040528060318152602001612f53603191396001600160a01b038a16600090815260016020908152604080832033845290915290205491906121bb565b6121e7565b5060019392505050565b6000546001600160a01b03163314610a715760405162461bcd60e51b81526004016108af90612dc1565b6001600160a01b03811660009081526006602052604090205460ff16610ad95760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e74206973206e6f7420736e697065720000000060448201526064016108af565b6001600160a01b03166000908152600660205260409020805460ff19169055565b600080546001600160a01b03163314610b255760405162461bcd60e51b81526004016108af90612dc1565b601e5462010000900460ff1615610b7e5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164657320616c7265616479204c69766521000000000060448201526064016108af565b43601c55610b8f426202a300612295565b601d55600d80546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d908117909255600e80549091167368b3465833fb72a70ecdf485e0e4c7bd8665fc451790557ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8805460ff1990811660019081179092557fdc51a0a44317b550a6b5ddb34687ce2bd40e4750eec27343e32b23e6867392088054821683179055600083905260046020527f1fc5acd025f7cc5cf2691b667dba808b5a149bf27192c208fc66f1f0ec4222d780549091169091179055610c8b3082610c7c6012600a612d9b565b610a389064e8d4a51000612daa565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ced9190612e06565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e9190612e06565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610dab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcf9190612e06565b600c80546001600160a01b0319166001600160a01b0392831690811782556000908152600360209081526040808320805460ff19908116600190811790925594549095168352600490915290208054909116909117905547610e885760405162461bcd60e51b815260206004820152602c60248201527f45524332303a204d757374206861766520455448206f6e20636f6e747261637460448201526b20746f20476f204c6976652160a01b60648201526084016108af565b610e9a610e94306111ac565b476122a1565b600b54600880546001600160a01b0319166001600160a01b0390921691821790556000908152600560205260409020805460ff191660011790555050601e805465ff0000ffffff191665010000010101179055600190565b6000546001600160a01b03163314610f1c5760405162461bcd60e51b81526004016108af90612dc1565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f715760405162461bcd60e51b81526004016108af90612dc1565b6064825110610fe15760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b60648201526084016108af565b60005b825181101561107a57600083828151811061100157611001612e23565b602002602001015190506000611058606461105286868151811061102757611027612e23565b60200260200101516012600a61103d9190612d9b565b61104c9064e8d4a51000612daa565b90611a2e565b90611a41565b9050611065338383611a4d565b5050808061107290612e39565b915050610fe4565b505050565b6000546001600160a01b031633146110a95760405162461bcd60e51b81526004016108af90612dc1565b6110f6306110bf6000546001600160a01b031690565b6064846110ce6012600a612d9b565b6110dd9064e8d4a51000612daa565b6110e79190612daa565b6110f19190612e52565b611a4d565b50565b6000546001600160a01b031633146111235760405162461bcd60e51b81526004016108af90612dc1565b6001600160a01b03811660009081526007602052604090205460ff1661118b5760405162461bcd60e51b815260206004820152601960248201527f45524332303a204163636f756e74206973206e6f7420626f740000000000000060448201526064016108af565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6001600160a01b031660009081526002602052604090205490565b6000546001600160a01b031633146111f15760405162461bcd60e51b81526004016108af90612dc1565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112655760405162461bcd60e51b81526004016108af90612dc1565b601e805491151563010000000263ff00000019909216919091179055565b600080546001600160a01b031633146112ae5760405162461bcd60e51b81526004016108af90612dc1565b600a8211156113195760405162461bcd60e51b815260206004820152603160248201527f45524332303a204d6179206e6f74206e756b65206d6f7265207468616e203130604482015270025206f6620746f6b656e7320696e204c5607c1b60648201526084016108af565b600c546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa158015611364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113889190612e74565b9050600061139b60646110528487611a2e565b905080156113c057600c54600b546113c0916001600160a01b03908116911683611a4d565b600b546113d5906001600160a01b03166111ac565b60135560646113e66012600a612d9b565b6113f59064e8d4a51000612daa565b611400906032612daa565b61140a9190612e52565b601354111561146f5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a2043616e206e6f74206275726e206d6f7265207468656e20353060448201526a25206f6620737570706c7960a81b60648201526084016108af565b600c546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b1580156114b957600080fd5b505af11580156114cd573d6000803e3d6000fd5b50505050600193505050505b919050565b6000546001600160a01b031633146115085760405162461bcd60e51b81526004016108af90612dc1565b601e80549115156101000261ff0019909216919091179055565b6000546001600160a01b0316331461154c5760405162461bcd60e51b81526004016108af90612dc1565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115a15760405162461bcd60e51b81526004016108af90612dc1565b601793909355601891909155601955601b55565b6000546001600160a01b031633146115df5760405162461bcd60e51b81526004016108af90612dc1565b60006115ea306111ac565b9050611603612710611052600561103d6012600a612d9b565b8110156116895760405162461bcd60e51b815260206004820152604860248201527f45524332303a2043616e206f6e6c792073776170206261636b206966206d6f7260448201527f65207468616e20302e303525206f6620746f6b656e7320737475636b206f6e2060648201526718dbdb9d1c9858dd60c21b608482015260a4016108af565b6110f6612355565b600061169e338484611a4d565b50600192915050565b6000546001600160a01b031633146116d15760405162461bcd60e51b81526004016108af90612dc1565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117265760405162461bcd60e51b81526004016108af90612dc1565b601e8054911515650100000000000265ff000000000019909216919091179055565b6000546001600160a01b031633146117725760405162461bcd60e51b81526004016108af90612dc1565b6001600160a01b0381166117dc5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016108af565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118615760405162461bcd60e51b81526004016108af90612dc1565b611875816110528461103d6012600a612d9b565b600f5561188d60646110528161103d6012600a612d9b565b600f5411156118f15760405162461bcd60e51b815260206004820152602a60248201527f45524332303a2043616e206e6f7420736574206d61782077616c6c6574206d6f6044820152697265207468616e20342560b01b60648201526084016108af565b5050565b6000546001600160a01b0316331461191f5760405162461bcd60e51b81526004016108af90612dc1565b600080546040516001600160a01b039091169047908381818185875af1925050503d806000811461196c576040519150601f19603f3d011682016040523d82523d6000602084013e611971565b606091505b50505050565b6000546001600160a01b031633146119a15760405162461bcd60e51b81526004016108af90612dc1565b6001600160a01b03811660009081526007602052604090205460ff1615611a0a5760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e7420616c72656164792061646465640000000060448201526064016108af565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000611a3a8284612daa565b9392505050565b6000611a3a8284612e52565b6001600160a01b038316611ab15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108af565b6001600160a01b038216611b135760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108af565b60008111611b7c5760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016108af565b6001600160a01b03831660009081526007602052604090205460ff1615611be55760405162461bcd60e51b815260206004820181905260248201527f45524332303a2043616e206e6f74207472616e736665722066726f6d20424f5460448201526064016108af565b601e5462010000900460ff16611c80576001600160a01b03831660009081526005602052604090205460ff1680611c3457506001600160a01b03821660009081526005602052604090205460ff165b611c805760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164696e67204973204e6f74204c69766521000000000060448201526064016108af565b601e5460ff6101009091041615156001148015611cb657506001600160a01b03821660009081526004602052604090205460ff16155b15611d3657600f54611cd182611ccb856111ac565b90612295565b1115611d365760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204d617820616d6f756e74206f6620746f6b656e7320666f722060448201526d1dd85b1b195d081c995858da195960921b60648201526084016108af565b601e5460ff1615611e11576000546001600160a01b03848116911614801590611d6d57506000546001600160a01b03838116911614155b8015611d8157506001600160a01b03821615155b8015611d9b5750600b546001600160a01b03838116911614155b8015611db55750600c546001600160a01b03838116911614155b15611e115760005b6003811015611e0f57601c54611dd39082612295565b4303611dfd576001600160a01b0383166000908152600660205260409020805460ff191660011790555b80611e0781612e39565b915050611dbd565b505b601e546301000000900460ff1615611ef457611e2c82610943565b158015611e5157506001600160a01b03831660009081526003602052604090205460ff165b80611e855750611e6083610943565b158015611e8557506001600160a01b03821660009081526003602052604090205460ff165b80611eb85750611e9483610943565b8015611eb857506001600160a01b03821660009081526003602052604090205460ff165b80611eeb5750611ec782610943565b8015611eeb57506001600160a01b03831660009081526003602052604090205460ff165b611ef457600080fd5b6000611f0d60115460125461229590919063ffffffff16565b90506000611f1a306111ac565b601054601e5491925082101590640100000000900460ff16158015611f4a5750601e5465010000000000900460ff165b8015611f6b5750600c54600090611f69906001600160a01b03166111ac565b115b8015611f775750600083115b8015611f9c57506001600160a01b03851660009081526005602052604090205460ff16155b8015611fc157506001600160a01b03861660009081526005602052604090205460ff16155b8015611fda5750600c546001600160a01b038681169116145b8015611fe35750805b15611ff057611ff0612355565b6001600160a01b03861660009081526005602052604090205460ff168061202f57506001600160a01b03851660009081526005602052604090205460ff165b156120525760006014819055601581905561204a9080612295565b6016556121a8565b600c546001600160a01b0390811690871603612082576017546014819055601854601581905561204a9190612295565b600c546001600160a01b0390811690861603612101576019546014819055601b5460158190556120b29190612295565b6016556001600160a01b03861660009081526006602052604090205460ff1680156120df575042601d5410155b156120fc5760556014819055600a601581905561204a9190612295565b6121a8565b6001600160a01b03861660009081526006602052604090205460ff16158061212b575042601d5411155b61219d5760405162461bcd60e51b815260206004820152603960248201527f45524332303a20536e69706572732063616e206e6f74207472616e736665722060448201527f74696c6c2070656e616c74792074696d65206973206f7665720000000000000060648201526084016108af565b600060148190556015555b6121b3868686612501565b505050505050565b600081848411156121df5760405162461bcd60e51b81526004016108af9190612888565b505050900390565b6001600160a01b03831661220d5760405162461bcd60e51b81526004016108af90612c13565b6001600160a01b0382166122335760405162461bcd60e51b81526004016108af90612c5b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000611a3a8284612e8d565b600d546122b99030906001600160a01b0316846121e7565b600d5460085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612329573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061234e9190612ea0565b5050505050565b601e805464ff0000000019166401000000001790556000612375306111ac565b9050600061239060125460115461229590919063ffffffff16565b905060006123aa6002601254611a4190919063ffffffff16565b905060006123b884836126a2565b9050476123c4826126ae565b60006123d047836126a2565b905060006123ed8661105260115485611a2e90919063ffffffff16565b905060006123fb83836126a2565b60006011819055601281905560095460405192935090916001600160a01b039091169084908381818185875af1925050503d8060008114612458576040519150601f19603f3d011682016040523d82523d6000602084013e61245d565b606091505b505090508160001415801561247157508615155b156124805761248087836122a1565b6706f05b59d3b200004711156124e857600a546040516001600160a01b03909116904790600081818185875af1925050503d80600081146124dd576040519150601f19603f3d011682016040523d82523d6000602084013e6124e2565b606091505b50909150505b5050601e805464ff000000001916905550505050505050565b6016541561260157600061251482612800565b9050600061252283836126a2565b905061252d82612828565b6001600160a01b03851660009081526002602052604081208054859290612555908490612ece565b90915550506001600160a01b03841660009081526002602052604081208054839290612582908490612e8d565b909155505030600090815260026020526040812080548492906125a6908490612e8d565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125f291815260200190565b60405180910390a35050505050565b6001600160a01b03831660009081526002602052604081208054839290612629908490612ece565b90915550506001600160a01b03821660009081526002602052604081208054839290612656908490612e8d565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161228891815260200190565b6000611a3a8284612ece565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126e3576126e3612e23565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561273c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127609190612e06565b8160018151811061277357612773612e23565b6001600160a01b039283166020918202929092010152600d5461279991309116846121e7565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906127d2908590600090869030904290600401612ee1565b600060405180830381600087803b1580156127ec57600080fd5b505af11580156121b3573d6000803e3d6000fd5b600061093d606461105261282160155460145461229590919063ffffffff16565b8590611a2e565b61284360165461105260145484611a2e90919063ffffffff16565b601160008282546128549190612e8d565b909155505060165460155461286f9190611052908490611a2e565b601260008282546128809190612e8d565b909155505050565b600060208083528351808285015260005b818110156128b557858101830151858201604001528201612899565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146110f657600080fd5b600080604083850312156128fe57600080fd5b8235612909816128d6565b946020939093013593505050565b60006020828403121561292957600080fd5b8135611a3a816128d6565b803580151581146114d957600080fd5b60006020828403121561295657600080fd5b611a3a82612934565b60008060006060848603121561297457600080fd5b833561297f816128d6565b9250602084013561298f816128d6565b929592945050506040919091013590565b600080604083850312156129b357600080fd5b82356129be816128d6565b91506129cc60208401612934565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a1457612a146129d5565b604052919050565b600067ffffffffffffffff821115612a3657612a366129d5565b5060051b60200190565b600082601f830112612a5157600080fd5b81356020612a66612a6183612a1c565b6129eb565b82815260059290921b84018101918181019086841115612a8557600080fd5b8286015b84811015612aa05780358352918301918301612a89565b509695505050505050565b60008060408385031215612abe57600080fd5b823567ffffffffffffffff80821115612ad657600080fd5b818501915085601f830112612aea57600080fd5b81356020612afa612a6183612a1c565b82815260059290921b84018101918181019089841115612b1957600080fd5b948201945b83861015612b40578535612b31816128d6565b82529482019490820190612b1e565b96505086013592505080821115612b5657600080fd5b50612b6385828601612a40565b9150509250929050565b600060208284031215612b7f57600080fd5b5035919050565b60008060008060808587031215612b9c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215612bcb57600080fd5b8235612bd6816128d6565b91506020830135612be6816128d6565b809150509250929050565b60008060408385031215612c0457600080fd5b50508035926020909101359150565b60208082526028908201527f45524332303a2043616e206e6f7420617070726f76652066726f6d207a65726f604082015267206164647265737360c01b606082015260800190565b60208082526026908201527f45524332303a2043616e206e6f7420617070726f766520746f207a65726f206160408201526564647265737360d01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612cf2578160001904821115612cd857612cd8612ca1565b80851615612ce557918102915b93841c9390800290612cbc565b509250929050565b600082612d095750600161093d565b81612d165750600061093d565b8160018114612d2c5760028114612d3657612d52565b600191505061093d565b60ff841115612d4757612d47612ca1565b50506001821b61093d565b5060208310610133831016604e8410600b8410161715612d75575081810a61093d565b612d7f8383612cb7565b8060001904821115612d9357612d93612ca1565b029392505050565b6000611a3a60ff841683612cfa565b808202811582820484141761093d5761093d612ca1565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b600060208284031215612e1857600080fd5b8151611a3a816128d6565b634e487b7160e01b600052603260045260246000fd5b600060018201612e4b57612e4b612ca1565b5060010190565b600082612e6f57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612e8657600080fd5b5051919050565b8082018082111561093d5761093d612ca1565b600080600060608486031215612eb557600080fd5b8351925060208401519150604084015190509250925092565b8181038181111561093d5761093d612ca1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612f315784516001600160a01b031683529383019391830191600101612f0c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a2043616e206e6f74207472616e736665722e20416d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122042c91588521d7f2e1a450892e8a06e9db162d6f463fb4add7f52c3535bfd441464736f6c63430008110033
Deployed Bytecode Sourcemap
18594:17215:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21684:98;;;;;;;;;;-1:-1:-1;21765:9:0;;;;;;;;;;;;-1:-1:-1;;;21765:9:0;;;;21684:98;;;;;;;:::i;:::-;;;;;;;;22389:397;;;;;;;;;;-1:-1:-1;22389:397:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;22389:397:0;1023:187:1;19253:40:0;;;;;;;;;;-1:-1:-1;19253:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;35583:223;;;;;;;;;;-1:-1:-1;35732:15:0;;35748;;35764:16;;35781;;35583:223;;;1698:25:1;;;1754:2;1739:18;;1732:34;;;;1782:18;;;1775:34;1840:2;1825:18;;1818:34;1685:3;1670:19;35583:223:0;1467:391:1;31607:337:0;;;;;;;;;;-1:-1:-1;31607:337:0;;;;;:::i;:::-;;:::i;21999:101::-;;;;;;;;;;;;;:::i;:::-;;;2009:25:1;;;1997:2;1982:18;21999:101:0;1863:177:1;34773:103:0;;;;;;;;;;-1:-1:-1;34773:103:0;;;;;:::i;:::-;;:::i;:::-;;20169:28;;;;;;;;;;-1:-1:-1;20169:28:0;;;;;;;;23333:348;;;;;;;;;;-1:-1:-1;23333:348:0;;;;;:::i;:::-;;:::i;21896:97::-;;;;;;;;;;-1:-1:-1;21896:97:0;;18869:2;2998:36:1;;2986:2;2971:18;21896:97:0;2856:184:1;33852:171:0;;;;;;;;;;-1:-1:-1;33852:171:0;;;;;:::i;:::-;;:::i;24122:1249::-;;;;;;;;;;;;;:::i;19300:37::-;;;;;;;;;;-1:-1:-1;19300:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;34347:158;;;;;;;;;;-1:-1:-1;34347:158:0;;;;;:::i;:::-;;:::i;23687:429::-;;;;;;;;;;-1:-1:-1;23687:429:0;;;;;:::i;:::-;;:::i;32393:149::-;;;;;;;;;;-1:-1:-1;32393:149:0;;;;;:::i;:::-;;:::i;19569:26::-;;;;;;;;;;-1:-1:-1;19569:26:0;;;;-1:-1:-1;;;;;19569:26:0;;;;;;-1:-1:-1;;;;;6201:32:1;;;6183:51;;6171:2;6156:18;19569:26:0;6037:203:1;33690:159:0;;;;;;;;;;-1:-1:-1;33690:159:0;;;;;:::i;:::-;;:::i;22106:122::-;;;;;;;;;;-1:-1:-1;22106:122:0;;;;;:::i;:::-;;:::i;1208:148::-;;;;;;;;;;;;;:::i;20204:31::-;;;;;;;;;;-1:-1:-1;20204:31:0;;;;;;;;;;;34996:119;;;;;;;;;;-1:-1:-1;34996:119:0;;;;;:::i;:::-;;:::i;32548:686::-;;;;;;;;;;-1:-1:-1;32548:686:0;;;;;:::i;:::-;;:::i;19494:24::-;;;;;;;;;;-1:-1:-1;19494:24:0;;;;-1:-1:-1;;;;;19494:24:0;;;34882:108;;;;;;;;;;-1:-1:-1;34882:108:0;;;;;:::i;:::-;;:::i;984:87::-;;;;;;;;;;-1:-1:-1;1030:7:0;1057:6;-1:-1:-1;;;;;1057:6:0;984:87;;34029:160;;;;;;;;;;-1:-1:-1;34029:160:0;;;;;:::i;:::-;;:::i;20242:24::-;;;;;;;;;;-1:-1:-1;20242:24:0;;;;;;;;;;;19525:37;;;;;;;;;;-1:-1:-1;19525:37:0;;;;-1:-1:-1;;;;;19525:37:0;;;21788:102;;;;;;;;;;-1:-1:-1;21871:11:0;;;;;;;;;;;;-1:-1:-1;;;21871:11:0;;;;21788:102;;20273:35;;;;;;;;;;-1:-1:-1;20273:35:0;;;;;;;;;;;35250:327;;;;;;;;;;-1:-1:-1;35250:327:0;;;;;:::i;:::-;;:::i;32098:126::-;;;;;;;;;;-1:-1:-1;32098:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;32188:28:0;32164:4;32188:28;;;:19;:28;;;;;;;;;32098:126;33240:282;;;;;;;;;;;;;:::i;23151:176::-;;;;;;;;;;-1:-1:-1;23151:176:0;;;;;:::i;:::-;;:::i;34195:146::-;;;;;;;;;;-1:-1:-1;34195:146:0;;;;;:::i;:::-;;:::i;22234:149::-;;;;;;;;;;-1:-1:-1;22234:149:0;;;;;:::i;:::-;-1:-1:-1;;;;;22344:22:0;;;22317:7;22344:22;;;:15;:22;;;;;;;;:31;;;;;;;;;;;;;22234:149;20089:33;;;;;;;;;;;;;;;;35121:123;;;;;;;;;;-1:-1:-1;35121:123:0;;;;;:::i;:::-;;:::i;20129:31::-;;;;;;;;;;;;;;;;1362:249;;;;;;;;;;-1:-1:-1;1362:249:0;;;;;:::i;:::-;;:::i;34511:256::-;;;;;;;;;;-1:-1:-1;34511:256:0;;;;;:::i;:::-;;:::i;32230:157::-;;;;;;;;;;;;;:::i;33528:159::-;;;;;;;;;;-1:-1:-1;33528:159:0;;;;;:::i;:::-;;:::i;22389:397::-;22464:4;643:10;22481:79;;;;-1:-1:-1;;;22481:79:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;22579:21:0;;22571:72;;;;-1:-1:-1;;;22571:72:0;;;;;;;:::i;:::-;643:10;22654:29;;;;:15;:29;;;;;;;;-1:-1:-1;;;;;22654:38:0;;;;;;;;;;;;:47;;;22717:39;2009:25:1;;;22654:38:0;;643:10;22717:39;;1982:18:1;22717:39:0;;;;;;;-1:-1:-1;22774:4:0;22389:397;;;;;:::o;31607:337::-;31665:4;31844:20;;31731:66;31893:23;;;;;;:42;;-1:-1:-1;31920:15:0;;;31893:42;31885:51;31607:337;-1:-1:-1;;;;31607:337:0:o;21999:101::-;22054:7;18924:16;18869:2;18924;:16;:::i;:::-;18917:23;;:4;:23;:::i;:::-;22074:18;;21999:101;:::o;34773:103::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;34846:8:::1;:22:::0;;-1:-1:-1;;34846:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34773:103::o;23333:348::-;23431:4;23448:43;23465:6;23473:9;23484:6;23448:16;:43::i;:::-;23502:149;23518:6;643:10;23548:102;23590:6;23548:102;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23548:23:0;;;;;;:15;:23;;;;;;;;643:10;23548:37;;;;;;;;;;:41;:102::i;:::-;23502:15;:149::i;:::-;-1:-1:-1;23669:4:0;23333:348;;;;;:::o;33852:171::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33929:17:0;::::1;;::::0;;;:8:::1;:17;::::0;;;;;::::1;;33921:58;;;::::0;-1:-1:-1;;;33921:58:0;;10628:2:1;33921:58:0::1;::::0;::::1;10610:21:1::0;10667:2;10647:18;;;10640:30;10706;10686:18;;;10679:58;10754:18;;33921:58:0::1;10426:352:1::0;33921:58:0::1;-1:-1:-1::0;;;;;33990:17:0::1;34010:5;33990:17:::0;;;:8:::1;:17;::::0;;;;:25;;-1:-1:-1;;33990:25:0::1;::::0;;33852:171::o;24122:1249::-;24168:4;1057:6;;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;24193:4:::1;::::0;;;::::1;;;24192:5;24184:45;;;::::0;-1:-1:-1;;;24184:45:0;;10985:2:1;24184:45:0::1;::::0;::::1;10967:21:1::0;11024:2;11004:18;;;10997:30;11063:29;11043:18;;;11036:57;11110:18;;24184:45:0::1;10783:351:1::0;24184:45:0::1;24261:12;24240:18;:33:::0;24303:27:::1;:15;24323:6;24303:19;:27::i;:::-;24284:16;:46:::0;24448:11:::1;:26:::0;;-1:-1:-1;;;;;;24448:26:0;;::::1;24394:42;24448:26:::0;;::::1;::::0;;;24485:11:::1;:56:::0;;;;::::1;24499:42;24485:56;::::0;;24552:41;:48;;-1:-1:-1;;24552:48:0;;::::1;24448:26:::0;24552:48;;::::1;::::0;;;24611:41;:48;;;::::1;::::0;::::1;::::0;;24341:31:::1;24670:41:::0;;;:19:::1;24552:41;24670::::0;;:48;;;;::::1;::::0;;::::1;::::0;;24729:65:::1;24753:4;24394:42:::0;18924:16:::1;18869:2;18924;:16;:::i;:::-;18917:23;::::0;:4:::1;:23;:::i;24729:65::-;24835:12;-1:-1:-1::0;;;;;24835:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24817:52:0::1;;24878:4;24885:12;-1:-1:-1::0;;;;;24885:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24817:88;::::0;-1:-1:-1;;;;;;24817:88:0::1;::::0;;;;;;-1:-1:-1;;;;;11625:15:1;;;24817:88:0::1;::::0;::::1;11607:34:1::0;11677:15;;11657:18;;;11650:43;11542:18;;24817:88:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24805:9;:100:::0;;-1:-1:-1;;;;;;24805:100:0::1;-1:-1:-1::0;;;;;24805:100:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;24916:39:0;;;:19:::1;:39;::::0;;;;;;;:46;;-1:-1:-1;;24916:46:0;;::::1;-1:-1:-1::0;24916:46:0;;::::1;::::0;;;25001:9;;;;::::1;24973:39:::0;;:19:::1;:39:::0;;;;;:46;;;;::::1;::::0;;::::1;::::0;;25038:21:::1;25030:82;;;::::0;-1:-1:-1;;;25030:82:0;;11906:2:1;25030:82:0::1;::::0;::::1;11888:21:1::0;11945:2;11925:18;;;11918:30;11984:34;11964:18;;;11957:62;-1:-1:-1;;;12035:18:1;;;12028:42;12087:19;;25030:82:0::1;11704:408:1::0;25030:82:0::1;25123:61;25136:24;25154:4;25136:9;:24::i;:::-;25162:21;25123:12;:61::i;:::-;25221:4;::::0;31507:16;:37;;-1:-1:-1;;;;;;31507:37:0;-1:-1:-1;;;;;25221:4:0;;::::1;31507:37:::0;;;;;-1:-1:-1;31555:31:0;;;:13;:31;;;;;:38;;-1:-1:-1;;31555:38:0;-1:-1:-1;31555:38:0;;;-1:-1:-1;;25237:11:0::1;:18:::0;;-1:-1:-1;;25330:11:0;;;;;-1:-1:-1;;24122:1249:0:o;34347:158::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34446:37:0;;;::::1;;::::0;;;:19:::1;:37;::::0;;;;:51;;-1:-1:-1;;34446:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34347:158::o;23687:429::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;23810:3:::1;23793:7;:14;:20;23785:87;;;::::0;-1:-1:-1;;;23785:87:0;;12319:2:1;23785:87:0::1;::::0;::::1;12301:21:1::0;12358:2;12338:18;;;12331:30;12397:34;12377:18;;;12370:62;-1:-1:-1;;;12448:18:1;;;12441:52;12510:19;;23785:87:0::1;12117:418:1::0;23785:87:0::1;23887:9;23883:226;23906:7;:14;23902:1;:18;23883:226;;;23941:14;23958:7;23966:1;23958:10;;;;;;;;:::i;:::-;;;;;;;23941:27;;23983:14;24000:36;24032:3;24000:27;24016:7;24024:1;24016:10;;;;;;;;:::i;:::-;;;;;;;18869:2;18924;:16;;;;:::i;:::-;18917:23;::::0;:4:::1;:23;:::i;:::-;24000:15:::0;::::1;:27::i;:::-;:31:::0;::::1;:36::i;:::-;23983:53:::0;-1:-1:-1;24051:46:0::1;643:10:::0;24082:6:::1;24090;24051:16;:46::i;:::-;23926:183;;23922:3;;;;;:::i;:::-;;;;23883:226;;;;23687:429:::0;;:::o;32393:149::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;32469:65:::1;32494:4;32501:7;1030::::0;1057:6;-1:-1:-1;;;;;1057:6:0;;984:87;32501:7:::1;32530:3;32522:7:::0;18924:16:::1;18869:2;18924;:16;:::i;:::-;18917:23;::::0;:4:::1;:23;:::i;:::-;32510:19;;;;:::i;:::-;:23;;;;:::i;:::-;32469:16;:65::i;:::-;32393:149:::0;:::o;33690:159::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33764:14:0;::::1;;::::0;;;:5:::1;:14;::::0;;;;;::::1;;33756:52;;;::::0;-1:-1:-1;;;33756:52:0;;13236:2:1;33756:52:0::1;::::0;::::1;13218:21:1::0;13275:2;13255:18;;;13248:30;13314:27;13294:18;;;13287:55;13359:18;;33756:52:0::1;13034:349:1::0;33756:52:0::1;-1:-1:-1::0;;;;;33819:14:0::1;33836:5;33819:14:::0;;;:5:::1;:14;::::0;;;;:22;;-1:-1:-1;;33819:22:0::1;::::0;;33690:159::o;22106:122::-;-1:-1:-1;;;;;22199:21:0;22172:7;22199:21;;;:12;:21;;;;;;;22106:122::o;1208:148::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;1315:1:::1;1299:6:::0;;1278:40:::1;::::0;-1:-1:-1;;;;;1299:6:0;;::::1;::::0;1278:40:::1;::::0;1315:1;;1278:40:::1;1346:1;1329:19:::0;;-1:-1:-1;;;;;;1329:19:0::1;::::0;;1208:148::o;34996:119::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;35078:15:::1;:29:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;35078:29:0;;::::1;::::0;;;::::1;::::0;;34996:119::o;32548:686::-;32625:4;1057:6;;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;32660:2:::1;32649:7;:13;;32641:75;;;::::0;-1:-1:-1;;;32641:75:0;;13590:2:1;32641:75:0::1;::::0;::::1;13572:21:1::0;13629:2;13609:18;;;13602:30;13668:34;13648:18;;;13641:62;-1:-1:-1;;;13719:18:1;;;13712:47;13776:19;;32641:75:0::1;13388:413:1::0;32641:75:0::1;32773:9;::::0;32758:25:::1;::::0;-1:-1:-1;;;32758:25:0;;-1:-1:-1;;;;;32773:9:0;;::::1;32758:25;::::0;::::1;6183:51:1::0;32727:28:0::1;::::0;32758:4:::1;::::0;:14:::1;::::0;6156:18:1;;32758:25:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32727:56:::0;-1:-1:-1;32794:20:0::1;32817:44;32855:5;32817:33;32727:56:::0;32842:7;32817:24:::1;:33::i;:44::-;32794:67:::0;-1:-1:-1;32876:16:0;;32872:95:::1;;32925:9;::::0;32936:4:::1;::::0;32908:47:::1;::::0;-1:-1:-1;;;;;32925:9:0;;::::1;::::0;32936:4:::1;32942:12:::0;32908:16:::1;:47::i;:::-;33007:4;::::0;32997:15:::1;::::0;-1:-1:-1;;;;;33007:4:0::1;32997:9;:15::i;:::-;32977:17;:35:::0;33071:5:::1;18924:16;18869:2;18924;:16;:::i;:::-;18917:23;::::0;:4:::1;:23;:::i;:::-;33052:16;::::0;33066:2:::1;33052:16;:::i;:::-;:24;;;;:::i;:::-;33031:17;;:45;;33023:101;;;::::0;-1:-1:-1;;;33023:101:0;;14197:2:1;33023:101:0::1;::::0;::::1;14179:21:1::0;14236:2;14216:18;;;14209:30;14275:34;14255:18;;;14248:62;-1:-1:-1;;;14326:18:1;;;14319:41;14377:19;;33023:101:0::1;13995:407:1::0;33023:101:0::1;33172:9;::::0;33193:11:::1;::::0;;-1:-1:-1;;;;;;33193:11:0;;;;-1:-1:-1;;;;;33172:9:0;;::::1;::::0;;;33193::::1;::::0;:11:::1;::::0;;::::1;::::0;33135:19:::1;::::0;33193:11;;;;;;;33135:19;33172:9;33193:11;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33222:4;33215:11;;;;;1193:1;32548:686:::0;;;:::o;34882:108::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;34957:11:::1;:25:::0;;;::::1;;;;-1:-1:-1::0;;34957:25:0;;::::1;::::0;;;::::1;::::0;;34882:108::o;34029:160::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34130:37:0;;;::::1;;::::0;;;:19:::1;:37;::::0;;;;:51;;-1:-1:-1;;34130:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34029:160::o;35250:327::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;35400:15:::1;:33:::0;;;;35444:15:::1;:33:::0;;;;35488:16:::1;:35:::0;35534:16:::1;:35:::0;35250:327::o;33240:282::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;33295:23:::1;33321:24;33339:4;33321:9;:24::i;:::-;33295:50:::0;-1:-1:-1;33383:29:0::1;33406:5;33383:18;33399:1;18924:16;18869:2;18924;:16;:::i;33383:29::-;33364:15;:48;;33356:133;;;::::0;-1:-1:-1;;;33356:133:0;;14609:2:1;33356:133:0::1;::::0;::::1;14591:21:1::0;14648:2;14628:18;;;14621:30;14687:34;14667:18;;;14660:62;14758:34;14738:18;;;14731:62;-1:-1:-1;;;14809:19:1;;;14802:39;14858:19;;33356:133:0::1;14407:476:1::0;33356:133:0::1;33500:14;:12;:14::i;23151:176::-:0;23231:4;23248:49;643:10;23279:9;23290:6;23248:16;:49::i;:::-;-1:-1:-1;23315:4:0;23151:176;;;;:::o;34195:146::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34288:31:0;;;::::1;;::::0;;;:13:::1;:31;::::0;;;;:45;;-1:-1:-1;;34288:45:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34195:146::o;35121:123::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;35202:20:::1;:34:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;35202:34:0;;::::1;::::0;;;::::1;::::0;;35121:123::o;1362:249::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1451:22:0;::::1;1443:78;;;::::0;-1:-1:-1;;;1443:78:0;;15090:2:1;1443:78:0::1;::::0;::::1;15072:21:1::0;15129:2;15109:18;;;15102:30;15168:34;15148:18;;;15141:62;-1:-1:-1;;;15219:18:1;;;15212:41;15270:19;;1443:78:0::1;14888:407:1::0;1443:78:0::1;1558:6;::::0;;1537:38:::1;::::0;-1:-1:-1;;;;;1537:38:0;;::::1;::::0;1558:6;::::1;::::0;1537:38:::1;::::0;::::1;1586:6;:17:::0;;-1:-1:-1;;;;;;1586:17:0::1;-1:-1:-1::0;;;;;1586:17:0;;;::::1;::::0;;;::::1;::::0;;1362:249::o;34511:256::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;34615:37:::1;34644:7:::0;34615:24:::1;34631:7:::0;18924:16:::1;18869:2;18924;:16;:::i;34615:37::-;34603:9;:49:::0;34683:29:::1;34708:3;34683:20;34708:3:::0;18924:16:::1;18869:2;18924;:16;:::i;34683:29::-;34671:9;;:41;;34663:96;;;::::0;-1:-1:-1;;;34663:96:0;;15502:2:1;34663:96:0::1;::::0;::::1;15484:21:1::0;15541:2;15521:18;;;15514:30;15580:34;15560:18;;;15553:62;-1:-1:-1;;;15631:18:1;;;15624:40;15681:19;;34663:96:0::1;15300:406:1::0;34663:96:0::1;34511:256:::0;;:::o;32230:157::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;32288:12:::1;1057:6:::0;;32324:55:::1;::::0;-1:-1:-1;;;;;1057:6:0;;;;32353:21:::1;::::0;32288:12;32324:55;32288:12;32324:55;32353:21;1057:6;32324:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;32230:157:0:o;33528:159::-;1030:7;1057:6;-1:-1:-1;;;;;1057:6:0;643:10;1117:23;1109:73;;;;-1:-1:-1;;;1109:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33600:14:0;::::1;;::::0;;;:5:::1;:14;::::0;;;;;::::1;;33599:15;33591:56;;;::::0;-1:-1:-1;;;33591:56:0;;16123:2:1;33591:56:0::1;::::0;::::1;16105:21:1::0;16162:2;16142:18;;;16135:30;16201;16181:18;;;16174:58;16249:18;;33591:56:0::1;15921:352:1::0;33591:56:0::1;-1:-1:-1::0;;;;;33658:14:0::1;;::::0;;;:5:::1;:14;::::0;;;;:21;;-1:-1:-1;;33658:21:0::1;33675:4;33658:21;::::0;;33528:159::o;3187:98::-;3245:7;3272:5;3276:1;3272;:5;:::i;:::-;3265:12;3187:98;-1:-1:-1;;;3187:98:0:o;3291:::-;3349:7;3376:5;3380:1;3376;:5;:::i;25377:3038::-;-1:-1:-1;;;;;25473:18:0;;25465:68;;;;-1:-1:-1;;;25465:68:0;;16480:2:1;25465:68:0;;;16462:21:1;16519:2;16499:18;;;16492:30;16558:34;16538:18;;;16531:62;-1:-1:-1;;;16609:18:1;;;16602:35;16654:19;;25465:68:0;16278:401:1;25465:68:0;-1:-1:-1;;;;;25552:16:0;;25544:64;;;;-1:-1:-1;;;25544:64:0;;16886:2:1;25544:64:0;;;16868:21:1;16925:2;16905:18;;;16898:30;16964:34;16944:18;;;16937:62;-1:-1:-1;;;17015:18:1;;;17008:33;17058:19;;25544:64:0;16684:399:1;25544:64:0;25636:1;25627:6;:10;25619:71;;;;-1:-1:-1;;;25619:71:0;;17290:2:1;25619:71:0;;;17272:21:1;17329:2;17309:18;;;17302:30;17368:34;17348:18;;;17341:62;-1:-1:-1;;;17419:18:1;;;17412:46;17475:19;;25619:71:0;17088:412:1;25619:71:0;-1:-1:-1;;;;;25710:11:0;;;;;;:5;:11;;;;;;;;25709:12;25701:57;;;;-1:-1:-1;;;25701:57:0;;17707:2:1;25701:57:0;;;17689:21:1;;;17726:18;;;17719:30;17785:34;17765:18;;;17758:62;17837:18;;25701:57:0;17505:356:1;25701:57:0;25773:4;;;;;;;25769:116;;-1:-1:-1;;;;;25801:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;25824:17:0;;;;;;:13;:17;;;;;;;;25801:40;25793:80;;;;-1:-1:-1;;;25793:80:0;;18068:2:1;25793:80:0;;;18050:21:1;18107:2;18087:18;;;18080:30;18146:29;18126:18;;;18119:57;18193:18;;25793:80:0;17866:351:1;25793:80:0;25899:11;;;;;;;;:19;;:11;:19;:48;;;;-1:-1:-1;;;;;;25924:23:0;;;;;;:19;:23;;;;;;;;25922:25;25899:48;25895:178;;;26001:9;;25972:25;25990:6;25972:13;25982:2;25972:9;:13::i;:::-;:17;;:25::i;:::-;:38;;25964:97;;;;-1:-1:-1;;;25964:97:0;;18424:2:1;25964:97:0;;;18406:21:1;18463:2;18443:18;;;18436:30;18502:34;18482:18;;;18475:62;-1:-1:-1;;;18553:18:1;;;18546:44;18607:19;;25964:97:0;18222:410:1;25964:97:0;26086:8;;;;26083:350;;;1030:7;1057:6;-1:-1:-1;;;;;26114:15:0;;;1057:6;;26114:15;;;;:32;;-1:-1:-1;1030:7:0;1057:6;-1:-1:-1;;;;;26133:13:0;;;1057:6;;26133:13;;26114:32;:52;;;;-1:-1:-1;;;;;;26150:16:0;;;;26114:52;:66;;;;-1:-1:-1;26176:4:0;;-1:-1:-1;;;;;26170:10:0;;;26176:4;;26170:10;;26114:66;:85;;;;-1:-1:-1;26190:9:0;;-1:-1:-1;;;;;26184:15:0;;;26190:9;;26184:15;;26114:85;26110:312;;;26225:6;26220:187;26241:1;26237;:5;26220:187;;;26291:18;;:25;;26314:1;26291:22;:25::i;:::-;26275:12;:41;26272:116;;-1:-1:-1;;;;;26345:12:0;;;;;;:8;:12;;;;;:19;;-1:-1:-1;;26345:19:0;26360:4;26345:19;;;26272:116;26244:3;;;;:::i;:::-;;;;26220:187;;;;26110:312;26446:15;;;;;;;26443:331;;;26505:14;26516:2;26505:10;:14::i;:::-;26504:15;:44;;;;-1:-1:-1;;;;;;26523:25:0;;;;;;:19;:25;;;;;;;;26504:44;:109;;;;26570:16;26581:4;26570:10;:16::i;:::-;26569:17;:44;;;;-1:-1:-1;;;;;;26590:23:0;;;;;;:19;:23;;;;;;;;26569:44;26504:174;;;;26635:16;26646:4;26635:10;:16::i;:::-;:43;;;;-1:-1:-1;;;;;;26655:23:0;;;;;;:19;:23;;;;;;;;26635:43;26504:239;;;;26700:14;26711:2;26700:10;:14::i;:::-;:43;;;;-1:-1:-1;;;;;;26718:25:0;;;;;;:19;:25;;;;;;;;26700:43;26478:284;;;;;;26784:25;26812:36;26832:15;;26812;;:19;;:36;;;;:::i;:::-;26784:64;;26859:28;26890:24;26908:4;26890:9;:24::i;:::-;26980:10;;27006:16;;26859:55;;-1:-1:-1;26956:34:0;;;;27006:16;;;;;27005:17;:41;;;;-1:-1:-1;27026:20:0;;;;;;;27005:41;:69;;;;-1:-1:-1;27060:9:0;;27073:1;;27050:20;;-1:-1:-1;;;;;27060:9:0;27050;:20::i;:::-;:24;27005:69;:94;;;;;27098:1;27078:17;:21;27005:94;:116;;;;-1:-1:-1;;;;;;27104:17:0;;;;;;:13;:17;;;;;;;;27103:18;27005:116;:140;;;;-1:-1:-1;;;;;;27126:19:0;;;;;;:13;:19;;;;;;;;27125:20;27005:140;:159;;;;-1:-1:-1;27155:9:0;;-1:-1:-1;;;;;27149:15:0;;;27155:9;;27149:15;27005:159;:186;;;;;27168:23;27005:186;27001:237;;;27208:14;:12;:14::i;:::-;-1:-1:-1;;;;;27252:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;27275:17:0;;;;;;:13;:17;;;;;;;;27252:40;27248:1118;;;27324:1;27309:12;:16;;;27340:12;:16;;;27388:30;;27324:1;27388:16;:30::i;:::-;27371:14;:47;27248:1118;;;27463:9;;-1:-1:-1;;;;;27463:9:0;;;27455:17;;;;27451:904;;27508:15;;27493:12;:30;;;27557:15;;27542:12;:30;;;27608:36;;27508:15;27608:19;:36::i;27451:904::-;27675:9;;-1:-1:-1;;;;;27675:9:0;;;27669:15;;;;27665:690;;27720:16;;27705:12;:31;;;27770:16;;27755:12;:31;;;27822:38;;27720:16;27822:20;:38::i;:::-;27805:14;:55;-1:-1:-1;;;;;27882:14:0;;;;;;:8;:14;;;;;;;;:53;;;;;27920:15;27900:16;;:35;;27882:53;27879:227;;;27974:2;27959:12;:17;;;28014:2;27999:12;:17;;;28056:30;;27974:2;28056:16;:30::i;27879:227::-;27665:690;;;-1:-1:-1;;;;;28154:14:0;;;;;;:8;:14;;;;;;;;28153:15;;:54;;;28192:15;28172:16;;:35;;28153:54;28145:124;;;;-1:-1:-1;;;28145:124:0;;18839:2:1;28145:124:0;;;18821:21:1;18878:2;18858:18;;;18851:30;18917:34;18897:18;;;18890:62;18988:27;18968:18;;;18961:55;19033:19;;28145:124:0;18637:421:1;28145:124:0;28303:1;28288:12;:16;;;28323:12;:16;27665:690;28376:31;28390:4;28396:2;28400:6;28376:13;:31::i;:::-;25454:2961;;;25377:3038;;;:::o;3499:206::-;3585:7;3646:12;3638:6;;;;3630:29;;;;-1:-1:-1;;;3630:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3681:5:0;;;3499:206::o;22792:353::-;-1:-1:-1;;;;;22891:19:0;;22883:72;;;;-1:-1:-1;;;22883:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22974:21:0;;22966:72;;;;-1:-1:-1;;;22966:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23049:22:0;;;;;;;:15;:22;;;;;;;;:31;;;;;;;;;;;;;:40;;;23105:32;;2009:25:1;;;23105:32:0;;1982:18:1;23105:32:0;;;;;;;;22792:353;;;:::o;2979:98::-;3037:7;3064:5;3068:1;3064;:5;:::i;30006:369::-;30127:11;;30088:65;;30112:4;;-1:-1:-1;;;;;30127:11:0;30141;30088:15;:65::i;:::-;30164:11;;30310:16;;30164:203;;-1:-1:-1;;;30164:203:0;;30232:4;30164:203;;;19542:34:1;19592:18;;;19585:34;;;30164:11:0;19635:18:1;;;19628:34;;;19678:18;;;19671:34;-1:-1:-1;;;;;30310:16:0;;;19721:19:1;;;19714:44;30341:15:0;19774:19:1;;;19767:35;30164:11:0;;;:27;;30199:9;;19476:19:1;;30164:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30006:369;;:::o;28421:1106::-;20425:16;:23;;-1:-1:-1;;20425:23:0;;;;;;28503:24:::1;28521:4;28503:9;:24::i;:::-;28477:50;;28538:25;28566:36;28586:15;;28566;;:19;;:36;;;;:::i;:::-;28538:64;;28613:27;28643:22;28663:1;28643:15;;:19;;:22;;;;:::i;:::-;28613:52:::0;-1:-1:-1;28676:26:0::1;28705:40;:15:::0;28613:52;28705:19:::1;:40::i;:::-;28676:69:::0;-1:-1:-1;28784:21:0::1;28816:36;28676:69:::0;28816:16:::1;:36::i;:::-;28864:18;28885:44;:21;28911:17:::0;28885:25:::1;:44::i;:::-;28864:65;;28940:23;28966:54;29002:17;28966:31;28981:15;;28966:10;:14;;:31;;;;:::i;:54::-;28940:80:::0;-1:-1:-1;29031:23:0::1;29057:31;:10:::0;28940:80;29057:14:::1;:31::i;:::-;29117:1;29099:15;:19:::0;;;29129:15:::1;:19:::0;;;29185:16:::1;::::0;29177:58:::1;::::0;29031:57;;-1:-1:-1;29117:1:0;;-1:-1:-1;;;;;29185:16:0;;::::1;::::0;29215:15;;29117:1;29177:58;29117:1;29177:58;29215:15;29185:16;29177:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29159:76;;;29249:15;29268:1;29249:20;;:48;;;;-1:-1:-1::0;29273:24:0;;::::1;29249:48;29246:130;;;29314:50;29327:19;29348:15;29314:12;:50::i;:::-;29413:8;29389:21;:32;29386:134;;;29458:10;::::0;29450:58:::1;::::0;-1:-1:-1;;;;;29458:10:0;;::::1;::::0;29482:21:::1;::::0;29450:58:::1;::::0;;;29482:21;29458:10;29450:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;29437:71:0;;-1:-1:-1;;29386:134:0::1;-1:-1:-1::0;;20471:16:0;:24;;-1:-1:-1;;20471:24:0;;;-1:-1:-1;;;;;;;28421:1106:0:o;30754:673::-;30849:14;;:19;30846:574;;30884:17;30904:20;30917:6;30904:12;:20::i;:::-;30884:40;-1:-1:-1;30939:22:0;30964:21;:6;30884:40;30964:10;:21::i;:::-;30939:46;;31000:25;31015:9;31000:14;:25::i;:::-;-1:-1:-1;;;;;31040:20:0;;;;;;:12;:20;;;;;:30;;31064:6;;31040:20;:30;;31064:6;;31040:30;:::i;:::-;;;;-1:-1:-1;;;;;;;31085:23:0;;;;;;:12;:23;;;;;:41;;31112:14;;31085:23;:41;;31112:14;;31085:41;:::i;:::-;;;;-1:-1:-1;;31162:4:0;31141:27;;;;:12;:27;;;;;:40;;31172:9;;31141:27;:40;;31172:9;;31141:40;:::i;:::-;;;;;;;;31218:9;-1:-1:-1;;;;;31201:43:0;31210:6;-1:-1:-1;;;;;31201:43:0;;31229:14;31201:43;;;;2009:25:1;;1997:2;1982:18;;1863:177;31201:43:0;;;;;;;;30869:387;;23883:226:::1;23687:429:::0;;:::o;30846:574::-;-1:-1:-1;;;;;31275:20:0;;;;;;:12;:20;;;;;:30;;31299:6;;31275:20;:30;;31299:6;;31275:30;:::i;:::-;;;;-1:-1:-1;;;;;;;31320:23:0;;;;;;:12;:23;;;;;:33;;31347:6;;31320:23;:33;;31347:6;;31320:33;:::i;:::-;;;;;;;;31390:9;-1:-1:-1;;;;;31373:35:0;31382:6;-1:-1:-1;;;;;31373:35:0;;31401:6;31373:35;;;;2009:25:1;;1997:2;1982:18;;1863:177;3083:98:0;3141:7;3168:5;3172:1;3168;:5;:::i;29533:467::-;29624:16;;;29638:1;29624:16;;;;;;;;29600:21;;29624:16;;;;;;;;;;-1:-1:-1;29624:16:0;29600:40;;29669:4;29651;29656:1;29651:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29651:23:0;;;:7;;;;;;;;;;:23;;;;29695:11;;:18;;;-1:-1:-1;;;29695:18:0;;;;:11;;;;;:16;;:18;;;;;29651:7;;29695:18;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29685:4;29690:1;29685:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29685:28:0;;;:7;;;;;;;;;:28;29763:11;;29724:65;;29748:4;;29763:11;29777;29724:15;:65::i;:::-;29800:11;;:192;;-1:-1:-1;;;29800:192:0;;-1:-1:-1;;;;;29800:11:0;;;;:62;;:192;;29877:11;;29800;;29919:4;;29946;;29966:15;;29800:192;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30381:147;30442:7;30469:51;30516:3;30469:42;30480:30;30497:12;;30480;;:16;;:30;;;;:::i;:::-;30469:6;;:10;:42::i;30534:214::-;30616:47;30648:14;;30616:27;30630:12;;30616:9;:13;;:27;;;;:::i;:47::-;30597:15;;:66;;;;;;;:::i;:::-;;;;-1:-1:-1;;30725:14:0;;30707:12;;30693:47;;30725:14;30693:27;;:9;;:13;:27::i;:47::-;30674:15;;:66;;;;;;;:::i;:::-;;;;-1:-1:-1;;;30534:214:0:o;14:548: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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;2045:160::-;2110:20;;2166:13;;2159:21;2149:32;;2139:60;;2195:1;2192;2185:12;2210:180;2266:6;2319:2;2307:9;2298:7;2294:23;2290:32;2287:52;;;2335:1;2332;2325:12;2287:52;2358:26;2374:9;2358:26;:::i;2395:456::-;2472:6;2480;2488;2541:2;2529:9;2520:7;2516:23;2512:32;2509:52;;;2557:1;2554;2547:12;2509:52;2596:9;2583:23;2615:31;2640:5;2615:31;:::i;:::-;2665:5;-1:-1:-1;2722:2:1;2707:18;;2694:32;2735:33;2694:32;2735:33;:::i;:::-;2395:456;;2787:7;;-1:-1:-1;;;2841:2:1;2826:18;;;;2813:32;;2395:456::o;3045:315::-;3110:6;3118;3171:2;3159:9;3150:7;3146:23;3142:32;3139:52;;;3187:1;3184;3177:12;3139:52;3226:9;3213:23;3245:31;3270:5;3245:31;:::i;:::-;3295:5;-1:-1:-1;3319:35:1;3350:2;3335:18;;3319:35;:::i;:::-;3309:45;;3045:315;;;;;:::o;3365:127::-;3426:10;3421:3;3417:20;3414:1;3407:31;3457:4;3454:1;3447:15;3481:4;3478:1;3471:15;3497:275;3568:2;3562:9;3633:2;3614:13;;-1:-1:-1;;3610:27:1;3598:40;;3668:18;3653:34;;3689:22;;;3650:62;3647:88;;;3715:18;;:::i;:::-;3751:2;3744:22;3497:275;;-1:-1:-1;3497:275:1:o;3777:183::-;3837:4;3870:18;3862:6;3859:30;3856:56;;;3892:18;;:::i;:::-;-1:-1:-1;3937:1:1;3933:14;3949:4;3929:25;;3777:183::o;3965:662::-;4019:5;4072:3;4065:4;4057:6;4053:17;4049:27;4039:55;;4090:1;4087;4080:12;4039:55;4126:6;4113:20;4152:4;4176:60;4192:43;4232:2;4192:43;:::i;:::-;4176:60;:::i;:::-;4270:15;;;4356:1;4352:10;;;;4340:23;;4336:32;;;4301:12;;;;4380:15;;;4377:35;;;4408:1;4405;4398:12;4377:35;4444:2;4436:6;4432:15;4456:142;4472:6;4467:3;4464:15;4456:142;;;4538:17;;4526:30;;4576:12;;;;4489;;4456:142;;;-1:-1:-1;4616:5:1;3965:662;-1:-1:-1;;;;;;3965:662:1:o;4632:1215::-;4750:6;4758;4811:2;4799:9;4790:7;4786:23;4782:32;4779:52;;;4827:1;4824;4817:12;4779:52;4867:9;4854:23;4896:18;4937:2;4929:6;4926:14;4923:34;;;4953:1;4950;4943:12;4923:34;4991:6;4980:9;4976:22;4966:32;;5036:7;5029:4;5025:2;5021:13;5017:27;5007:55;;5058:1;5055;5048:12;5007:55;5094:2;5081:16;5116:4;5140:60;5156:43;5196:2;5156:43;:::i;5140:60::-;5234:15;;;5316:1;5312:10;;;;5304:19;;5300:28;;;5265:12;;;;5340:19;;;5337:39;;;5372:1;5369;5362:12;5337:39;5396:11;;;;5416:217;5432:6;5427:3;5424:15;5416:217;;;5512:3;5499:17;5529:31;5554:5;5529:31;:::i;:::-;5573:18;;5449:12;;;;5611;;;;5416:217;;;5652:5;-1:-1:-1;;5695:18:1;;5682:32;;-1:-1:-1;;5726:16:1;;;5723:36;;;5755:1;5752;5745:12;5723:36;;5778:63;5833:7;5822:8;5811:9;5807:24;5778:63;:::i;:::-;5768:73;;;4632:1215;;;;;:::o;5852:180::-;5911:6;5964:2;5952:9;5943:7;5939:23;5935:32;5932:52;;;5980:1;5977;5970:12;5932:52;-1:-1:-1;6003:23:1;;5852:180;-1:-1:-1;5852:180:1:o;6480:385::-;6566:6;6574;6582;6590;6643:3;6631:9;6622:7;6618:23;6614:33;6611:53;;;6660:1;6657;6650:12;6611:53;-1:-1:-1;;6683:23:1;;;6753:2;6738:18;;6725:32;;-1:-1:-1;6804:2:1;6789:18;;6776:32;;6855:2;6840:18;6827:32;;-1:-1:-1;6480:385:1;-1:-1:-1;6480:385:1:o;6870:388::-;6938:6;6946;6999:2;6987:9;6978:7;6974:23;6970:32;6967:52;;;7015:1;7012;7005:12;6967:52;7054:9;7041:23;7073:31;7098:5;7073:31;:::i;:::-;7123:5;-1:-1:-1;7180:2:1;7165:18;;7152:32;7193:33;7152:32;7193:33;:::i;:::-;7245:7;7235:17;;;6870:388;;;;;:::o;7263:248::-;7331:6;7339;7392:2;7380:9;7371:7;7367:23;7363:32;7360:52;;;7408:1;7405;7398:12;7360:52;-1:-1:-1;;7431:23:1;;;7501:2;7486:18;;;7473:32;;-1:-1:-1;7263:248:1:o;7516:404::-;7718:2;7700:21;;;7757:2;7737:18;;;7730:30;7796:34;7791:2;7776:18;;7769:62;-1:-1:-1;;;7862:2:1;7847:18;;7840:38;7910:3;7895:19;;7516:404::o;7925:402::-;8127:2;8109:21;;;8166:2;8146:18;;;8139:30;8205:34;8200:2;8185:18;;8178:62;-1:-1:-1;;;8271:2:1;8256:18;;8249:36;8317:3;8302:19;;7925:402::o;8332:127::-;8393:10;8388:3;8384:20;8381:1;8374:31;8424:4;8421:1;8414:15;8448:4;8445:1;8438:15;8464:422;8553:1;8596:5;8553:1;8610:270;8631:7;8621:8;8618:21;8610:270;;;8690:4;8686:1;8682:6;8678:17;8672:4;8669:27;8666:53;;;8699:18;;:::i;:::-;8749:7;8739:8;8735:22;8732:55;;;8769:16;;;;8732:55;8848:22;;;;8808:15;;;;8610:270;;;8614:3;8464:422;;;;;:::o;8891:806::-;8940:5;8970:8;8960:80;;-1:-1:-1;9011:1:1;9025:5;;8960:80;9059:4;9049:76;;-1:-1:-1;9096:1:1;9110:5;;9049:76;9141:4;9159:1;9154:59;;;;9227:1;9222:130;;;;9134:218;;9154:59;9184:1;9175:10;;9198:5;;;9222:130;9259:3;9249:8;9246:17;9243:43;;;9266:18;;:::i;:::-;-1:-1:-1;;9322:1:1;9308:16;;9337:5;;9134:218;;9436:2;9426:8;9423:16;9417:3;9411:4;9408:13;9404:36;9398:2;9388:8;9385:16;9380:2;9374:4;9371:12;9367:35;9364:77;9361:159;;;-1:-1:-1;9473:19:1;;;9505:5;;9361:159;9552:34;9577:8;9571:4;9552:34;:::i;:::-;9622:6;9618:1;9614:6;9610:19;9601:7;9598:32;9595:58;;;9633:18;;:::i;:::-;9671:20;;8891:806;-1:-1:-1;;;8891:806:1:o;9702:140::-;9760:5;9789:47;9830:4;9820:8;9816:19;9810:4;9789:47;:::i;9847:168::-;9920:9;;;9951;;9968:15;;;9962:22;;9948:37;9938:71;;9989:18;;:::i;10020:401::-;10222:2;10204:21;;;10261:2;10241:18;;;10234:30;10300:34;10295:2;10280:18;;10273:62;-1:-1:-1;;;10366:2:1;10351:18;;10344:35;10411:3;10396:19;;10020:401::o;11139:251::-;11209:6;11262:2;11250:9;11241:7;11237:23;11233:32;11230:52;;;11278:1;11275;11268:12;11230:52;11310:9;11304:16;11329:31;11354:5;11329:31;:::i;12540:127::-;12601:10;12596:3;12592:20;12589:1;12582:31;12632:4;12629:1;12622:15;12656:4;12653:1;12646:15;12672:135;12711:3;12732:17;;;12729:43;;12752:18;;:::i;:::-;-1:-1:-1;12799:1:1;12788:13;;12672:135::o;12812:217::-;12852:1;12878;12868:132;;12922:10;12917:3;12913:20;12910:1;12903:31;12957:4;12954:1;12947:15;12985:4;12982:1;12975:15;12868:132;-1:-1:-1;13014:9:1;;12812:217::o;13806:184::-;13876:6;13929:2;13917:9;13908:7;13904:23;13900:32;13897:52;;;13945:1;13942;13935:12;13897:52;-1:-1:-1;13968:16:1;;13806:184;-1:-1:-1;13806:184:1:o;19063:125::-;19128:9;;;19149:10;;;19146:36;;;19162:18;;:::i;19813:306::-;19901:6;19909;19917;19970:2;19958:9;19949:7;19945:23;19941:32;19938:52;;;19986:1;19983;19976:12;19938:52;20015:9;20009:16;19999:26;;20065:2;20054:9;20050:18;20044:25;20034:35;;20109:2;20098:9;20094:18;20088:25;20078:35;;19813:306;;;;;:::o;20124:128::-;20191:9;;;20212:11;;;20209:37;;;20226:18;;:::i;20257:980::-;20519:4;20567:3;20556:9;20552:19;20598:6;20587:9;20580:25;20624:2;20662:6;20657:2;20646:9;20642:18;20635:34;20705:3;20700:2;20689:9;20685:18;20678:31;20729:6;20764;20758:13;20795:6;20787;20780:22;20833:3;20822:9;20818:19;20811:26;;20872:2;20864:6;20860:15;20846:29;;20893:1;20903:195;20917:6;20914:1;20911:13;20903:195;;;20982:13;;-1:-1:-1;;;;;20978:39:1;20966:52;;21073:15;;;;21038:12;;;;21014:1;20932:9;20903:195;;;-1:-1:-1;;;;;;;21154:32:1;;;;21149:2;21134:18;;21127:60;-1:-1:-1;;;21218:3:1;21203:19;21196:35;21115:3;20257:980;-1:-1:-1;;;20257:980:1:o
Swarm Source
ipfs://42c91588521d7f2e1a450892e8a06e9db162d6f463fb4add7f52c3535bfd4414
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.