ERC-20
Overview
Max Total Supply
1,000,000,000,000 OTHERCOIN
Holders
14
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
11,330,099,505.286451289234080377 OTHERCOINValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
OTHERCOINX
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-01 */ // SPDX-License-Identifier: MIT 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 OTHERCOINX is Context, IERC20, ERC20Ownable { using SafeMath for uint256; using Address for address; string private constant tokenName = "THE OTHER COIN"; string private constant tokenSymbol = "OTHERCOIN"; 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 treasuryAddress; 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 treasuryTokens; uint256 private liquidityTokens; uint256 private totalBurnedTokens; uint256 private marketingTax; uint256 private treasuryTax; uint256 private liquidityTax; uint256 private divForSplitTax; uint256 private taxBuyMarketing; uint256 private taxBuyTreasury; 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(3).div(100); minTaxSwap = tokenSupply.mul(5).div(10000); marketingAddress = payable(0xC6Fecc0499D42c169751BB9aFE11771aDD830Ad5); treasuryAddress = payable(0x08BE2314DC59fDa2Ece4f38F95624679eA69DB8E); devAddress = payable(0xC6Fecc0499D42c169751BB9aFE11771aDD830Ad5); liquidityAddress = payable(owner()); //LEAVE AS OWNER taxBuyMarketing = 3; taxBuyTreasury = 4; taxBuyLiquidity = 2; taxSellMarketing = 3; taxSellTreasury = 4; taxSellLiquidity = 2; isContractsExcluded[address(this)] = true; isTaxExcluded[owner()] = true; isTaxExcluded[dead] = true; isTaxExcluded[address(this)] = true; isTaxExcluded[marketingAddress] = true; isTaxExcluded[treasuryAddress] = true; isTaxExcluded[liquidityAddress] = true; isMaxWalletExcluded[address(this)] = true; isMaxWalletExcluded[owner()] = true; isMaxWalletExcluded[marketingAddress] = true; isMaxWalletExcluded[treasuryAddress] = 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 < 2; 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; treasuryTax = 0; liquidityTax = 0; divForSplitTax = marketingTax.add(treasuryTax).add(liquidityTax); } else { if (from == uniV2Pair) { marketingTax = taxBuyMarketing; treasuryTax = taxBuyTreasury; liquidityTax = taxBuyLiquidity; divForSplitTax = taxBuyMarketing.add(taxBuyTreasury).add(taxBuyLiquidity); }else if (to == uniV2Pair) { marketingTax = taxSellMarketing; treasuryTax = taxSellTreasury; liquidityTax = taxSellLiquidity; divForSplitTax = taxSellMarketing.add(taxSellTreasury).add(taxSellLiquidity); if(isSniper[from] && sniperPenaltyEnd >= block.timestamp){ marketingTax = 85; treasuryTax = 10; liquidityTax = 0; divForSplitTax = marketingTax.add(treasuryTax).add(liquidityTax); } }else { require(!isSniper[from] || sniperPenaltyEnd <= block.timestamp, "ERC20: Snipers can not transfer till penalty time is over"); marketingTax = 0; treasuryTax = 0; liquidityTax = 0; } } tokenTransfer(from, to, amount); } function taxTokenSwap() internal lockTheSwap { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = marketingTokens.add(treasuryTokens).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 ethForTreasury = ethBalance.mul(treasuryTokens).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance.sub(ethForMarketing).sub(ethForTreasury); marketingTokens = 0; treasuryTokens = 0; liquidityTokens = 0; (bool success,) = address(marketingAddress).call{value: ethForMarketing}(""); (success,) = address(treasuryAddress).call{value: ethForTreasury}(""); 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(treasuryTax).add(liquidityTax)).div(100); } function splitTaxTokens(uint256 taxTokens) internal { marketingTokens += taxTokens.mul(marketingTax).div(divForSplitTax); treasuryTokens += taxTokens.mul(treasuryTax).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(4).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 buyTreasuryTax, uint256 buyLiquidityTax, uint256 sellMarketingTax, uint256 sellTreasuryTax, uint256 sellLiquidityTax) external onlyOwner { taxBuyMarketing = buyMarketingTax; taxBuyTreasury = buyTreasuryTax; taxBuyLiquidity = buyLiquidityTax; taxSellMarketing = sellMarketingTax; taxSellTreasury = sellTreasuryTax; taxSellLiquidity = sellLiquidityTax; } function viewTaxes() public view returns(uint256 marketingBuy, uint256 treasuryBuy, uint256 liquidityBuy, uint256 marketingSell, uint256 trasurySell, uint256 liquiditySell) { return(taxBuyMarketing,taxBuyTreasury,taxBuyLiquidity,taxSellMarketing,taxSellTreasury,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":"buyTreasuryTax","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"sellMarketingTax","type":"uint256"},{"internalType":"uint256","name":"sellTreasuryTax","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":"treasuryBuy","type":"uint256"},{"internalType":"uint256","name":"liquidityBuy","type":"uint256"},{"internalType":"uint256","name":"marketingSell","type":"uint256"},{"internalType":"uint256","name":"trasurySell","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
6080604052600c80546001600160a01b03191661dead1790556022805465ff00ffffffff191690556000620000313390565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000896012600a6200042f565b6200009a9064e8d4a5100062000440565b30600090815260026020526040902055620000fd6064620000e96003620000c46012600a6200042f565b620000d59064e8d4a5100062000440565b620002f760201b62001a8d1790919060201c565b6200030e60201b62001aa01790919060201c565b6010556200011b612710620000e96005620000c46012600a6200042f565b601155600980546001600160a01b031990811673c6fecc0499d42c169751bb9afe11771add830ad59081178355600a805483167308be2314dc59fda2ece4f38f95624679ea69db8e178155600b8054841690921790915560008054600880549094166001600160a01b039182161784556003601a8190556004601b8190556002601c819055601d839055601e829055601f553080855260209283526040808620805460ff199081166001908117909255875487168852600586528288208054821683179055600c805488168952838920805483168417905584895283892080548316841790558b5488168952838920805483168417905589548816895283892080548316841790558a548816895283892080548316841790558489529490955281872080548616821790558654861687528187208054861682179055985485168652808620805485168a179055865485168652808620805485168a17905596548416855286852080548416891790559054909216835293822080549094169094179092557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620002cf906012906200042f565b620002e09064e8d4a5100062000440565b60405190815260200160405180910390a362000485565b600062000305828462000440565b90505b92915050565b600062000305828462000462565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003735781600019048211156200035757620003576200031c565b808516156200036557918102915b93841c939080029062000337565b509250929050565b6000826200038c5750600162000308565b816200039b5750600062000308565b8160018114620003b45760028114620003bf57620003df565b600191505062000308565b60ff841115620003d357620003d36200031c565b50506001821b62000308565b5060208310610133831016604e8410600b841016171562000404575081810a62000308565b62000410838362000332565b80600019048211156200042757620004276200031c565b029392505050565b60006200030560ff8416836200037b565b60008160001904831182151516156200045d576200045d6200031c565b500290565b6000826200048057634e487b7160e01b600052601260045260246000fd5b500490565b61315280620004956000396000f3fe6080604052600436106102765760003560e01c806375d0cc431161014f578063a73f9b58116100c1578063ee2e5a2e1161007a578063ee2e5a2e146107fe578063f0c0cf871461081e578063f2fde38b14610834578063f35900d014610854578063f5648a4f14610874578063ffecf5161461088957600080fd5b8063a73f9b581461074d578063a9059cbb14610762578063c2ed286b14610782578063dd62ed3e146107a2578063e4252ddf14610661578063ea090d97146107e857600080fd5b806391c09d1e1161011357806391c09d1e14610661578063957aa58c14610681578063958c2e52146106a157806395d89b41146106c157806396c9b442146106f3578063a20d96151461071457600080fd5b806375d0cc43146105c35780637817be6c146105e35780638bcea939146106035780638c714f80146106235780638da5cb5b1461064357600080fd5b806333251a0b116101e85780635e6710de116101ac5780635e6710de146104f75780635fafa589146105175780635fecd9261461054f57806370a082311461056f578063715018a61461058f578063745d032f146105a457600080fd5b806333251a0b146104525780633b4e935a146104725780633bbac5791461048757806341220104146104b757806351524e5b146104d757600080fd5b8063162790551161023a578063162790551461039957806318160ddd146103b9578063186d260d146103dc5780631c42047a146103fc57806323b872dd14610416578063313ce5671461043657600080fd5b806304d4c9901461028257806306fdde03146102a4578063095ea7b3146102ed5780630f3a325f1461031d57806311abf5371461034d57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b506102a261029d3660046129f6565b6108a9565b005b3480156102b057600080fd5b5060408051808201909152600e81526d2a24229027aa2422a91021a7a4a760911b60208201525b6040516102e49190612a39565b60405180910390f35b3480156102f957600080fd5b5061030d610308366004612aa3565b6108f9565b60405190151581526020016102e4565b34801561032957600080fd5b5061030d610338366004612acf565b60066020526000908152604090205460ff1681565b34801561035957600080fd5b50601a54601b54601c54601d54601e54601f54604080519687526020870195909552938501929092526060840152608083015260a082015260c0016102e4565b3480156103a557600080fd5b5061030d6103b4366004612acf565b6109a3565b3480156103c557600080fd5b506103ce6109df565b6040519081526020016102e4565b3480156103e857600080fd5b506102a26103f7366004612afc565b610a01565b34801561040857600080fd5b5060225461030d9060ff1681565b34801561042257600080fd5b5061030d610431366004612b17565b610a3e565b34801561044257600080fd5b50604051601281526020016102e4565b34801561045e57600080fd5b506102a261046d366004612acf565b610aa7565b34801561047e57600080fd5b5061030d610b5a565b34801561049357600080fd5b5061030d6104a2366004612acf565b60076020526000908152604090205460ff1681565b3480156104c357600080fd5b506102a26104d2366004612b58565b610f7f565b3480156104e357600080fd5b506102a26104f2366004612c63565b610fd4565b34801561050357600080fd5b506102a2610512366004612d25565b61110c565b34801561052357600080fd5b50600f54610537906001600160a01b031681565b6040516001600160a01b0390911681526020016102e4565b34801561055b57600080fd5b506102a261056a366004612acf565b611186565b34801561057b57600080fd5b506103ce61058a366004612acf565b611239565b34801561059b57600080fd5b506102a2611254565b3480156105b057600080fd5b5060225461030d90610100900460ff1681565b3480156105cf57600080fd5b506102a26105de366004612afc565b6112c8565b3480156105ef57600080fd5b5061030d6105fe366004612d25565b611310565b34801561060f57600080fd5b50600d54610537906001600160a01b031681565b34801561062f57600080fd5b506102a261063e366004612afc565b61157a565b34801561064f57600080fd5b506000546001600160a01b0316610537565b34801561066d57600080fd5b506102a261067c366004612b58565b6115be565b34801561068d57600080fd5b5060225461030d9062010000900460ff1681565b3480156106ad57600080fd5b50600e54610537906001600160a01b031681565b3480156106cd57600080fd5b5060408051808201909152600981526827aa2422a921a7a4a760b91b60208201526102d7565b3480156106ff57600080fd5b5060225461030d906301000000900460ff1681565b34801561072057600080fd5b5061030d61072f366004612acf565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561075957600080fd5b506102a2611613565b34801561076e57600080fd5b5061030d61077d366004612aa3565b6116ef565b34801561078e57600080fd5b506102a261079d366004612b58565b611705565b3480156107ae57600080fd5b506103ce6107bd366004612d3e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107f457600080fd5b506103ce60205481565b34801561080a57600080fd5b506102a2610819366004612afc565b61175a565b34801561082a57600080fd5b506103ce60215481565b34801561084057600080fd5b506102a261084f366004612acf565b6117a6565b34801561086057600080fd5b506102a261086f366004612d77565b611895565b34801561088057600080fd5b506102a2611954565b34801561089557600080fd5b506102a26108a4366004612acf565b6119d6565b6000546001600160a01b031633146108dc5760405162461bcd60e51b81526004016108d390612d99565b60405180910390fd5b601a95909555601b93909355601c91909155601d55601e55601f55565b6000336109185760405162461bcd60e51b81526004016108d390612dde565b6001600160a01b03831661093e5760405162461bcd60e51b81526004016108d390612e26565b3360008181526001602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906109d757508115155b949350505050565b60006109ed6012600a612f66565b6109fc9064e8d4a51000612f75565b905090565b6000546001600160a01b03163314610a2b5760405162461bcd60e51b81526004016108d390612d99565b6022805460ff1916911515919091179055565b6000610a4b848484611aac565b610a9d8433610a98856040518060600160405280603181526020016130ec603191396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612252565b61227e565b5060019392505050565b6000546001600160a01b03163314610ad15760405162461bcd60e51b81526004016108d390612d99565b6001600160a01b03811660009081526006602052604090205460ff16610b395760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e74206973206e6f7420736e697065720000000060448201526064016108d3565b6001600160a01b03166000908152600660205260409020805460ff19169055565b600080546001600160a01b03163314610b855760405162461bcd60e51b81526004016108d390612d99565b60225462010000900460ff1615610bde5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164657320616c7265616479204c69766521000000000060448201526064016108d3565b43602055610bef426202a30061232c565b602155600e80546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d908117909255600f80549091167368b3465833fb72a70ecdf485e0e4c7bd8665fc451790557ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8805460ff1990811660019081179092557fdc51a0a44317b550a6b5ddb34687ce2bd40e4750eec27343e32b23e6867392088054821683179055600083905260046020527f1fc5acd025f7cc5cf2691b667dba808b5a149bf27192c208fc66f1f0ec4222d780549091169091179055610ceb3082610cdc6012600a612f66565b610a989064e8d4a51000612f75565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2457600080fd5b505afa158015610d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5c9190612f94565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610da457600080fd5b505afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc9190612f94565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610e2457600080fd5b505af1158015610e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5c9190612f94565b600d80546001600160a01b0319166001600160a01b0392831690811782556000908152600360209081526040808320805460ff19908116600190811790925594549095168352600490915290208054909116909117905547610f155760405162461bcd60e51b815260206004820152602c60248201527f45524332303a204d757374206861766520455448206f6e20636f6e747261637460448201526b20746f20476f204c6976652160a01b60648201526084016108d3565b610f27610f2130611239565b47612338565b600c54600880546001600160a01b0319166001600160a01b0390921691821790556000908152600560205260409020805460ff1916600117905550506022805465ff0000ffffff191665010000010101179055600190565b6000546001600160a01b03163314610fa95760405162461bcd60e51b81526004016108d390612d99565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ffe5760405162461bcd60e51b81526004016108d390612d99565b606482511061106e5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b60648201526084016108d3565b60005b825181101561110757600083828151811061108e5761108e612fb1565b6020026020010151905060006110e560646110df8686815181106110b4576110b4612fb1565b60200260200101516012600a6110ca9190612f66565b6110d99064e8d4a51000612f75565b90611a8d565b90611aa0565b90506110f2338383611aac565b505080806110ff90612fc7565b915050611071565b505050565b6000546001600160a01b031633146111365760405162461bcd60e51b81526004016108d390612d99565b6111833061114c6000546001600160a01b031690565b60648461115b6012600a612f66565b61116a9064e8d4a51000612f75565b6111749190612f75565b61117e9190612fe2565b611aac565b50565b6000546001600160a01b031633146111b05760405162461bcd60e51b81526004016108d390612d99565b6001600160a01b03811660009081526007602052604090205460ff166112185760405162461bcd60e51b815260206004820152601960248201527f45524332303a204163636f756e74206973206e6f7420626f740000000000000060448201526064016108d3565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6001600160a01b031660009081526002602052604090205490565b6000546001600160a01b0316331461127e5760405162461bcd60e51b81526004016108d390612d99565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112f25760405162461bcd60e51b81526004016108d390612d99565b6022805491151563010000000263ff00000019909216919091179055565b600080546001600160a01b0316331461133b5760405162461bcd60e51b81526004016108d390612d99565b600a8211156113a65760405162461bcd60e51b815260206004820152603160248201527f45524332303a204d6179206e6f74206e756b65206d6f7265207468616e203130604482015270025206f6620746f6b656e7320696e204c5607c1b60648201526084016108d3565b600d546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a082319060240160206040518083038186803b1580156113ec57600080fd5b505afa158015611400573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114249190613004565b9050600061143760646110df8487611a8d565b9050801561145c57600d54600c5461145c916001600160a01b03908116911683611aac565b600c54611471906001600160a01b0316611239565b60155560646114826012600a612f66565b6114919064e8d4a51000612f75565b61149c906032612f75565b6114a69190612fe2565b601554111561150b5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a2043616e206e6f74206275726e206d6f7265207468656e20353060448201526a25206f6620737570706c7960a81b60648201526084016108d3565b600d546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561155557600080fd5b505af1158015611569573d6000803e3d6000fd5b50505050600193505050505b919050565b6000546001600160a01b031633146115a45760405162461bcd60e51b81526004016108d390612d99565b602280549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146115e85760405162461bcd60e51b81526004016108d390612d99565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461163d5760405162461bcd60e51b81526004016108d390612d99565b600061164830611239565b90506116616127106110df60056110ca6012600a612f66565b8110156116e75760405162461bcd60e51b815260206004820152604860248201527f45524332303a2043616e206f6e6c792073776170206261636b206966206d6f7260448201527f65207468616e20302e303525206f6620746f6b656e7320737475636b206f6e2060648201526718dbdb9d1c9858dd60c21b608482015260a4016108d3565b6111836123fb565b60006116fc338484611aac565b50600192915050565b6000546001600160a01b0316331461172f5760405162461bcd60e51b81526004016108d390612d99565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117845760405162461bcd60e51b81526004016108d390612d99565b60228054911515650100000000000265ff000000000019909216919091179055565b6000546001600160a01b031633146117d05760405162461bcd60e51b81526004016108d390612d99565b6001600160a01b03811661183a5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016108d3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118bf5760405162461bcd60e51b81526004016108d390612d99565b6118d3816110df846110ca6012600a612f66565b6010556118ec60646110df60046110ca6012600a612f66565b60105411156119505760405162461bcd60e51b815260206004820152602a60248201527f45524332303a2043616e206e6f7420736574206d61782077616c6c6574206d6f6044820152697265207468616e20342560b01b60648201526084016108d3565b5050565b6000546001600160a01b0316331461197e5760405162461bcd60e51b81526004016108d390612d99565b600080546040516001600160a01b039091169047908381818185875af1925050503d80600081146119cb576040519150601f19603f3d011682016040523d82523d6000602084013e6119d0565b606091505b50505050565b6000546001600160a01b03163314611a005760405162461bcd60e51b81526004016108d390612d99565b6001600160a01b03811660009081526007602052604090205460ff1615611a695760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e7420616c72656164792061646465640000000060448201526064016108d3565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000611a998284612f75565b9392505050565b6000611a998284612fe2565b6001600160a01b038316611b105760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108d3565b6001600160a01b038216611b725760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108d3565b60008111611bdb5760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016108d3565b6001600160a01b03831660009081526007602052604090205460ff1615611c445760405162461bcd60e51b815260206004820181905260248201527f45524332303a2043616e206e6f74207472616e736665722066726f6d20424f5460448201526064016108d3565b60225462010000900460ff16611cdf576001600160a01b03831660009081526005602052604090205460ff1680611c9357506001600160a01b03821660009081526005602052604090205460ff165b611cdf5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164696e67204973204e6f74204c69766521000000000060448201526064016108d3565b60225460ff6101009091041615156001148015611d1557506001600160a01b03821660009081526004602052604090205460ff16155b15611d9557601054611d3082611d2a85611239565b9061232c565b1115611d955760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204d617820616d6f756e74206f6620746f6b656e7320666f722060448201526d1dd85b1b195d081c995858da195960921b60648201526084016108d3565b60225460ff1615611e71576000546001600160a01b03848116911614801590611dcc57506000546001600160a01b03838116911614155b8015611de057506001600160a01b03821615155b8015611dfa5750600c546001600160a01b03838116911614155b8015611e145750600d546001600160a01b03838116911614155b15611e715760005b6002811015611e6f57602054611e32908261232c565b431415611e5d576001600160a01b0383166000908152600660205260409020805460ff191660011790555b80611e6781612fc7565b915050611e1c565b505b6022546301000000900460ff1615611f5457611e8c826109a3565b158015611eb157506001600160a01b03831660009081526003602052604090205460ff165b80611ee55750611ec0836109a3565b158015611ee557506001600160a01b03821660009081526003602052604090205460ff165b80611f185750611ef4836109a3565b8015611f1857506001600160a01b03821660009081526003602052604090205460ff165b80611f4b5750611f27826109a3565b8015611f4b57506001600160a01b03831660009081526003602052604090205460ff165b611f5457600080fd5b6000611f6d60125460145461232c90919063ffffffff16565b90506000611f7a30611239565b60115460225491925082101590640100000000900460ff16158015611faa575060225465010000000000900460ff165b8015611fcb5750600d54600090611fc9906001600160a01b0316611239565b115b8015611fd75750600083115b8015611ffc57506001600160a01b03851660009081526005602052604090205460ff16155b801561202157506001600160a01b03861660009081526005602052604090205460ff16155b801561203a5750600d546001600160a01b038681169116145b80156120435750805b15612050576120506123fb565b6001600160a01b03861660009081526005602052604090205460ff168061208f57506001600160a01b03851660009081526005602052604090205460ff165b156120bb5760006016819055601781905560188190556120b390611d2a818061232c565b60195561223f565b600d546001600160a01b03878116911614156120f957601a546016819055601b546017819055601c5460188190556120b3929091611d2a919061232c565b600d546001600160a01b038681169116141561219357601d546016819055601e546017819055601f546018819055612137929091611d2a919061232c565b6019556001600160a01b03861660009081526006602052604090205460ff16801561216457504260215410155b1561218e5760556016819055600a6017819055600060188190556120b3929091611d2a919061232c565b61223f565b6001600160a01b03861660009081526006602052604090205460ff1615806121bd57504260215411155b61222f5760405162461bcd60e51b815260206004820152603960248201527f45524332303a20536e69706572732063616e206e6f74207472616e736665722060448201527f74696c6c2070656e616c74792074696d65206973206f7665720000000000000060648201526084016108d3565b6000601681905560178190556018555b61224a86868661262e565b505050505050565b600081848411156122765760405162461bcd60e51b81526004016108d39190612a39565b505050900390565b6001600160a01b0383166122a45760405162461bcd60e51b81526004016108d390612dde565b6001600160a01b0382166122ca5760405162461bcd60e51b81526004016108d390612e26565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000611a99828461301d565b600e546123509030906001600160a01b03168461227e565b600e5460085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b1580156123bb57600080fd5b505af11580156123cf573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123f49190613035565b5050505050565b6022805464ff000000001916640100000000179055600061241b30611239565b9050600061243c601454611d2a60135460125461232c90919063ffffffff16565b905060006124566002601454611aa090919063ffffffff16565b9050600061246484836127cf565b905047612470826127db565b600061247c47836127cf565b90506000612499866110df60125485611a8d90919063ffffffff16565b905060006124b6876110df60135486611a8d90919063ffffffff16565b905060006124ce826124c886866127cf565b906127cf565b600060128190556013819055601481905560095460405192935090916001600160a01b039091169085908381818185875af1925050503d8060008114612530576040519150601f19603f3d011682016040523d82523d6000602084013e612535565b606091505b5050600a546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114612585576040519150601f19603f3d011682016040523d82523d6000602084013e61258a565b606091505b5090915050811580159061259d57508715155b156125ac576125ac8883612338565b6706f05b59d3b2000047111561261457600b546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612609576040519150601f19603f3d011682016040523d82523d6000602084013e61260e565b606091505b50909150505b50506022805464ff00000000191690555050505050505050565b6019541561272e5760006126418261293c565b9050600061264f83836127cf565b905061265a8261296a565b6001600160a01b03851660009081526002602052604081208054859290612682908490613063565b90915550506001600160a01b038416600090815260026020526040812080548392906126af90849061301d565b909155505030600090815260026020526040812080548492906126d390849061301d565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161271f91815260200190565b60405180910390a35050505050565b6001600160a01b03831660009081526002602052604081208054839290612756908490613063565b90915550506001600160a01b0382166000908152600260205260408120805483929061278390849061301d565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161231f91815260200190565b6000611a998284613063565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061281057612810612fb1565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561286457600080fd5b505afa158015612878573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289c9190612f94565b816001815181106128af576128af612fb1565b6001600160a01b039283166020918202929092010152600e546128d5913091168461227e565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061290e90859060009086903090429060040161307a565b600060405180830381600087803b15801561292857600080fd5b505af115801561224a573d6000803e3d6000fd5b600061099d60646110df612963601854611d2a60175460165461232c90919063ffffffff16565b8590611a8d565b6129856019546110df60165484611a8d90919063ffffffff16565b60126000828254612996919061301d565b90915550506019546017546129b191906110df908490611a8d565b601360008282546129c2919061301d565b90915550506019546018546129dd91906110df908490611a8d565b601460008282546129ee919061301d565b909155505050565b60008060008060008060c08789031215612a0f57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208083528351808285015260005b81811015612a6657858101830151858201604001528201612a4a565b81811115612a78576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461118357600080fd5b60008060408385031215612ab657600080fd5b8235612ac181612a8e565b946020939093013593505050565b600060208284031215612ae157600080fd5b8135611a9981612a8e565b8035801515811461157557600080fd5b600060208284031215612b0e57600080fd5b611a9982612aec565b600080600060608486031215612b2c57600080fd5b8335612b3781612a8e565b92506020840135612b4781612a8e565b929592945050506040919091013590565b60008060408385031215612b6b57600080fd5b8235612b7681612a8e565b9150612b8460208401612aec565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612bcc57612bcc612b8d565b604052919050565b600067ffffffffffffffff821115612bee57612bee612b8d565b5060051b60200190565b600082601f830112612c0957600080fd5b81356020612c1e612c1983612bd4565b612ba3565b82815260059290921b84018101918181019086841115612c3d57600080fd5b8286015b84811015612c585780358352918301918301612c41565b509695505050505050565b60008060408385031215612c7657600080fd5b823567ffffffffffffffff80821115612c8e57600080fd5b818501915085601f830112612ca257600080fd5b81356020612cb2612c1983612bd4565b82815260059290921b84018101918181019089841115612cd157600080fd5b948201945b83861015612cf8578535612ce981612a8e565b82529482019490820190612cd6565b96505086013592505080821115612d0e57600080fd5b50612d1b85828601612bf8565b9150509250929050565b600060208284031215612d3757600080fd5b5035919050565b60008060408385031215612d5157600080fd5b8235612d5c81612a8e565b91506020830135612d6c81612a8e565b809150509250929050565b60008060408385031215612d8a57600080fd5b50508035926020909101359150565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b60208082526028908201527f45524332303a2043616e206e6f7420617070726f76652066726f6d207a65726f604082015267206164647265737360c01b606082015260800190565b60208082526026908201527f45524332303a2043616e206e6f7420617070726f766520746f207a65726f206160408201526564647265737360d01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612ebd578160001904821115612ea357612ea3612e6c565b80851615612eb057918102915b93841c9390800290612e87565b509250929050565b600082612ed45750600161099d565b81612ee15750600061099d565b8160018114612ef75760028114612f0157612f1d565b600191505061099d565b60ff841115612f1257612f12612e6c565b50506001821b61099d565b5060208310610133831016604e8410600b8410161715612f40575081810a61099d565b612f4a8383612e82565b8060001904821115612f5e57612f5e612e6c565b029392505050565b6000611a9960ff841683612ec5565b6000816000190483118215151615612f8f57612f8f612e6c565b500290565b600060208284031215612fa657600080fd5b8151611a9981612a8e565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612fdb57612fdb612e6c565b5060010190565b600082612fff57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561301657600080fd5b5051919050565b6000821982111561303057613030612e6c565b500190565b60008060006060848603121561304a57600080fd5b8351925060208401519150604084015190509250925092565b60008282101561307557613075612e6c565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156130ca5784516001600160a01b0316835293830193918301916001016130a5565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a2043616e206e6f74207472616e736665722e20416d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122088a73e90a1390fcc9e25d7b1165ed285cda5fa556bce57fddac9c0b41b75877a64736f6c63430008090033
Deployed Bytecode
0x6080604052600436106102765760003560e01c806375d0cc431161014f578063a73f9b58116100c1578063ee2e5a2e1161007a578063ee2e5a2e146107fe578063f0c0cf871461081e578063f2fde38b14610834578063f35900d014610854578063f5648a4f14610874578063ffecf5161461088957600080fd5b8063a73f9b581461074d578063a9059cbb14610762578063c2ed286b14610782578063dd62ed3e146107a2578063e4252ddf14610661578063ea090d97146107e857600080fd5b806391c09d1e1161011357806391c09d1e14610661578063957aa58c14610681578063958c2e52146106a157806395d89b41146106c157806396c9b442146106f3578063a20d96151461071457600080fd5b806375d0cc43146105c35780637817be6c146105e35780638bcea939146106035780638c714f80146106235780638da5cb5b1461064357600080fd5b806333251a0b116101e85780635e6710de116101ac5780635e6710de146104f75780635fafa589146105175780635fecd9261461054f57806370a082311461056f578063715018a61461058f578063745d032f146105a457600080fd5b806333251a0b146104525780633b4e935a146104725780633bbac5791461048757806341220104146104b757806351524e5b146104d757600080fd5b8063162790551161023a578063162790551461039957806318160ddd146103b9578063186d260d146103dc5780631c42047a146103fc57806323b872dd14610416578063313ce5671461043657600080fd5b806304d4c9901461028257806306fdde03146102a4578063095ea7b3146102ed5780630f3a325f1461031d57806311abf5371461034d57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b506102a261029d3660046129f6565b6108a9565b005b3480156102b057600080fd5b5060408051808201909152600e81526d2a24229027aa2422a91021a7a4a760911b60208201525b6040516102e49190612a39565b60405180910390f35b3480156102f957600080fd5b5061030d610308366004612aa3565b6108f9565b60405190151581526020016102e4565b34801561032957600080fd5b5061030d610338366004612acf565b60066020526000908152604090205460ff1681565b34801561035957600080fd5b50601a54601b54601c54601d54601e54601f54604080519687526020870195909552938501929092526060840152608083015260a082015260c0016102e4565b3480156103a557600080fd5b5061030d6103b4366004612acf565b6109a3565b3480156103c557600080fd5b506103ce6109df565b6040519081526020016102e4565b3480156103e857600080fd5b506102a26103f7366004612afc565b610a01565b34801561040857600080fd5b5060225461030d9060ff1681565b34801561042257600080fd5b5061030d610431366004612b17565b610a3e565b34801561044257600080fd5b50604051601281526020016102e4565b34801561045e57600080fd5b506102a261046d366004612acf565b610aa7565b34801561047e57600080fd5b5061030d610b5a565b34801561049357600080fd5b5061030d6104a2366004612acf565b60076020526000908152604090205460ff1681565b3480156104c357600080fd5b506102a26104d2366004612b58565b610f7f565b3480156104e357600080fd5b506102a26104f2366004612c63565b610fd4565b34801561050357600080fd5b506102a2610512366004612d25565b61110c565b34801561052357600080fd5b50600f54610537906001600160a01b031681565b6040516001600160a01b0390911681526020016102e4565b34801561055b57600080fd5b506102a261056a366004612acf565b611186565b34801561057b57600080fd5b506103ce61058a366004612acf565b611239565b34801561059b57600080fd5b506102a2611254565b3480156105b057600080fd5b5060225461030d90610100900460ff1681565b3480156105cf57600080fd5b506102a26105de366004612afc565b6112c8565b3480156105ef57600080fd5b5061030d6105fe366004612d25565b611310565b34801561060f57600080fd5b50600d54610537906001600160a01b031681565b34801561062f57600080fd5b506102a261063e366004612afc565b61157a565b34801561064f57600080fd5b506000546001600160a01b0316610537565b34801561066d57600080fd5b506102a261067c366004612b58565b6115be565b34801561068d57600080fd5b5060225461030d9062010000900460ff1681565b3480156106ad57600080fd5b50600e54610537906001600160a01b031681565b3480156106cd57600080fd5b5060408051808201909152600981526827aa2422a921a7a4a760b91b60208201526102d7565b3480156106ff57600080fd5b5060225461030d906301000000900460ff1681565b34801561072057600080fd5b5061030d61072f366004612acf565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561075957600080fd5b506102a2611613565b34801561076e57600080fd5b5061030d61077d366004612aa3565b6116ef565b34801561078e57600080fd5b506102a261079d366004612b58565b611705565b3480156107ae57600080fd5b506103ce6107bd366004612d3e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107f457600080fd5b506103ce60205481565b34801561080a57600080fd5b506102a2610819366004612afc565b61175a565b34801561082a57600080fd5b506103ce60215481565b34801561084057600080fd5b506102a261084f366004612acf565b6117a6565b34801561086057600080fd5b506102a261086f366004612d77565b611895565b34801561088057600080fd5b506102a2611954565b34801561089557600080fd5b506102a26108a4366004612acf565b6119d6565b6000546001600160a01b031633146108dc5760405162461bcd60e51b81526004016108d390612d99565b60405180910390fd5b601a95909555601b93909355601c91909155601d55601e55601f55565b6000336109185760405162461bcd60e51b81526004016108d390612dde565b6001600160a01b03831661093e5760405162461bcd60e51b81526004016108d390612e26565b3360008181526001602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906109d757508115155b949350505050565b60006109ed6012600a612f66565b6109fc9064e8d4a51000612f75565b905090565b6000546001600160a01b03163314610a2b5760405162461bcd60e51b81526004016108d390612d99565b6022805460ff1916911515919091179055565b6000610a4b848484611aac565b610a9d8433610a98856040518060600160405280603181526020016130ec603191396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612252565b61227e565b5060019392505050565b6000546001600160a01b03163314610ad15760405162461bcd60e51b81526004016108d390612d99565b6001600160a01b03811660009081526006602052604090205460ff16610b395760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e74206973206e6f7420736e697065720000000060448201526064016108d3565b6001600160a01b03166000908152600660205260409020805460ff19169055565b600080546001600160a01b03163314610b855760405162461bcd60e51b81526004016108d390612d99565b60225462010000900460ff1615610bde5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164657320616c7265616479204c69766521000000000060448201526064016108d3565b43602055610bef426202a30061232c565b602155600e80546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d908117909255600f80549091167368b3465833fb72a70ecdf485e0e4c7bd8665fc451790557ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8805460ff1990811660019081179092557fdc51a0a44317b550a6b5ddb34687ce2bd40e4750eec27343e32b23e6867392088054821683179055600083905260046020527f1fc5acd025f7cc5cf2691b667dba808b5a149bf27192c208fc66f1f0ec4222d780549091169091179055610ceb3082610cdc6012600a612f66565b610a989064e8d4a51000612f75565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2457600080fd5b505afa158015610d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5c9190612f94565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610da457600080fd5b505afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc9190612f94565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610e2457600080fd5b505af1158015610e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5c9190612f94565b600d80546001600160a01b0319166001600160a01b0392831690811782556000908152600360209081526040808320805460ff19908116600190811790925594549095168352600490915290208054909116909117905547610f155760405162461bcd60e51b815260206004820152602c60248201527f45524332303a204d757374206861766520455448206f6e20636f6e747261637460448201526b20746f20476f204c6976652160a01b60648201526084016108d3565b610f27610f2130611239565b47612338565b600c54600880546001600160a01b0319166001600160a01b0390921691821790556000908152600560205260409020805460ff1916600117905550506022805465ff0000ffffff191665010000010101179055600190565b6000546001600160a01b03163314610fa95760405162461bcd60e51b81526004016108d390612d99565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ffe5760405162461bcd60e51b81526004016108d390612d99565b606482511061106e5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b60648201526084016108d3565b60005b825181101561110757600083828151811061108e5761108e612fb1565b6020026020010151905060006110e560646110df8686815181106110b4576110b4612fb1565b60200260200101516012600a6110ca9190612f66565b6110d99064e8d4a51000612f75565b90611a8d565b90611aa0565b90506110f2338383611aac565b505080806110ff90612fc7565b915050611071565b505050565b6000546001600160a01b031633146111365760405162461bcd60e51b81526004016108d390612d99565b6111833061114c6000546001600160a01b031690565b60648461115b6012600a612f66565b61116a9064e8d4a51000612f75565b6111749190612f75565b61117e9190612fe2565b611aac565b50565b6000546001600160a01b031633146111b05760405162461bcd60e51b81526004016108d390612d99565b6001600160a01b03811660009081526007602052604090205460ff166112185760405162461bcd60e51b815260206004820152601960248201527f45524332303a204163636f756e74206973206e6f7420626f740000000000000060448201526064016108d3565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6001600160a01b031660009081526002602052604090205490565b6000546001600160a01b0316331461127e5760405162461bcd60e51b81526004016108d390612d99565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112f25760405162461bcd60e51b81526004016108d390612d99565b6022805491151563010000000263ff00000019909216919091179055565b600080546001600160a01b0316331461133b5760405162461bcd60e51b81526004016108d390612d99565b600a8211156113a65760405162461bcd60e51b815260206004820152603160248201527f45524332303a204d6179206e6f74206e756b65206d6f7265207468616e203130604482015270025206f6620746f6b656e7320696e204c5607c1b60648201526084016108d3565b600d546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a082319060240160206040518083038186803b1580156113ec57600080fd5b505afa158015611400573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114249190613004565b9050600061143760646110df8487611a8d565b9050801561145c57600d54600c5461145c916001600160a01b03908116911683611aac565b600c54611471906001600160a01b0316611239565b60155560646114826012600a612f66565b6114919064e8d4a51000612f75565b61149c906032612f75565b6114a69190612fe2565b601554111561150b5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a2043616e206e6f74206275726e206d6f7265207468656e20353060448201526a25206f6620737570706c7960a81b60648201526084016108d3565b600d546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561155557600080fd5b505af1158015611569573d6000803e3d6000fd5b50505050600193505050505b919050565b6000546001600160a01b031633146115a45760405162461bcd60e51b81526004016108d390612d99565b602280549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146115e85760405162461bcd60e51b81526004016108d390612d99565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461163d5760405162461bcd60e51b81526004016108d390612d99565b600061164830611239565b90506116616127106110df60056110ca6012600a612f66565b8110156116e75760405162461bcd60e51b815260206004820152604860248201527f45524332303a2043616e206f6e6c792073776170206261636b206966206d6f7260448201527f65207468616e20302e303525206f6620746f6b656e7320737475636b206f6e2060648201526718dbdb9d1c9858dd60c21b608482015260a4016108d3565b6111836123fb565b60006116fc338484611aac565b50600192915050565b6000546001600160a01b0316331461172f5760405162461bcd60e51b81526004016108d390612d99565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117845760405162461bcd60e51b81526004016108d390612d99565b60228054911515650100000000000265ff000000000019909216919091179055565b6000546001600160a01b031633146117d05760405162461bcd60e51b81526004016108d390612d99565b6001600160a01b03811661183a5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016108d3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118bf5760405162461bcd60e51b81526004016108d390612d99565b6118d3816110df846110ca6012600a612f66565b6010556118ec60646110df60046110ca6012600a612f66565b60105411156119505760405162461bcd60e51b815260206004820152602a60248201527f45524332303a2043616e206e6f7420736574206d61782077616c6c6574206d6f6044820152697265207468616e20342560b01b60648201526084016108d3565b5050565b6000546001600160a01b0316331461197e5760405162461bcd60e51b81526004016108d390612d99565b600080546040516001600160a01b039091169047908381818185875af1925050503d80600081146119cb576040519150601f19603f3d011682016040523d82523d6000602084013e6119d0565b606091505b50505050565b6000546001600160a01b03163314611a005760405162461bcd60e51b81526004016108d390612d99565b6001600160a01b03811660009081526007602052604090205460ff1615611a695760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e7420616c72656164792061646465640000000060448201526064016108d3565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000611a998284612f75565b9392505050565b6000611a998284612fe2565b6001600160a01b038316611b105760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108d3565b6001600160a01b038216611b725760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108d3565b60008111611bdb5760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016108d3565b6001600160a01b03831660009081526007602052604090205460ff1615611c445760405162461bcd60e51b815260206004820181905260248201527f45524332303a2043616e206e6f74207472616e736665722066726f6d20424f5460448201526064016108d3565b60225462010000900460ff16611cdf576001600160a01b03831660009081526005602052604090205460ff1680611c9357506001600160a01b03821660009081526005602052604090205460ff165b611cdf5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164696e67204973204e6f74204c69766521000000000060448201526064016108d3565b60225460ff6101009091041615156001148015611d1557506001600160a01b03821660009081526004602052604090205460ff16155b15611d9557601054611d3082611d2a85611239565b9061232c565b1115611d955760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204d617820616d6f756e74206f6620746f6b656e7320666f722060448201526d1dd85b1b195d081c995858da195960921b60648201526084016108d3565b60225460ff1615611e71576000546001600160a01b03848116911614801590611dcc57506000546001600160a01b03838116911614155b8015611de057506001600160a01b03821615155b8015611dfa5750600c546001600160a01b03838116911614155b8015611e145750600d546001600160a01b03838116911614155b15611e715760005b6002811015611e6f57602054611e32908261232c565b431415611e5d576001600160a01b0383166000908152600660205260409020805460ff191660011790555b80611e6781612fc7565b915050611e1c565b505b6022546301000000900460ff1615611f5457611e8c826109a3565b158015611eb157506001600160a01b03831660009081526003602052604090205460ff165b80611ee55750611ec0836109a3565b158015611ee557506001600160a01b03821660009081526003602052604090205460ff165b80611f185750611ef4836109a3565b8015611f1857506001600160a01b03821660009081526003602052604090205460ff165b80611f4b5750611f27826109a3565b8015611f4b57506001600160a01b03831660009081526003602052604090205460ff165b611f5457600080fd5b6000611f6d60125460145461232c90919063ffffffff16565b90506000611f7a30611239565b60115460225491925082101590640100000000900460ff16158015611faa575060225465010000000000900460ff165b8015611fcb5750600d54600090611fc9906001600160a01b0316611239565b115b8015611fd75750600083115b8015611ffc57506001600160a01b03851660009081526005602052604090205460ff16155b801561202157506001600160a01b03861660009081526005602052604090205460ff16155b801561203a5750600d546001600160a01b038681169116145b80156120435750805b15612050576120506123fb565b6001600160a01b03861660009081526005602052604090205460ff168061208f57506001600160a01b03851660009081526005602052604090205460ff165b156120bb5760006016819055601781905560188190556120b390611d2a818061232c565b60195561223f565b600d546001600160a01b03878116911614156120f957601a546016819055601b546017819055601c5460188190556120b3929091611d2a919061232c565b600d546001600160a01b038681169116141561219357601d546016819055601e546017819055601f546018819055612137929091611d2a919061232c565b6019556001600160a01b03861660009081526006602052604090205460ff16801561216457504260215410155b1561218e5760556016819055600a6017819055600060188190556120b3929091611d2a919061232c565b61223f565b6001600160a01b03861660009081526006602052604090205460ff1615806121bd57504260215411155b61222f5760405162461bcd60e51b815260206004820152603960248201527f45524332303a20536e69706572732063616e206e6f74207472616e736665722060448201527f74696c6c2070656e616c74792074696d65206973206f7665720000000000000060648201526084016108d3565b6000601681905560178190556018555b61224a86868661262e565b505050505050565b600081848411156122765760405162461bcd60e51b81526004016108d39190612a39565b505050900390565b6001600160a01b0383166122a45760405162461bcd60e51b81526004016108d390612dde565b6001600160a01b0382166122ca5760405162461bcd60e51b81526004016108d390612e26565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000611a99828461301d565b600e546123509030906001600160a01b03168461227e565b600e5460085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b1580156123bb57600080fd5b505af11580156123cf573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123f49190613035565b5050505050565b6022805464ff000000001916640100000000179055600061241b30611239565b9050600061243c601454611d2a60135460125461232c90919063ffffffff16565b905060006124566002601454611aa090919063ffffffff16565b9050600061246484836127cf565b905047612470826127db565b600061247c47836127cf565b90506000612499866110df60125485611a8d90919063ffffffff16565b905060006124b6876110df60135486611a8d90919063ffffffff16565b905060006124ce826124c886866127cf565b906127cf565b600060128190556013819055601481905560095460405192935090916001600160a01b039091169085908381818185875af1925050503d8060008114612530576040519150601f19603f3d011682016040523d82523d6000602084013e612535565b606091505b5050600a546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114612585576040519150601f19603f3d011682016040523d82523d6000602084013e61258a565b606091505b5090915050811580159061259d57508715155b156125ac576125ac8883612338565b6706f05b59d3b2000047111561261457600b546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612609576040519150601f19603f3d011682016040523d82523d6000602084013e61260e565b606091505b50909150505b50506022805464ff00000000191690555050505050505050565b6019541561272e5760006126418261293c565b9050600061264f83836127cf565b905061265a8261296a565b6001600160a01b03851660009081526002602052604081208054859290612682908490613063565b90915550506001600160a01b038416600090815260026020526040812080548392906126af90849061301d565b909155505030600090815260026020526040812080548492906126d390849061301d565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161271f91815260200190565b60405180910390a35050505050565b6001600160a01b03831660009081526002602052604081208054839290612756908490613063565b90915550506001600160a01b0382166000908152600260205260408120805483929061278390849061301d565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161231f91815260200190565b6000611a998284613063565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061281057612810612fb1565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561286457600080fd5b505afa158015612878573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289c9190612f94565b816001815181106128af576128af612fb1565b6001600160a01b039283166020918202929092010152600e546128d5913091168461227e565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061290e90859060009086903090429060040161307a565b600060405180830381600087803b15801561292857600080fd5b505af115801561224a573d6000803e3d6000fd5b600061099d60646110df612963601854611d2a60175460165461232c90919063ffffffff16565b8590611a8d565b6129856019546110df60165484611a8d90919063ffffffff16565b60126000828254612996919061301d565b90915550506019546017546129b191906110df908490611a8d565b601360008282546129c2919061301d565b90915550506019546018546129dd91906110df908490611a8d565b601460008282546129ee919061301d565b909155505050565b60008060008060008060c08789031215612a0f57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208083528351808285015260005b81811015612a6657858101830151858201604001528201612a4a565b81811115612a78576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461118357600080fd5b60008060408385031215612ab657600080fd5b8235612ac181612a8e565b946020939093013593505050565b600060208284031215612ae157600080fd5b8135611a9981612a8e565b8035801515811461157557600080fd5b600060208284031215612b0e57600080fd5b611a9982612aec565b600080600060608486031215612b2c57600080fd5b8335612b3781612a8e565b92506020840135612b4781612a8e565b929592945050506040919091013590565b60008060408385031215612b6b57600080fd5b8235612b7681612a8e565b9150612b8460208401612aec565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612bcc57612bcc612b8d565b604052919050565b600067ffffffffffffffff821115612bee57612bee612b8d565b5060051b60200190565b600082601f830112612c0957600080fd5b81356020612c1e612c1983612bd4565b612ba3565b82815260059290921b84018101918181019086841115612c3d57600080fd5b8286015b84811015612c585780358352918301918301612c41565b509695505050505050565b60008060408385031215612c7657600080fd5b823567ffffffffffffffff80821115612c8e57600080fd5b818501915085601f830112612ca257600080fd5b81356020612cb2612c1983612bd4565b82815260059290921b84018101918181019089841115612cd157600080fd5b948201945b83861015612cf8578535612ce981612a8e565b82529482019490820190612cd6565b96505086013592505080821115612d0e57600080fd5b50612d1b85828601612bf8565b9150509250929050565b600060208284031215612d3757600080fd5b5035919050565b60008060408385031215612d5157600080fd5b8235612d5c81612a8e565b91506020830135612d6c81612a8e565b809150509250929050565b60008060408385031215612d8a57600080fd5b50508035926020909101359150565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b60208082526028908201527f45524332303a2043616e206e6f7420617070726f76652066726f6d207a65726f604082015267206164647265737360c01b606082015260800190565b60208082526026908201527f45524332303a2043616e206e6f7420617070726f766520746f207a65726f206160408201526564647265737360d01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612ebd578160001904821115612ea357612ea3612e6c565b80851615612eb057918102915b93841c9390800290612e87565b509250929050565b600082612ed45750600161099d565b81612ee15750600061099d565b8160018114612ef75760028114612f0157612f1d565b600191505061099d565b60ff841115612f1257612f12612e6c565b50506001821b61099d565b5060208310610133831016604e8410600b8410161715612f40575081810a61099d565b612f4a8383612e82565b8060001904821115612f5e57612f5e612e6c565b029392505050565b6000611a9960ff841683612ec5565b6000816000190483118215151615612f8f57612f8f612e6c565b500290565b600060208284031215612fa657600080fd5b8151611a9981612a8e565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612fdb57612fdb612e6c565b5060010190565b600082612fff57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561301657600080fd5b5051919050565b6000821982111561303057613030612e6c565b500190565b60008060006060848603121561304a57600080fd5b8351925060208401519150604084015190509250925092565b60008282101561307557613075612e6c565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156130ca5784516001600160a01b0316835293830193918301916001016130a5565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a2043616e206e6f74207472616e736665722e20416d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122088a73e90a1390fcc9e25d7b1165ed285cda5fa556bce57fddac9c0b41b75877a64736f6c63430008090033
Deployed Bytecode Sourcemap
18113:18413:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35759:462;;;;;;;;;;-1:-1:-1;35759:462:0;;;;;:::i;:::-;;:::i;:::-;;21593:98;;;;;;;;;;-1:-1:-1;21674:9:0;;;;;;;;;;;;-1:-1:-1;;;21674:9:0;;;;21593:98;;;;;;;:::i;:::-;;;;;;;;22298:397;;;;;;;;;;-1:-1:-1;22298:397:0;;;;;:::i;:::-;;:::i;:::-;;;1765:14:1;;1758:22;1740:41;;1728:2;1713:18;22298:397:0;1600:187:1;18777:40:0;;;;;;;;;;-1:-1:-1;18777:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;36227:296;;;;;;;;;;-1:-1:-1;36418:15:0;;36434:14;;36449:15;;36465:16;;36482:15;;36498:16;;36227:296;;;2331:25:1;;;2387:2;2372:18;;2365:34;;;;2415:18;;;2408:34;;;;2473:2;2458:18;;2451:34;2516:3;2501:19;;2494:35;2560:3;2545:19;;2538:35;2318:3;2303:19;36227:296:0;2044:535:1;32118:337:0;;;;;;;;;;-1:-1:-1;32118:337:0;;;;;:::i;:::-;;:::i;21908:101::-;;;;;;;;;;;;;:::i;:::-;;;2730:25:1;;;2718:2;2703:18;21908:101:0;2584:177:1;35282:103:0;;;;;;;;;;-1:-1:-1;35282:103:0;;;;;:::i;:::-;;:::i;19839:28::-;;;;;;;;;;-1:-1:-1;19839:28:0;;;;;;;;23242:348;;;;;;;;;;-1:-1:-1;23242:348:0;;;;;:::i;:::-;;:::i;21805:97::-;;;;;;;;;;-1:-1:-1;21805:97:0;;18393:2;3719:36:1;;3707:2;3692:18;21805:97:0;3577:184:1;34363:171:0;;;;;;;;;;-1:-1:-1;34363:171:0;;;;;:::i;:::-;;:::i;24031:1249::-;;;;;;;;;;;;;:::i;18824:37::-;;;;;;;;;;-1:-1:-1;18824:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;34858:158;;;;;;;;;;-1:-1:-1;34858:158:0;;;;;:::i;:::-;;:::i;23596:429::-;;;;;;;;;;-1:-1:-1;23596:429:0;;;;;:::i;:::-;;:::i;32904:149::-;;;;;;;;;;-1:-1:-1;32904:149:0;;;;;:::i;:::-;;:::i;19131:26::-;;;;;;;;;;-1:-1:-1;19131:26:0;;;;-1:-1:-1;;;;;19131:26:0;;;;;;-1:-1:-1;;;;;6922:32:1;;;6904:51;;6892:2;6877:18;19131:26:0;6758:203:1;34201:159:0;;;;;;;;;;-1:-1:-1;34201:159:0;;;;;:::i;:::-;;:::i;22015:122::-;;;;;;;;;;-1:-1:-1;22015:122:0;;;;;:::i;:::-;;:::i;727:148::-;;;;;;;;;;;;;:::i;19874:31::-;;;;;;;;;;-1:-1:-1;19874:31:0;;;;;;;;;;;35505:119;;;;;;;;;;-1:-1:-1;35505:119:0;;;;;:::i;:::-;;:::i;33059:686::-;;;;;;;;;;-1:-1:-1;33059:686:0;;;;;:::i;:::-;;:::i;19056:24::-;;;;;;;;;;-1:-1:-1;19056:24:0;;;;-1:-1:-1;;;;;19056:24:0;;;35391:108;;;;;;;;;;-1:-1:-1;35391:108:0;;;;;:::i;:::-;;:::i;503:87::-;;;;;;;;;;-1:-1:-1;549:7:0;576:6;-1:-1:-1;;;;;576:6:0;503:87;;34540:160;;;;;;;;;;-1:-1:-1;34540:160:0;;;;;:::i;:::-;;:::i;19912:24::-;;;;;;;;;;-1:-1:-1;19912:24:0;;;;;;;;;;;19087:37;;;;;;;;;;-1:-1:-1;19087:37:0;;;;-1:-1:-1;;;;;19087:37:0;;;21697:102;;;;;;;;;;-1:-1:-1;21780:11:0;;;;;;;;;;;;-1:-1:-1;;;21780:11:0;;;;21697:102;;19943:35;;;;;;;;;;-1:-1:-1;19943:35:0;;;;;;;;;;;32609:126;;;;;;;;;;-1:-1:-1;32609:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;32699:28:0;32675:4;32699:28;;;:19;:28;;;;;;;;;32609:126;33751:282;;;;;;;;;;;;;:::i;23060:176::-;;;;;;;;;;-1:-1:-1;23060:176:0;;;;;:::i;:::-;;:::i;34706:146::-;;;;;;;;;;-1:-1:-1;34706:146:0;;;;;:::i;:::-;;:::i;22143:149::-;;;;;;;;;;-1:-1:-1;22143:149:0;;;;;:::i;:::-;-1:-1:-1;;;;;22253:22:0;;;22226:7;22253:22;;;:15;:22;;;;;;;;:31;;;;;;;;;;;;;22143:149;19759:33;;;;;;;;;;;;;;;;35630:123;;;;;;;;;;-1:-1:-1;35630:123:0;;;;;:::i;:::-;;:::i;19799:31::-;;;;;;;;;;;;;;;;881:249;;;;;;;;;;-1:-1:-1;881:249:0;;;;;:::i;:::-;;:::i;35022:254::-;;;;;;;;;;-1:-1:-1;35022:254:0;;;;;:::i;:::-;;:::i;32741:157::-;;;;;;;;;;;;;:::i;34039:159::-;;;;;;;;;;-1:-1:-1;34039:159:0;;;;;:::i;:::-;;:::i;35759:462::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;;;;;;;;;35958:15:::1;:33:::0;;;;36002:14:::1;:31:::0;;;;36044:15:::1;:33:::0;;;;36088:16:::1;:35:::0;36134:15:::1;:33:::0;36178:16:::1;:35:::0;35759:462::o;22298:397::-;22373:4;162:10;22390:79;;;;-1:-1:-1;;;22390:79:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22488:21:0;;22480:72;;;;-1:-1:-1;;;22480:72:0;;;;;;;:::i;:::-;162:10;22563:29;;;;:15;:29;;;;;;;;-1:-1:-1;;;;;22563:38:0;;;;;;;;;;;;:47;;;22626:39;2730:25:1;;;22563:38:0;;162:10;22626:39;;2703:18:1;22626:39:0;;;;;;;-1:-1:-1;22683:4:0;22298:397;;;;;:::o;32118:337::-;32176:4;32355:20;;32242:66;32404:23;;;;;;:42;;-1:-1:-1;32431:15:0;;;32404:42;32396:51;32118:337;-1:-1:-1;;;;32118:337:0:o;21908:101::-;21963:7;18448:16;18393:2;18448;:16;:::i;:::-;18441:23;;:4;:23;:::i;:::-;21983:18;;21908:101;:::o;35282:103::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;35355:8:::1;:22:::0;;-1:-1:-1;;35355:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35282:103::o;23242:348::-;23340:4;23357:43;23374:6;23382:9;23393:6;23357:16;:43::i;:::-;23411:149;23427:6;162:10;23457:102;23499:6;23457:102;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23457:23:0;;;;;;:15;:23;;;;;;;;162:10;23457:37;;;;;;;;;;:41;:102::i;:::-;23411:15;:149::i;:::-;-1:-1:-1;23578:4:0;23242:348;;;;;:::o;34363:171::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34440:17:0;::::1;;::::0;;;:8:::1;:17;::::0;;;;;::::1;;34432:58;;;::::0;-1:-1:-1;;;34432:58:0;;10959:2:1;34432:58:0::1;::::0;::::1;10941:21:1::0;10998:2;10978:18;;;10971:30;11037;11017:18;;;11010:58;11085:18;;34432:58:0::1;10757:352:1::0;34432:58:0::1;-1:-1:-1::0;;;;;34501:17:0::1;34521:5;34501:17:::0;;;:8:::1;:17;::::0;;;;:25;;-1:-1:-1;;34501:25:0::1;::::0;;34363:171::o;24031:1249::-;24077:4;576:6;;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;24102:4:::1;::::0;;;::::1;;;24101:5;24093:45;;;::::0;-1:-1:-1;;;24093:45:0;;11316:2:1;24093:45:0::1;::::0;::::1;11298:21:1::0;11355:2;11335:18;;;11328:30;11394:29;11374:18;;;11367:57;11441:18;;24093:45:0::1;11114:351:1::0;24093:45:0::1;24170:12;24149:18;:33:::0;24212:27:::1;:15;24232:6;24212:19;:27::i;:::-;24193:16;:46:::0;24357:11:::1;:26:::0;;-1:-1:-1;;;;;;24357:26:0;;::::1;24303:42;24357:26:::0;;::::1;::::0;;;24394:11:::1;:56:::0;;;;::::1;24408:42;24394:56;::::0;;24461:41;:48;;-1:-1:-1;;24461:48:0;;::::1;24357:26:::0;24461:48;;::::1;::::0;;;24520:41;:48;;;::::1;::::0;::::1;::::0;;24250:31:::1;24579:41:::0;;;:19:::1;24461:41;24579::::0;;:48;;;;::::1;::::0;;::::1;::::0;;24638:65:::1;24662:4;24303:42:::0;18448:16:::1;-1:-1:-1::0;18448:2:0::1;:16;:::i;:::-;18441:23;::::0;:4:::1;:23;:::i;24638:65::-;24744:12;-1:-1:-1::0;;;;;24744:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24726:52:0::1;;24787:4;24794:12;-1:-1:-1::0;;;;;24794:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24726:88;::::0;-1:-1:-1;;;;;;24726:88:0::1;::::0;;;;;;-1:-1:-1;;;;;11956:15:1;;;24726:88:0::1;::::0;::::1;11938:34:1::0;12008:15;;11988:18;;;11981:43;11873:18;;24726:88:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24714:9;:100:::0;;-1:-1:-1;;;;;;24714:100:0::1;-1:-1:-1::0;;;;;24714:100:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;24825:39:0;;;:19:::1;:39;::::0;;;;;;;:46;;-1:-1:-1;;24825:46:0;;::::1;-1:-1:-1::0;24825:46:0;;::::1;::::0;;;24910:9;;;;::::1;24882:39:::0;;:19:::1;:39:::0;;;;;:46;;;;::::1;::::0;;::::1;::::0;;24947:21:::1;24939:82;;;::::0;-1:-1:-1;;;24939:82:0;;12237:2:1;24939:82:0::1;::::0;::::1;12219:21:1::0;12276:2;12256:18;;;12249:30;12315:34;12295:18;;;12288:62;-1:-1:-1;;;12366:18:1;;;12359:42;12418:19;;24939:82:0::1;12035:408:1::0;24939:82:0::1;25032:61;25045:24;25063:4;25045:9;:24::i;:::-;25071:21;25032:12;:61::i;:::-;25130:4;::::0;32018:16;:37;;-1:-1:-1;;;;;;32018:37:0;-1:-1:-1;;;;;25130:4:0;;::::1;32018:37:::0;;;;;-1:-1:-1;32066:31:0;;;:13;:31;;;;;:38;;-1:-1:-1;;32066:38:0;-1:-1:-1;32066:38:0;;;-1:-1:-1;;25146:11:0::1;:18:::0;;-1:-1:-1;;25239:11:0;;;;;-1:-1:-1;;24031:1249:0:o;34858:158::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34957:37:0;;;::::1;;::::0;;;:19:::1;:37;::::0;;;;:51;;-1:-1:-1;;34957:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34858:158::o;23596:429::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;23719:3:::1;23702:7;:14;:20;23694:87;;;::::0;-1:-1:-1;;;23694:87:0;;12650:2:1;23694:87:0::1;::::0;::::1;12632:21:1::0;12689:2;12669:18;;;12662:30;12728:34;12708:18;;;12701:62;-1:-1:-1;;;12779:18:1;;;12772:52;12841:19;;23694:87:0::1;12448:418:1::0;23694:87:0::1;23796:9;23792:226;23815:7;:14;23811:1;:18;23792:226;;;23850:14;23867:7;23875:1;23867:10;;;;;;;;:::i;:::-;;;;;;;23850:27;;23892:14;23909:36;23941:3;23909:27;23925:7;23933:1;23925:10;;;;;;;;:::i;:::-;;;;;;;18393:2;18448;:16;;;;:::i;:::-;18441:23;::::0;:4:::1;:23;:::i;:::-;23909:15:::0;::::1;:27::i;:::-;:31:::0;::::1;:36::i;:::-;23892:53:::0;-1:-1:-1;23960:46:0::1;162:10:::0;23991:6:::1;23999;23960:16;:46::i;:::-;23835:183;;23831:3;;;;;:::i;:::-;;;;23792:226;;;;23596:429:::0;;:::o;32904:149::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;32980:65:::1;33005:4;33012:7;549::::0;576:6;-1:-1:-1;;;;;576:6:0;;503:87;33012:7:::1;33041:3;33033:7:::0;18448:16:::1;18393:2;18448;:16;:::i;:::-;18441:23;::::0;:4:::1;:23;:::i;:::-;33021:19;;;;:::i;:::-;:23;;;;:::i;:::-;32980:16;:65::i;:::-;32904:149:::0;:::o;34201:159::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34275:14:0;::::1;;::::0;;;:5:::1;:14;::::0;;;;;::::1;;34267:52;;;::::0;-1:-1:-1;;;34267:52:0;;13567:2:1;34267:52:0::1;::::0;::::1;13549:21:1::0;13606:2;13586:18;;;13579:30;13645:27;13625:18;;;13618:55;13690:18;;34267:52:0::1;13365:349:1::0;34267:52:0::1;-1:-1:-1::0;;;;;34330:14:0::1;34347:5;34330:14:::0;;;:5:::1;:14;::::0;;;;:22;;-1:-1:-1;;34330:22:0::1;::::0;;34201:159::o;22015:122::-;-1:-1:-1;;;;;22108:21:0;22081:7;22108:21;;;:12;:21;;;;;;;22015:122::o;727:148::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;834:1:::1;818:6:::0;;797:40:::1;::::0;-1:-1:-1;;;;;818:6:0;;::::1;::::0;797:40:::1;::::0;834:1;;797:40:::1;865:1;848:19:::0;;-1:-1:-1;;;;;;848:19:0::1;::::0;;727:148::o;35505:119::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;35587:15:::1;:29:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;35587:29:0;;::::1;::::0;;;::::1;::::0;;35505:119::o;33059:686::-;33136:4;576:6;;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;33171:2:::1;33160:7;:13;;33152:75;;;::::0;-1:-1:-1;;;33152:75:0;;13921:2:1;33152:75:0::1;::::0;::::1;13903:21:1::0;13960:2;13940:18;;;13933:30;13999:34;13979:18;;;13972:62;-1:-1:-1;;;14050:18:1;;;14043:47;14107:19;;33152:75:0::1;13719:413:1::0;33152:75:0::1;33284:9;::::0;33269:25:::1;::::0;-1:-1:-1;;;33269:25:0;;-1:-1:-1;;;;;33284:9:0;;::::1;33269:25;::::0;::::1;6904:51:1::0;33238:28:0::1;::::0;33269:4:::1;::::0;:14:::1;::::0;6877:18:1;;33269:25:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33238:56:::0;-1:-1:-1;33305:20:0::1;33328:44;33366:5;33328:33;33238:56:::0;33353:7;33328:24:::1;:33::i;:44::-;33305:67:::0;-1:-1:-1;33387:16:0;;33383:95:::1;;33436:9;::::0;33447:4:::1;::::0;33419:47:::1;::::0;-1:-1:-1;;;;;33436:9:0;;::::1;::::0;33447:4:::1;33453:12:::0;33419:16:::1;:47::i;:::-;33518:4;::::0;33508:15:::1;::::0;-1:-1:-1;;;;;33518:4:0::1;33508:9;:15::i;:::-;33488:17;:35:::0;33582:5:::1;18448:16;18393:2;18448;:16;:::i;:::-;18441:23;::::0;:4:::1;:23;:::i;:::-;33563:16;::::0;33577:2:::1;33563:16;:::i;:::-;:24;;;;:::i;:::-;33542:17;;:45;;33534:101;;;::::0;-1:-1:-1;;;33534:101:0;;14528:2:1;33534:101:0::1;::::0;::::1;14510:21:1::0;14567:2;14547:18;;;14540:30;14606:34;14586:18;;;14579:62;-1:-1:-1;;;14657:18:1;;;14650:41;14708:19;;33534:101:0::1;14326:407:1::0;33534:101:0::1;33683:9;::::0;33704:11:::1;::::0;;-1:-1:-1;;;;;;33704:11:0;;;;-1:-1:-1;;;;;33683:9:0;;::::1;::::0;;;33704::::1;::::0;:11:::1;::::0;;::::1;::::0;33646:19:::1;::::0;33704:11;;;;;;;33646:19;33683:9;33704:11;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33733:4;33726:11;;;;;712:1;33059:686:::0;;;:::o;35391:108::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;35466:11:::1;:25:::0;;;::::1;;;;-1:-1:-1::0;;35466:25:0;;::::1;::::0;;;::::1;::::0;;35391:108::o;34540:160::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34641:37:0;;;::::1;;::::0;;;:19:::1;:37;::::0;;;;:51;;-1:-1:-1;;34641:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34540:160::o;33751:282::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;33806:23:::1;33832:24;33850:4;33832:9;:24::i;:::-;33806:50:::0;-1:-1:-1;33894:29:0::1;33917:5;33894:18;33910:1;18448:16;18393:2;18448;:16;:::i;33894:29::-;33875:15;:48;;33867:133;;;::::0;-1:-1:-1;;;33867:133:0;;14940:2:1;33867:133:0::1;::::0;::::1;14922:21:1::0;14979:2;14959:18;;;14952:30;15018:34;14998:18;;;14991:62;15089:34;15069:18;;;15062:62;-1:-1:-1;;;15140:19:1;;;15133:39;15189:19;;33867:133:0::1;14738:476:1::0;33867:133:0::1;34011:14;:12;:14::i;23060:176::-:0;23140:4;23157:49;162:10;23188:9;23199:6;23157:16;:49::i;:::-;-1:-1:-1;23224:4:0;23060:176;;;;:::o;34706:146::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34799:31:0;;;::::1;;::::0;;;:13:::1;:31;::::0;;;;:45;;-1:-1:-1;;34799:45:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34706:146::o;35630:123::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;35711:20:::1;:34:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;35711:34:0;;::::1;::::0;;;::::1;::::0;;35630:123::o;881:249::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;970:22:0;::::1;962:78;;;::::0;-1:-1:-1;;;962:78:0;;15421:2:1;962:78:0::1;::::0;::::1;15403:21:1::0;15460:2;15440:18;;;15433:30;15499:34;15479:18;;;15472:62;-1:-1:-1;;;15550:18:1;;;15543:41;15601:19;;962:78:0::1;15219:407:1::0;962:78:0::1;1077:6;::::0;;1056:38:::1;::::0;-1:-1:-1;;;;;1056:38:0;;::::1;::::0;1077:6;::::1;::::0;1056:38:::1;::::0;::::1;1105:6;:17:::0;;-1:-1:-1;;;;;;1105:17:0::1;-1:-1:-1::0;;;;;1105:17:0;;;::::1;::::0;;;::::1;::::0;;881:249::o;35022:254::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;35126:37:::1;35155:7:::0;35126:24:::1;35142:7:::0;18448:16:::1;18393:2;18448;:16;:::i;35126:37::-;35114:9;:49:::0;35194:27:::1;35217:3;35194:18;35210:1;18448:16;18393:2;18448;:16;:::i;35194:27::-;35182:9;;:39;;35174:94;;;::::0;-1:-1:-1;;;35174:94:0;;15833:2:1;35174:94:0::1;::::0;::::1;15815:21:1::0;15872:2;15852:18;;;15845:30;15911:34;15891:18;;;15884:62;-1:-1:-1;;;15962:18:1;;;15955:40;16012:19;;35174:94:0::1;15631:406:1::0;35174:94:0::1;35022:254:::0;;:::o;32741:157::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;32799:12:::1;576:6:::0;;32835:55:::1;::::0;-1:-1:-1;;;;;576:6:0;;;;32864:21:::1;::::0;32799:12;32835:55;32799:12;32835:55;32864:21;576:6;32835:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;32741:157:0:o;34039:159::-;549:7;576:6;-1:-1:-1;;;;;576:6:0;162:10;636:23;628:73;;;;-1:-1:-1;;;628:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34111:14:0;::::1;;::::0;;;:5:::1;:14;::::0;;;;;::::1;;34110:15;34102:56;;;::::0;-1:-1:-1;;;34102:56:0;;16454:2:1;34102:56:0::1;::::0;::::1;16436:21:1::0;16493:2;16473:18;;;16466:30;16532;16512:18;;;16505:58;16580:18;;34102:56:0::1;16252:352:1::0;34102:56:0::1;-1:-1:-1::0;;;;;34169:14:0::1;;::::0;;;:5:::1;:14;::::0;;;;:21;;-1:-1:-1;;34169:21:0::1;34186:4;34169:21;::::0;;34039:159::o;2706:98::-;2764:7;2791:5;2795:1;2791;:5;:::i;:::-;2784:12;2706:98;-1:-1:-1;;;2706:98:0:o;2810:::-;2868:7;2895:5;2899:1;2895;:5;:::i;25286:3310::-;-1:-1:-1;;;;;25382:18:0;;25374:68;;;;-1:-1:-1;;;25374:68:0;;16811:2:1;25374:68:0;;;16793:21:1;16850:2;16830:18;;;16823:30;16889:34;16869:18;;;16862:62;-1:-1:-1;;;16940:18:1;;;16933:35;16985:19;;25374:68:0;16609:401:1;25374:68:0;-1:-1:-1;;;;;25461:16:0;;25453:64;;;;-1:-1:-1;;;25453:64:0;;17217:2:1;25453:64:0;;;17199:21:1;17256:2;17236:18;;;17229:30;17295:34;17275:18;;;17268:62;-1:-1:-1;;;17346:18:1;;;17339:33;17389:19;;25453:64:0;17015:399:1;25453:64:0;25545:1;25536:6;:10;25528:71;;;;-1:-1:-1;;;25528:71:0;;17621:2:1;25528:71:0;;;17603:21:1;17660:2;17640:18;;;17633:30;17699:34;17679:18;;;17672:62;-1:-1:-1;;;17750:18:1;;;17743:46;17806:19;;25528:71:0;17419:412:1;25528:71:0;-1:-1:-1;;;;;25619:11:0;;;;;;:5;:11;;;;;;;;25618:12;25610:57;;;;-1:-1:-1;;;25610:57:0;;18038:2:1;25610:57:0;;;18020:21:1;;;18057:18;;;18050:30;18116:34;18096:18;;;18089:62;18168:18;;25610:57:0;17836:356:1;25610:57:0;25682:4;;;;;;;25678:116;;-1:-1:-1;;;;;25710:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;25733:17:0;;;;;;:13;:17;;;;;;;;25710:40;25702:80;;;;-1:-1:-1;;;25702:80:0;;18399:2:1;25702:80:0;;;18381:21:1;18438:2;18418:18;;;18411:30;18477:29;18457:18;;;18450:57;18524:18;;25702:80:0;18197:351:1;25702:80:0;25808:11;;;;;;;;:19;;:11;:19;:48;;;;-1:-1:-1;;;;;;25833:23:0;;;;;;:19;:23;;;;;;;;25831:25;25808:48;25804:178;;;25910:9;;25881:25;25899:6;25881:13;25891:2;25881:9;:13::i;:::-;:17;;:25::i;:::-;:38;;25873:97;;;;-1:-1:-1;;;25873:97:0;;18755:2:1;25873:97:0;;;18737:21:1;18794:2;18774:18;;;18767:30;18833:34;18813:18;;;18806:62;-1:-1:-1;;;18884:18:1;;;18877:44;18938:19;;25873:97:0;18553:410:1;25873:97:0;25995:8;;;;25992:350;;;549:7;576:6;-1:-1:-1;;;;;26023:15:0;;;576:6;;26023:15;;;;:32;;-1:-1:-1;549:7:0;576:6;-1:-1:-1;;;;;26042:13:0;;;576:6;;26042:13;;26023:32;:52;;;;-1:-1:-1;;;;;;26059:16:0;;;;26023:52;:66;;;;-1:-1:-1;26085:4:0;;-1:-1:-1;;;;;26079:10:0;;;26085:4;;26079:10;;26023:66;:85;;;;-1:-1:-1;26099:9:0;;-1:-1:-1;;;;;26093:15:0;;;26099:9;;26093:15;;26023:85;26019:312;;;26134:6;26129:187;26150:1;26146;:5;26129:187;;;26200:18;;:25;;26223:1;26200:22;:25::i;:::-;26184:12;:41;26181:116;;;-1:-1:-1;;;;;26254:12:0;;;;;;:8;:12;;;;;:19;;-1:-1:-1;;26254:19:0;26269:4;26254:19;;;26181:116;26153:3;;;;:::i;:::-;;;;26129:187;;;;26019:312;26355:15;;;;;;;26352:331;;;26414:14;26425:2;26414:10;:14::i;:::-;26413:15;:44;;;;-1:-1:-1;;;;;;26432:25:0;;;;;;:19;:25;;;;;;;;26413:44;:109;;;;26479:16;26490:4;26479:10;:16::i;:::-;26478:17;:44;;;;-1:-1:-1;;;;;;26499:23:0;;;;;;:19;:23;;;;;;;;26478:44;26413:174;;;;26544:16;26555:4;26544:10;:16::i;:::-;:43;;;;-1:-1:-1;;;;;;26564:23:0;;;;;;:19;:23;;;;;;;;26544:43;26413:239;;;;26609:14;26620:2;26609:10;:14::i;:::-;:43;;;;-1:-1:-1;;;;;;26627:25:0;;;;;;:19;:25;;;;;;;;26609:43;26387:284;;;;;;26693:25;26721:36;26741:15;;26721;;:19;;:36;;;;:::i;:::-;26693:64;;26768:28;26799:24;26817:4;26799:9;:24::i;:::-;26889:10;;26915:16;;26768:55;;-1:-1:-1;26865:34:0;;;;26915:16;;;;;26914:17;:41;;;;-1:-1:-1;26935:20:0;;;;;;;26914:41;:69;;;;-1:-1:-1;26969:9:0;;26982:1;;26959:20;;-1:-1:-1;;;;;26969:9:0;26959;:20::i;:::-;:24;26914:69;:94;;;;;27007:1;26987:17;:21;26914:94;:116;;;;-1:-1:-1;;;;;;27013:17:0;;;;;;:13;:17;;;;;;;;27012:18;26914:116;:140;;;;-1:-1:-1;;;;;;27035:19:0;;;;;;:13;:19;;;;;;;;27034:20;26914:140;:159;;;;-1:-1:-1;27064:9:0;;-1:-1:-1;;;;;27058:15:0;;;27064:9;;27058:15;26914:159;:186;;;;;27077:23;26914:186;26910:237;;;27117:14;:12;:14::i;:::-;-1:-1:-1;;;;;27161:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;27184:17:0;;;;;;:13;:17;;;;;;;;27161:40;27157:1390;;;27233:1;27218:12;:16;;;27249:11;:15;;;27279:12;:16;;;27327:47;;:29;27233:1;;27327:16;:29::i;:47::-;27310:14;:64;27157:1390;;;27419:9;;-1:-1:-1;;;;;27411:17:0;;;27419:9;;27411:17;27407:1129;;;27464:15;;27449:12;:30;;;27512:14;;27498:11;:28;;;27560:15;;27545:12;:30;;;27611:56;;27560:15;;27611:35;;27464:15;27611:19;:35::i;27407:1129::-;27698:9;;-1:-1:-1;;;;;27692:15:0;;;27698:9;;27692:15;27688:848;;;27743:16;;27728:12;:31;;;27792:15;;27778:11;:29;;;27841:16;;27826:12;:31;;;27893:59;;27841:16;;27893:37;;27743:16;27893:20;:37::i;:59::-;27876:14;:76;-1:-1:-1;;;;;27974:14:0;;;;;;:8;:14;;;;;;;;:53;;;;;28012:15;27992:16;;:35;;27974:53;27971:282;;;28066:2;28051:12;:17;;;28105:2;28091:11;:16;;;-1:-1:-1;28130:12:0;:16;;;28186:47;;-1:-1:-1;;28186:29:0;;28066:2;28186:16;:29::i;27971:282::-;27688:848;;;-1:-1:-1;;;;;28301:14:0;;;;;;:8;:14;;;;;;;;28300:15;;:54;;;28339:15;28319:16;;:35;;28300:54;28292:124;;;;-1:-1:-1;;;28292:124:0;;19170:2:1;28292:124:0;;;19152:21:1;19209:2;19189:18;;;19182:30;19248:34;19228:18;;;19221:62;19319:27;19299:18;;;19292:55;19364:19;;28292:124:0;18968:421:1;28292:124:0;28450:1;28435:12;:16;;;28470:11;:15;;;28504:12;:16;27688:848;28557:31;28571:4;28577:2;28581:6;28557:13;:31::i;:::-;25363:3233;;;25286:3310;;;:::o;3018:206::-;3104:7;3165:12;3157:6;;;;3149:29;;;;-1:-1:-1;;;3149:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3200:5:0;;;3018:206::o;22701:353::-;-1:-1:-1;;;;;22800:19:0;;22792:72;;;;-1:-1:-1;;;22792:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22883:21:0;;22875:72;;;;-1:-1:-1;;;22875:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22958:22:0;;;;;;;:15;:22;;;;;;;;:31;;;;;;;;;;;;;:40;;;23014:32;;2730:25:1;;;23014:32:0;;2703:18:1;23014:32:0;;;;;;;;22701:353;;;:::o;2498:98::-;2556:7;2583:5;2587:1;2583;:5;:::i;30425:369::-;30546:11;;30507:65;;30531:4;;-1:-1:-1;;;;;30546:11:0;30560;30507:15;:65::i;:::-;30583:11;;30729:16;;30583:203;;-1:-1:-1;;;30583:203:0;;30651:4;30583:203;;;19876:34:1;19926:18;;;19919:34;;;30583:11:0;19969:18:1;;;19962:34;;;20012:18;;;20005:34;-1:-1:-1;;;;;30729:16:0;;;20055:19:1;;;20048:44;30760:15:0;20108:19:1;;;20101:35;30583:11:0;;;:27;;30618:9;;19810:19:1;;30583:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30425:369;;:::o;28602:1344::-;20095:16;:23;;-1:-1:-1;;20095:23:0;;;;;;28684:24:::1;28702:4;28684:9;:24::i;:::-;28658:50;;28719:25;28747:56;28787:15;;28747:35;28767:14;;28747:15;;:19;;:35;;;;:::i;:56::-;28719:84;;28814:27;28844:22;28864:1;28844:15;;:19;;:22;;;;:::i;:::-;28814:52:::0;-1:-1:-1;28877:26:0::1;28906:40;:15:::0;28814:52;28906:19:::1;:40::i;:::-;28877:69:::0;-1:-1:-1;28985:21:0::1;29017:36;28877:69:::0;29017:16:::1;:36::i;:::-;29065:18;29086:44;:21;29112:17:::0;29086:25:::1;:44::i;:::-;29065:65;;29141:23;29167:54;29203:17;29167:31;29182:15;;29167:10;:14;;:31;;;;:::i;:54::-;29141:80;;29232:22;29257:53;29292:17;29257:30;29272:14;;29257:10;:14;;:30;;;;:::i;:53::-;29232:78:::0;-1:-1:-1;29321:23:0::1;29347:51;29232:78:::0;29347:31:::1;:10:::0;29362:15;29347:14:::1;:31::i;:::-;:35:::0;::::1;:51::i;:::-;29427:1;29409:15;:19:::0;;;29439:14:::1;:18:::0;;;29468:15:::1;:19:::0;;;29524:16:::1;::::0;29516:58:::1;::::0;29321:77;;-1:-1:-1;29427:1:0;;-1:-1:-1;;;;;29524:16:0;;::::1;::::0;29554:15;;29427:1;29516:58;29427:1;29516:58;29554:15;29524:16;29516:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;29606:15:0::1;::::0;29598:56:::1;::::0;29498:76;;-1:-1:-1;;;;;;29606:15:0::1;::::0;29635:14;;29598:56:::1;::::0;;;29635:14;29606:15;29598:56:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;29585:69:0;;-1:-1:-1;;29668:20:0;;;::::1;::::0;:48:::1;;-1:-1:-1::0;29692:24:0;;::::1;29668:48;29665:130;;;29733:50;29746:19;29767:15;29733:12;:50::i;:::-;29832:8;29808:21;:32;29805:134;;;29877:10;::::0;29869:58:::1;::::0;-1:-1:-1;;;;;29877:10:0;;::::1;::::0;29901:21:::1;::::0;29869:58:::1;::::0;;;29901:21;29877:10;29869:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;29856:71:0;;-1:-1:-1;;29805:134:0::1;-1:-1:-1::0;;20141:16:0;:24;;-1:-1:-1;;20141:24:0;;;-1:-1:-1;;;;;;;;28602:1344:0:o;31265:673::-;31360:14;;:19;31357:574;;31395:17;31415:20;31428:6;31415:12;:20::i;:::-;31395:40;-1:-1:-1;31450:22:0;31475:21;:6;31395:40;31475:10;:21::i;:::-;31450:46;;31511:25;31526:9;31511:14;:25::i;:::-;-1:-1:-1;;;;;31551:20:0;;;;;;:12;:20;;;;;:30;;31575:6;;31551:20;:30;;31575:6;;31551:30;:::i;:::-;;;;-1:-1:-1;;;;;;;31596:23:0;;;;;;:12;:23;;;;;:41;;31623:14;;31596:23;:41;;31623:14;;31596:41;:::i;:::-;;;;-1:-1:-1;;31673:4:0;31652:27;;;;:12;:27;;;;;:40;;31683:9;;31652:27;:40;;31683:9;;31652:40;:::i;:::-;;;;;;;;31729:9;-1:-1:-1;;;;;31712:43:0;31721:6;-1:-1:-1;;;;;31712:43:0;;31740:14;31712:43;;;;2730:25:1;;2718:2;2703:18;;2584:177;31712:43:0;;;;;;;;31380:387;;23792:226:::1;23596:429:::0;;:::o;31357:574::-;-1:-1:-1;;;;;31786:20:0;;;;;;:12;:20;;;;;:30;;31810:6;;31786:20;:30;;31810:6;;31786:30;:::i;:::-;;;;-1:-1:-1;;;;;;;31831:23:0;;;;;;:12;:23;;;;;:33;;31858:6;;31831:23;:33;;31858:6;;31831:33;:::i;:::-;;;;;;;;31901:9;-1:-1:-1;;;;;31884:35:0;31893:6;-1:-1:-1;;;;;31884:35:0;;31912:6;31884:35;;;;2730:25:1;;2718:2;2703:18;;2584:177;2602:98:0;2660:7;2687:5;2691:1;2687;:5;:::i;29952:467::-;30043:16;;;30057:1;30043:16;;;;;;;;30019:21;;30043:16;;;;;;;;;;-1:-1:-1;30043:16:0;30019:40;;30088:4;30070;30075:1;30070:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30070:23:0;;;:7;;;;;;;;;;:23;;;;30114:11;;:18;;;-1:-1:-1;;;30114:18:0;;;;:11;;;;;:16;;:18;;;;;30070:7;;30114:18;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30104:4;30109:1;30104:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30104:28:0;;;:7;;;;;;;;;:28;30182:11;;30143:65;;30167:4;;30182:11;30196;30143:15;:65::i;:::-;30219:11;;:192;;-1:-1:-1;;;30219:192:0;;-1:-1:-1;;;;;30219:11:0;;;;:62;;:192;;30296:11;;30219;;30338:4;;30365;;30385:15;;30219:192;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30800:164;30861:7;30888:68;30952:3;30888:59;30899:47;30933:12;;30899:29;30916:11;;30899:12;;:16;;:29;;;;:::i;:47::-;30888:6;;:10;:59::i;30970:289::-;31052:47;31084:14;;31052:27;31066:12;;31052:9;:13;;:27;;;;:::i;:47::-;31033:15;;:66;;;;;;;:::i;:::-;;;;-1:-1:-1;;31159:14:0;;31142:11;;31128:46;;31159:14;31128:26;;:9;;:13;:26::i;:46::-;31110:14;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;;31236:14:0;;31218:12;;31204:47;;31236:14;31204:27;;:9;;:13;:27::i;:47::-;31185:15;;:66;;;;;;;:::i;:::-;;;;-1:-1:-1;;;30970:289:0:o;14:523:1:-;118:6;126;134;142;150;158;211:3;199:9;190:7;186:23;182:33;179:53;;;228:1;225;218:12;179:53;-1:-1:-1;;251:23:1;;;321:2;306:18;;293:32;;-1:-1:-1;372:2:1;357:18;;344:32;;423:2;408:18;;395:32;;-1:-1:-1;474:3:1;459:19;;446:33;;-1:-1:-1;526:3:1;511:19;498:33;;-1:-1:-1;14:523:1;-1:-1:-1;14:523:1:o;542:597::-;654:4;683:2;712;701:9;694:21;744:6;738:13;787:6;782:2;771:9;767:18;760:34;812:1;822:140;836:6;833:1;830:13;822:140;;;931:14;;;927:23;;921:30;897:17;;;916:2;893:26;886:66;851:10;;822:140;;;980:6;977:1;974:13;971:91;;;1050:1;1045:2;1036:6;1025:9;1021:22;1017:31;1010:42;971:91;-1:-1:-1;1123:2:1;1102:15;-1:-1:-1;;1098:29:1;1083:45;;;;1130:2;1079:54;;542:597;-1:-1:-1;;;542:597:1:o;1144:131::-;-1:-1:-1;;;;;1219:31:1;;1209:42;;1199:70;;1265:1;1262;1255:12;1280:315;1348:6;1356;1409:2;1397:9;1388:7;1384:23;1380:32;1377:52;;;1425:1;1422;1415:12;1377:52;1464:9;1451:23;1483:31;1508:5;1483:31;:::i;:::-;1533:5;1585:2;1570:18;;;;1557:32;;-1:-1:-1;;;1280:315:1:o;1792:247::-;1851:6;1904:2;1892:9;1883:7;1879:23;1875:32;1872:52;;;1920:1;1917;1910:12;1872:52;1959:9;1946:23;1978:31;2003:5;1978:31;:::i;2766:160::-;2831:20;;2887:13;;2880:21;2870:32;;2860:60;;2916:1;2913;2906:12;2931:180;2987:6;3040:2;3028:9;3019:7;3015:23;3011:32;3008:52;;;3056:1;3053;3046:12;3008:52;3079:26;3095:9;3079:26;:::i;3116:456::-;3193:6;3201;3209;3262:2;3250:9;3241:7;3237:23;3233:32;3230:52;;;3278:1;3275;3268:12;3230:52;3317:9;3304:23;3336:31;3361:5;3336:31;:::i;:::-;3386:5;-1:-1:-1;3443:2:1;3428:18;;3415:32;3456:33;3415:32;3456:33;:::i;:::-;3116:456;;3508:7;;-1:-1:-1;;;3562:2:1;3547:18;;;;3534:32;;3116:456::o;3766:315::-;3831:6;3839;3892:2;3880:9;3871:7;3867:23;3863:32;3860:52;;;3908:1;3905;3898:12;3860:52;3947:9;3934:23;3966:31;3991:5;3966:31;:::i;:::-;4016:5;-1:-1:-1;4040:35:1;4071:2;4056:18;;4040:35;:::i;:::-;4030:45;;3766:315;;;;;:::o;4086:127::-;4147:10;4142:3;4138:20;4135:1;4128:31;4178:4;4175:1;4168:15;4202:4;4199:1;4192:15;4218:275;4289:2;4283:9;4354:2;4335:13;;-1:-1:-1;;4331:27:1;4319:40;;4389:18;4374:34;;4410:22;;;4371:62;4368:88;;;4436:18;;:::i;:::-;4472:2;4465:22;4218:275;;-1:-1:-1;4218:275:1:o;4498:183::-;4558:4;4591:18;4583:6;4580:30;4577:56;;;4613:18;;:::i;:::-;-1:-1:-1;4658:1:1;4654:14;4670:4;4650:25;;4498:183::o;4686:662::-;4740:5;4793:3;4786:4;4778:6;4774:17;4770:27;4760:55;;4811:1;4808;4801:12;4760:55;4847:6;4834:20;4873:4;4897:60;4913:43;4953:2;4913:43;:::i;:::-;4897:60;:::i;:::-;4991:15;;;5077:1;5073:10;;;;5061:23;;5057:32;;;5022:12;;;;5101:15;;;5098:35;;;5129:1;5126;5119:12;5098:35;5165:2;5157:6;5153:15;5177:142;5193:6;5188:3;5185:15;5177:142;;;5259:17;;5247:30;;5297:12;;;;5210;;5177:142;;;-1:-1:-1;5337:5:1;4686:662;-1:-1:-1;;;;;;4686:662:1:o;5353:1215::-;5471:6;5479;5532:2;5520:9;5511:7;5507:23;5503:32;5500:52;;;5548:1;5545;5538:12;5500:52;5588:9;5575:23;5617:18;5658:2;5650:6;5647:14;5644:34;;;5674:1;5671;5664:12;5644:34;5712:6;5701:9;5697:22;5687:32;;5757:7;5750:4;5746:2;5742:13;5738:27;5728:55;;5779:1;5776;5769:12;5728:55;5815:2;5802:16;5837:4;5861:60;5877:43;5917:2;5877:43;:::i;5861:60::-;5955:15;;;6037:1;6033:10;;;;6025:19;;6021:28;;;5986:12;;;;6061:19;;;6058:39;;;6093:1;6090;6083:12;6058:39;6117:11;;;;6137:217;6153:6;6148:3;6145:15;6137:217;;;6233:3;6220:17;6250:31;6275:5;6250:31;:::i;:::-;6294:18;;6170:12;;;;6332;;;;6137:217;;;6373:5;-1:-1:-1;;6416:18:1;;6403:32;;-1:-1:-1;;6447:16:1;;;6444:36;;;6476:1;6473;6466:12;6444:36;;6499:63;6554:7;6543:8;6532:9;6528:24;6499:63;:::i;:::-;6489:73;;;5353:1215;;;;;:::o;6573:180::-;6632:6;6685:2;6673:9;6664:7;6660:23;6656:32;6653:52;;;6701:1;6698;6691:12;6653:52;-1:-1:-1;6724:23:1;;6573:180;-1:-1:-1;6573:180:1:o;7201:388::-;7269:6;7277;7330:2;7318:9;7309:7;7305:23;7301:32;7298:52;;;7346:1;7343;7336:12;7298:52;7385:9;7372:23;7404:31;7429:5;7404:31;:::i;:::-;7454:5;-1:-1:-1;7511:2:1;7496:18;;7483:32;7524:33;7483:32;7524:33;:::i;:::-;7576:7;7566:17;;;7201:388;;;;;:::o;7594:248::-;7662:6;7670;7723:2;7711:9;7702:7;7698:23;7694:32;7691:52;;;7739:1;7736;7729:12;7691:52;-1:-1:-1;;7762:23:1;;;7832:2;7817:18;;;7804:32;;-1:-1:-1;7594:248:1:o;7847:401::-;8049:2;8031:21;;;8088:2;8068:18;;;8061:30;8127:34;8122:2;8107:18;;8100:62;-1:-1:-1;;;8193:2:1;8178:18;;8171:35;8238:3;8223:19;;7847:401::o;8253:404::-;8455:2;8437:21;;;8494:2;8474:18;;;8467:30;8533:34;8528:2;8513:18;;8506:62;-1:-1:-1;;;8599:2:1;8584:18;;8577:38;8647:3;8632:19;;8253:404::o;8662:402::-;8864:2;8846:21;;;8903:2;8883:18;;;8876:30;8942:34;8937:2;8922:18;;8915:62;-1:-1:-1;;;9008:2:1;8993:18;;8986:36;9054:3;9039:19;;8662:402::o;9069:127::-;9130:10;9125:3;9121:20;9118:1;9111:31;9161:4;9158:1;9151:15;9185:4;9182:1;9175:15;9201:422;9290:1;9333:5;9290:1;9347:270;9368:7;9358:8;9355:21;9347:270;;;9427:4;9423:1;9419:6;9415:17;9409:4;9406:27;9403:53;;;9436:18;;:::i;:::-;9486:7;9476:8;9472:22;9469:55;;;9506:16;;;;9469:55;9585:22;;;;9545:15;;;;9347:270;;;9351:3;9201:422;;;;;:::o;9628:806::-;9677:5;9707:8;9697:80;;-1:-1:-1;9748:1:1;9762:5;;9697:80;9796:4;9786:76;;-1:-1:-1;9833:1:1;9847:5;;9786:76;9878:4;9896:1;9891:59;;;;9964:1;9959:130;;;;9871:218;;9891:59;9921:1;9912:10;;9935:5;;;9959:130;9996:3;9986:8;9983:17;9980:43;;;10003:18;;:::i;:::-;-1:-1:-1;;10059:1:1;10045:16;;10074:5;;9871:218;;10173:2;10163:8;10160:16;10154:3;10148:4;10145:13;10141:36;10135:2;10125:8;10122:16;10117:2;10111:4;10108:12;10104:35;10101:77;10098:159;;;-1:-1:-1;10210:19:1;;;10242:5;;10098:159;10289:34;10314:8;10308:4;10289:34;:::i;:::-;10359:6;10355:1;10351:6;10347:19;10338:7;10335:32;10332:58;;;10370:18;;:::i;:::-;10408:20;;9628:806;-1:-1:-1;;;9628:806:1:o;10439:140::-;10497:5;10526:47;10567:4;10557:8;10553:19;10547:4;10526:47;:::i;10584:168::-;10624:7;10690:1;10686;10682:6;10678:14;10675:1;10672:21;10667:1;10660:9;10653:17;10649:45;10646:71;;;10697:18;;:::i;:::-;-1:-1:-1;10737:9:1;;10584:168::o;11470:251::-;11540:6;11593:2;11581:9;11572:7;11568:23;11564:32;11561:52;;;11609:1;11606;11599:12;11561:52;11641:9;11635:16;11660:31;11685:5;11660:31;:::i;12871:127::-;12932:10;12927:3;12923:20;12920:1;12913:31;12963:4;12960:1;12953:15;12987:4;12984:1;12977:15;13003:135;13042:3;-1:-1:-1;;13063:17:1;;13060:43;;;13083:18;;:::i;:::-;-1:-1:-1;13130:1:1;13119:13;;13003:135::o;13143:217::-;13183:1;13209;13199:132;;13253:10;13248:3;13244:20;13241:1;13234:31;13288:4;13285:1;13278:15;13316:4;13313:1;13306:15;13199:132;-1:-1:-1;13345:9:1;;13143:217::o;14137:184::-;14207:6;14260:2;14248:9;14239:7;14235:23;14231:32;14228:52;;;14276:1;14273;14266:12;14228:52;-1:-1:-1;14299:16:1;;14137:184;-1:-1:-1;14137:184:1:o;19394:128::-;19434:3;19465:1;19461:6;19458:1;19455:13;19452:39;;;19471:18;;:::i;:::-;-1:-1:-1;19507:9:1;;19394:128::o;20147:306::-;20235:6;20243;20251;20304:2;20292:9;20283:7;20279:23;20275:32;20272:52;;;20320:1;20317;20310:12;20272:52;20349:9;20343:16;20333:26;;20399:2;20388:9;20384:18;20378:25;20368:35;;20443:2;20432:9;20428:18;20422:25;20412:35;;20147:306;;;;;:::o;20458:125::-;20498:4;20526:1;20523;20520:8;20517:34;;;20531:18;;:::i;:::-;-1:-1:-1;20568:9:1;;20458:125::o;20588:980::-;20850:4;20898:3;20887:9;20883:19;20929:6;20918:9;20911:25;20955:2;20993:6;20988:2;20977:9;20973:18;20966:34;21036:3;21031:2;21020:9;21016:18;21009:31;21060:6;21095;21089:13;21126:6;21118;21111:22;21164:3;21153:9;21149:19;21142:26;;21203:2;21195:6;21191:15;21177:29;;21224:1;21234:195;21248:6;21245:1;21242:13;21234:195;;;21313:13;;-1:-1:-1;;;;;21309:39:1;21297:52;;21404:15;;;;21369:12;;;;21345:1;21263:9;21234:195;;;-1:-1:-1;;;;;;;21485:32:1;;;;21480:2;21465:18;;21458:60;-1:-1:-1;;;21549:3:1;21534:19;21527:35;21446:3;20588:980;-1:-1:-1;;;20588:980:1:o
Swarm Source
ipfs://88a73e90a1390fcc9e25d7b1165ed285cda5fa556bce57fddac9c0b41b75877a
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.