ERC-20
Deflationary Token
Overview
Max Total Supply
50,000,000,000,000,000 CAT
Holders
4,571 ( 0.131%)
Market
Price
$0.00 @ 0.000000 ETH (-4.67%)
Onchain Market Cap
$13,452,150.00
Circulating Supply Market Cap
$13,444,307.00
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Catcoin
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-07 */ // SPDX-License-Identifier: NOLICENSE pragma solidity ^0.8.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } contract Catcoin is Context, IERC20, Ownable { mapping (address => uint256) private _balance; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isBot; bool public swapEnabled; bool private swapping; IRouter private router; address private pair; uint8 private constant DECIMALS = 9; uint256 private constant MAX = ~uint256(0); uint256 private constant T_TOTAL = 5e16 * 10**DECIMALS; uint256 public swapTokensAtAmount = 10_000_000_000_000 * 10**DECIMALS; address public constant ZERO_ADDRESS = address(0); address public marketingAddress = ZERO_ADDRESS; string private constant NAME = "Catcoin"; string private constant SYMBOL = "CAT"; enum ETransferType { Sell, Buy, Transfer } struct Taxes { uint16 marketing; uint16 liquidity; } uint8 public transferTaxesTier; Taxes public transferTaxes = Taxes(0,0); uint8 public buyTaxesTier; Taxes public buyTaxes; uint8 public sellTaxesTier; Taxes public sellTaxes; struct TotFeesPaidStruct{ uint256 marketing; uint256 liquidity; } TotFeesPaidStruct public totFeesPaid; modifier lockTheSwap { swapping = true; _; swapping = false; } constructor (address routerAddress) { IRouter _router = IRouter(routerAddress); address _pair = IFactory(_router.factory()) .createPair(address(this), _router.WETH()); router = _router; pair = _pair; _balance[owner()] = T_TOTAL; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[marketingAddress]=true; etx(2); emit Transfer(address(0), owner(), T_TOTAL); } //std ERC20: function name() public pure returns (string memory) { return NAME; } function symbol() public pure returns (string memory) { return SYMBOL; } function decimals() public pure returns (uint8) { return DECIMALS; } //override ERC20: function totalSupply() public pure override returns (uint256) { return T_TOTAL; } function balanceOf(address account) public view override returns (uint256) { return _balance[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(amount <= balanceOf(from),"You are trying to transfer more than your balance"); require(!_isBot[from] && !_isBot[to], "You are a bot"); ETransferType transferType = ETransferType.Transfer; address trader = address(0); Taxes memory usedTaxes = transferTaxes; bool excludedFromFee = false; if (to == pair) { transferType = ETransferType.Sell; trader = from; usedTaxes = sellTaxes; excludedFromFee = _isExcludedFromFee[trader]; } else if (from == pair) { transferType = ETransferType.Buy; trader = to; usedTaxes = buyTaxes; excludedFromFee = _isExcludedFromFee[trader]; } else { usedTaxes = transferTaxes; excludedFromFee = _isExcludedFromFee[from] || _isExcludedFromFee[to]; } bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount; if(transferType != ETransferType.Buy && !swapping && swapEnabled && canSwap && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){ swapAndLiquify(swapTokensAtAmount); } if (excludedFromFee || usedTaxes.marketing + usedTaxes.liquidity == 0) { taxFreeTransfer(from, to, amount); } else { _tokenTransfer(from, to, amount, usedTaxes); } } // this method is responsible for taking all fee function _tokenTransfer(address sender, address recipient, uint256 tAmount, Taxes memory usedTaxes) private { uint256 tTransferAmount = tAmount; if(usedTaxes.liquidity != 0) { uint256 tLiquidity = tAmount * usedTaxes.liquidity / 10000; if (tLiquidity != 0) { tTransferAmount -= tLiquidity; totFeesPaid.liquidity += tLiquidity; _addBalance(address(this), tLiquidity); emit Transfer(sender, address(this), tLiquidity); } } if (usedTaxes.marketing != 0) { uint256 tMarketing = tAmount * usedTaxes.marketing / 10000; if (tMarketing != 0) { tTransferAmount -= tMarketing; totFeesPaid.marketing += tMarketing; _addBalance(marketingAddress, tMarketing); emit Transfer(sender, marketingAddress, tMarketing); } } _reduceBalance(sender, tAmount); if (tTransferAmount != 0) { _addBalance(recipient, tTransferAmount); emit Transfer(sender, recipient, tTransferAmount); } } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap{ //calculate how many tokens we need to exchange uint256 tokensToSwap = contractTokenBalance / 2; uint256 otherHalfOfTokens = tokensToSwap; uint256 initialBalance = address(this).balance; swapTokensForBNB(tokensToSwap, address(this)); uint256 newBalance = address(this).balance - (initialBalance); addLiquidity(otherHalfOfTokens, newBalance); } function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{value: bnbAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function swapTokensForBNB(uint256 tokenAmount, address recipient) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, payable(recipient), block.timestamp ); } function getTaxesValueByTier(uint8 tier) private view returns(uint16, uint16) { if (tier == 0) { return (0, 0); } if (tier == 1) { if (marketingAddress == ZERO_ADDRESS) { return (0, 60); } return (30, 30); } if (marketingAddress == ZERO_ADDRESS) { return (0, 500); } return (200, 300); } function getTransferTaxesValueByTier(uint8 tier) private view returns(uint16, uint16) { if (tier == 0) { return (0, 0); } if (tier == 1) { if (marketingAddress == ZERO_ADDRESS) { return (0, 0); } return (30, 0); } if (marketingAddress == ZERO_ADDRESS) { return (0, 0); } return (30, 0); } function checkAndUpdateTaxes(bool buyChanged, bool sellChanged, bool transferChanged) private { if (buyChanged) { (uint16 v1, uint16 v2) = getTaxesValueByTier(buyTaxesTier); buyTaxes = Taxes(v1, v2); } if (sellChanged) { (uint16 v1, uint16 v2) = getTaxesValueByTier(sellTaxesTier); sellTaxes = Taxes(v1, v2); } if (transferChanged) { (uint16 v1, uint16 v2) = getTransferTaxesValueByTier(transferTaxesTier); transferTaxes = Taxes(v1, v2); } } function updateMarketingWallet(address newWallet) external onlyOwner{ require(marketingAddress != newWallet, "Wallet already set"); marketingAddress = newWallet; _isExcludedFromFee[marketingAddress] = true; checkAndUpdateTaxes(true, true, true); } function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{ swapTokensAtAmount = amount * 10**DECIMALS; } function updateSwapEnabled(bool _enabled) external onlyOwner{ swapEnabled = _enabled; } function setAntibot(address account, bool state) external onlyOwner{ require(_isBot[account] != state, "Value already set"); _isBot[account] = state; } function bulkAntiBot(address[] memory accounts, bool state) external onlyOwner{ for(uint256 i = 0; i < accounts.length; i++){ _isBot[accounts[i]] = state; } } function isBot(address account) public view returns(bool){ return _isBot[account]; } function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{ router = IRouter(newRouter); pair = newPair; } function taxFreeTransfer(address sender, address recipient, uint256 tAmount) internal { _reduceBalance(sender, tAmount); _addBalance(recipient, tAmount); emit Transfer(sender, recipient, tAmount); } function _addBalance(address account, uint256 tAmount) private { _balance[account] += tAmount; } function _reduceBalance(address account, uint256 tAmount) private { _balance[account] -= tAmount; } function airdropTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner{ require(accounts.length == amounts.length, "Arrays must have the same size"); for(uint256 i= 0; i < accounts.length; i++){ taxFreeTransfer(msg.sender, accounts[i], amounts[i] * 10**DECIMALS); } } function dtx() public onlyOwner{ buyTaxesTier = 0; sellTaxesTier = 0; transferTaxesTier = 0; checkAndUpdateTaxes(true, true, true); } function etx(uint8 taxesTier) public onlyOwner{ require(taxesTier > 0 && taxesTier <=2); buyTaxesTier = taxesTier; sellTaxesTier = taxesTier; transferTaxesTier = taxesTier; checkAndUpdateTaxes(true, true, true); } function etxBuy(uint8 taxesTier) public onlyOwner{ require(taxesTier > 0 && taxesTier <=2); buyTaxesTier = taxesTier; checkAndUpdateTaxes(true, false, false); } function etxSell(uint8 taxesTier) public onlyOwner{ require(taxesTier > 0 && taxesTier <=2); sellTaxesTier = taxesTier; checkAndUpdateTaxes(false, true, false); } function etxTransfer(uint8 taxesTier) public onlyOwner{ require(taxesTier > 0 && taxesTier <=2); transferTaxesTier = taxesTier; checkAndUpdateTaxes(false, false, true); } function dtxBuy() public onlyOwner{ buyTaxesTier = 0; checkAndUpdateTaxes(true, false, false); } function dtxSell() public onlyOwner{ sellTaxesTier = 0; checkAndUpdateTaxes(false, true, false); } function dtxTransfer() public onlyOwner{ transferTaxesTier = 0; checkAndUpdateTaxes(false, false, true); } //Use this in case BNB are sent to the contract by mistake function rescueBNB(uint256 weiAmount) external onlyOwner{ require(address(this).balance >= weiAmount, "insufficient BNB balance"); payable(msg.sender).transfer(weiAmount); } // Function to allow admin to claim *other* BEP20 tokens sent to this contract (by mistake) // Owner cannot transfer out self from this smart contract function rescueAnyBEP20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner { require(_tokenAddr != address(this), "Cannot transfer out self!"); IERC20(_tokenAddr).transfer(_to, _amount); } receive() external payable{ } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":[],"name":"ZERO_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropTokens","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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTaxes","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxesTier","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dtx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dtxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dtxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dtxTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"taxesTier","type":"uint8"}],"name":"etx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"taxesTier","type":"uint8"}],"name":"etxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"taxesTier","type":"uint8"}],"name":"etxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"taxesTier","type":"uint8"}],"name":"etxTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxesTier","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","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":"transferTaxes","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferTaxesTier","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052620000126009600a62000792565b62000024906509184e72a000620007aa565b600755600880546001600160a01b03191690556040805180820190915260008082526020909101526009805463ffffffff191690553480156200006657600080fd5b5060405162003050380380620030508339810160408190526200008991620007c4565b62000094336200035a565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000da573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001009190620007c4565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200014e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001749190620007c4565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620001c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e89190620007c4565b6005805462010000600160b01b031916620100006001600160a01b038681169190910291909117909155600680546001600160a01b0319169183169190911790559050620002396009600a62000792565b6200024c9066b1a2bc2ec50000620007aa565b60016000620002636000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506001600360006200029d620003aa60201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560085490911681526003909252902080549091166001179055620002f06002620003b9565b600080546001600160a01b0316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200032d6009600a62000792565b620003409066b1a2bc2ec50000620007aa565b60405190815260200160405180910390a3505050620007ef565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031690565b6000546001600160a01b03163314620004185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b60008160ff1611801562000430575060028160ff1611155b6200043a57600080fd5b600a805460ff1990811660ff8416908117909255600c8054909116821790556008805460ff60a01b1916600160a01b909202919091179055620004806001808062000483565b50565b8215620004dc57600a546000908190620004a09060ff166200059a565b6040805180820190915261ffff928316808252929091166020909101819052600b80546201000090920263ffffffff1990921690921717905550505b81156200053557600c546000908190620004f99060ff166200059a565b6040805180820190915261ffff928316808252929091166020909101819052600d80546201000090920263ffffffff1990921690921717905550505b8015620005955760085460009081906200055990600160a01b900460ff1662000613565b6040805180820190915261ffff928316808252929091166020909101819052600980546201000090920263ffffffff1990921690921717905550505b505050565b6000808260ff16600003620005b457506000928392509050565b8260ff16600103620005e8576008546001600160a01b0316620005dd5750600092603c92509050565b50601e928392509050565b6008546001600160a01b03166200060657506000926101f492509050565b5060c89261012c92509050565b6000808260ff166000036200062d57506000928392509050565b8260ff1660010362000661576008546001600160a01b03166200065557506000928392509050565b50601e92600092509050565b6008546001600160a01b03166200065557506000928392509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006d4578160001904821115620006b857620006b86200067d565b80851615620006c657918102915b93841c939080029062000698565b509250929050565b600082620006ed575060016200078c565b81620006fc575060006200078c565b8160018114620007155760028114620007205762000740565b60019150506200078c565b60ff8411156200073457620007346200067d565b50506001821b6200078c565b5060208310610133831016604e8410600b841016171562000765575081810a6200078c565b62000771838362000693565b80600019048211156200078857620007886200067d565b0290505b92915050565b6000620007a360ff841683620006dc565b9392505050565b80820281158282048414176200078c576200078c6200067d565b600060208284031215620007d757600080fd5b81516001600160a01b0381168114620007a357600080fd5b61285180620007ff6000396000f3fe6080604052600436106102815760003560e01c8063715018a61161014f578063b2ca2f06116100c1578063e11655451161007a578063e116554514610847578063e2f4560514610867578063ea2f0b371461087d578063f2fde38b1461089d578063f66895a3146108bd578063f90dfee5146108e257600080fd5b8063b2ca2f0614610777578063b31470a41461078c578063cd4c7d90146107ac578063d257b34f146107c1578063d54adc84146107e1578063dd62ed3e1461080157600080fd5b80639ba5e4d5116101135780639ba5e4d5146106ad5780639dbcb1d6146106dd578063a457c2d7146106f7578063a5ece94114610717578063a9059cbb14610737578063aacebbe31461075757600080fd5b8063715018a614610609578063864701a51461061e5780638da5cb5b14610643578063924de9b71461066157806395d89b411461068157600080fd5b806340b28c2f116101f35780635331803c116101ac5780635331803c146104f35780635342acb414610533578063538ba4f91461056c5780636ddd171314610599578063706f6937146105b357806370a08231146105d357600080fd5b806340b28c2f1461043e57806342b36ed01461045e578063437823ec14610473578063441b1d301461049357806347c23092146104b35780634ac92b27146104d357600080fd5b80632427b7c3116102455780632427b7c3146103645780632dfb2cbc14610397578063313ce567146103b757806339420731146103cb57806339509351146103e55780633bbac5791461040557600080fd5b80630444a3731461028d57806306fdde03146102af578063095ea7b3146102f157806318160ddd1461032157806323b872dd1461034457600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102ad6102a836600461217b565b6108f7565b005b3480156102bb57600080fd5b5060408051808201909152600781526621b0ba31b7b4b760c91b60208201525b6040516102e891906121a5565b60405180910390f35b3480156102fd57600080fd5b5061031161030c366004612208565b610969565b60405190151581526020016102e8565b34801561032d57600080fd5b50610336610980565b6040519081526020016102e8565b34801561035057600080fd5b5061031161035f366004612234565b6109a4565b34801561037057600080fd5b5060085461038590600160a01b900460ff1681565b60405160ff90911681526020016102e8565b3480156103a357600080fd5b506102ad6103b236600461217b565b610a5e565b3480156103c357600080fd5b506009610385565b3480156103d757600080fd5b50600c546103859060ff1681565b3480156103f157600080fd5b50610311610400366004612208565b610acd565b34801561041157600080fd5b50610311610420366004612275565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561044a57600080fd5b506102ad610459366004612292565b610b04565b34801561046a57600080fd5b506102ad610b68565b34801561047f57600080fd5b506102ad61048e366004612275565b610bae565b34801561049f57600080fd5b506102ad6104ae3660046122cb565b610bfc565b3480156104bf57600080fd5b506102ad6104ce366004612234565b610ca7565b3480156104df57600080fd5b506102ad6104ee36600461217b565b610da2565b3480156104ff57600080fd5b506009546105189061ffff808216916201000090041682565b6040805161ffff9384168152929091166020830152016102e8565b34801561053f57600080fd5b5061031161054e366004612275565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561057857600080fd5b50610581600081565b6040516001600160a01b0390911681526020016102e8565b3480156105a557600080fd5b506005546103119060ff1681565b3480156105bf57600080fd5b506102ad6105ce3660046123c3565b610e30565b3480156105df57600080fd5b506103366105ee366004612275565b6001600160a01b031660009081526001602052604090205490565b34801561061557600080fd5b506102ad610f23565b34801561062a57600080fd5b50600b546105189061ffff808216916201000090041682565b34801561064f57600080fd5b506000546001600160a01b0316610581565b34801561066d57600080fd5b506102ad61067c36600461248c565b610f57565b34801561068d57600080fd5b5060408051808201909152600381526210d05560ea1b60208201526102db565b3480156106b957600080fd5b50600e54600f546106c8919082565b604080519283526020830191909152016102e8565b3480156106e957600080fd5b50600a546103859060ff1681565b34801561070357600080fd5b50610311610712366004612208565b610f94565b34801561072357600080fd5b50600854610581906001600160a01b031681565b34801561074357600080fd5b50610311610752366004612208565b61102f565b34801561076357600080fd5b506102ad610772366004612275565b61103c565b34801561078357600080fd5b506102ad6110fd565b34801561079857600080fd5b506102ad6107a73660046124a9565b611156565b3480156107b857600080fd5b506102ad6111e7565b3480156107cd57600080fd5b506102ad6107dc3660046122cb565b611228565b3480156107ed57600080fd5b506102ad6107fc36600461217b565b61126e565b34801561080d57600080fd5b5061033661081c366004612292565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561085357600080fd5b506102ad6108623660046124f0565b6112d4565b34801561087357600080fd5b5061033660075481565b34801561088957600080fd5b506102ad610898366004612275565b61138d565b3480156108a957600080fd5b506102ad6108b8366004612275565b6113d8565b3480156108c957600080fd5b50600d546105189061ffff808216916201000090041682565b3480156108ee57600080fd5b506102ad611470565b6000546001600160a01b0316331461092a5760405162461bcd60e51b81526004016109219061251e565b60405180910390fd5b60008160ff16118015610941575060028160ff1611155b61094a57600080fd5b600a805460ff191660ff831617905561096660016000806114ad565b50565b60006109763384846115ba565b5060015b92915050565b600061098e6009600a61264d565b61099f9066b1a2bc2ec5000061265c565b905090565b60006109b18484846116df565b6001600160a01b03841660009081526002602090815260408083203384529091529020546000198114610a535782811015610a3f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610921565b610a538533610a4e8685612673565b6115ba565b506001949350505050565b6000546001600160a01b03163314610a885760405162461bcd60e51b81526004016109219061251e565b60008160ff16118015610a9f575060028160ff1611155b610aa857600080fd5b6008805460ff60a01b1916600160a01b60ff84160217905561096660008060016114ad565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610976918590610a4e908690612686565b6000546001600160a01b03163314610b2e5760405162461bcd60e51b81526004016109219061251e565b6005805462010000600160b01b031916620100006001600160a01b0394851602179055600680546001600160a01b03191691909216179055565b6000546001600160a01b03163314610b925760405162461bcd60e51b81526004016109219061251e565b6008805460ff60a01b19169055610bac60008060016114ad565b565b6000546001600160a01b03163314610bd85760405162461bcd60e51b81526004016109219061251e565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b6000546001600160a01b03163314610c265760405162461bcd60e51b81526004016109219061251e565b80471015610c765760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610921565b604051339082156108fc029083906000818181858888f19350505050158015610ca3573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610cd15760405162461bcd60e51b81526004016109219061251e565b306001600160a01b03841603610d295760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f74207472616e73666572206f75742073656c6621000000000000006044820152606401610921565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9c9190612699565b50505050565b6000546001600160a01b03163314610dcc5760405162461bcd60e51b81526004016109219061251e565b60008160ff16118015610de3575060028160ff1611155b610dec57600080fd5b600a805460ff1990811660ff8416908117909255600c8054909116821790556008805460ff60a01b1916600160a01b909202919091179055610966600180806114ad565b6000546001600160a01b03163314610e5a5760405162461bcd60e51b81526004016109219061251e565b8051825114610eab5760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d7573742068617665207468652073616d652073697a6500006044820152606401610921565b60005b8251811015610f1e57610f0c33848381518110610ecd57610ecd6126b6565b60200260200101516009600a610ee3919061264d565b858581518110610ef557610ef56126b6565b6020026020010151610f07919061265c565b611b61565b80610f16816126cc565b915050610eae565b505050565b6000546001600160a01b03163314610f4d5760405162461bcd60e51b81526004016109219061251e565b610bac6000611ba8565b6000546001600160a01b03163314610f815760405162461bcd60e51b81526004016109219061251e565b6005805460ff1916911515919091179055565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156110165760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610921565b6110253385610a4e8685612673565b5060019392505050565b60006109763384846116df565b6000546001600160a01b031633146110665760405162461bcd60e51b81526004016109219061251e565b6008546001600160a01b038083169116036110b85760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610921565b600880546001600160a01b0319166001600160a01b0383169081179091556000908152600360205260409020805460ff191660019081179091556109669080806114ad565b6000546001600160a01b031633146111275760405162461bcd60e51b81526004016109219061251e565b600a805460ff19908116909155600c805490911690556008805460ff60a01b19169055610bac600180806114ad565b6000546001600160a01b031633146111805760405162461bcd60e51b81526004016109219061251e565b60005b8251811015610f1e5781600460008584815181106111a3576111a36126b6565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806111df816126cc565b915050611183565b6000546001600160a01b031633146112115760405162461bcd60e51b81526004016109219061251e565b600c805460ff19169055610bac60006001816114ad565b6000546001600160a01b031633146112525760405162461bcd60e51b81526004016109219061251e565b61125e6009600a61264d565b611268908261265c565b60075550565b6000546001600160a01b031633146112985760405162461bcd60e51b81526004016109219061251e565b60008160ff161180156112af575060028160ff1611155b6112b857600080fd5b600c805460ff191660ff831617905561096660006001816114ad565b6000546001600160a01b031633146112fe5760405162461bcd60e51b81526004016109219061251e565b6001600160a01b03821660009081526004602052604090205481151560ff9091161515036113625760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610921565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113b75760405162461bcd60e51b81526004016109219061251e565b6001600160a01b03166000908152600360205260409020805460ff19169055565b6000546001600160a01b031633146114025760405162461bcd60e51b81526004016109219061251e565b6001600160a01b0381166114675760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610921565b61096681611ba8565b6000546001600160a01b0316331461149a5760405162461bcd60e51b81526004016109219061251e565b600a805460ff19169055610bac60016000805b821561150357600a5460009081906114c79060ff16611bf8565b6040805180820190915261ffff928316808252929091166020909101819052600b80546201000090920263ffffffff1990921690921717905550505b811561155957600c54600090819061151d9060ff16611bf8565b6040805180820190915261ffff928316808252929091166020909101819052600d80546201000090920263ffffffff1990921690921717905550505b8015610f1e5760008061157a600860149054906101000a900460ff16611c6d565b6040805180820190915261ffff928316808252929091166020909101819052600980546201000090920263ffffffff199092169092171790555050505050565b6001600160a01b03831661161c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610921565b6001600160a01b03821661167d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610921565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166117435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610921565b6001600160a01b0382166117a55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610921565b600081116118075760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610921565b6001600160a01b0383166000908152600160205260409020548111156118895760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610921565b6001600160a01b03831660009081526004602052604090205460ff161580156118cb57506001600160a01b03821660009081526004602052604090205460ff16155b6119075760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610921565b6040805180820190915260095461ffff80821683526201000090910416602082015260065460029160009182906001600160a01b0390811690871603611995575050604080518082018252600d5461ffff808216835262010000909104166020808301919091526001600160a01b03881660009081526003909152918220549193508692509060ff16611a64565b6006546001600160a01b03908116908816036119fa575050604080518082018252600b5461ffff808216835262010000909104166020808301919091526001600160a01b0387166000908152600390915291909120546001935085925060ff16611a64565b60408051808201825260095461ffff808216835262010000909104166020808301919091526001600160a01b038a1660009081526003909152919091205490925060ff1680611a6157506001600160a01b03861660009081526003602052604090205460ff165b90505b600754306000908152600160205260408120549091111590506001856002811115611a9157611a916126e5565b14158015611aa75750600554610100900460ff16155b8015611ab5575060055460ff165b8015611abe5750805b8015611ae357506001600160a01b03881660009081526003602052604090205460ff16155b8015611b0857506001600160a01b03871660009081526003602052604090205460ff16155b15611b1857611b18600754611cd3565b8180611b36575060208301518351611b3091906126fb565b61ffff16155b15611b4b57611b46888888611b61565b611b57565b611b5788888886611d27565b5050505050505050565b611b6b8382611ec7565b611b758282611ef8565b816001600160a01b0316836001600160a01b03166000805160206127fc833981519152836040516116d291815260200190565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808260ff16600003611c1157506000928392509050565b8260ff16600103611c43576008546001600160a01b0316611c385750600092603c92509050565b50601e928392509050565b6008546001600160a01b0316611c6057506000926101f492509050565b5060c89261012c92509050565b6000808260ff16600003611c8657506000928392509050565b8260ff16600103611cb8576008546001600160a01b0316611cac57506000928392509050565b50601e92600092509050565b6008546001600160a01b0316611cac57506000928392509050565b6005805461ff0019166101001790556000611cef60028361271d565b90508047611cfd8230611f20565b6000611d098247612673565b9050611d1583826120a0565b50506005805461ff0019169055505050565b6020810151829061ffff1615611dc4576000612710836020015161ffff1685611d50919061265c565b611d5a919061271d565b90508015611dc257611d6c8183612673565b915080600e6001016000828254611d839190612686565b90915550611d9390503082611ef8565b60405181815230906001600160a01b038816906000805160206127fc8339815191529060200160405180910390a35b505b815161ffff1615611e6a57815160009061271090611de69061ffff168661265c565b611df0919061271d565b90508015611e6857611e028183612673565b915080600e6000016000828254611e199190612686565b9091555050600854611e34906001600160a01b031682611ef8565b6008546040518281526001600160a01b03918216918816906000805160206127fc8339815191529060200160405180910390a35b505b611e748584611ec7565b8015611ec057611e848482611ef8565b836001600160a01b0316856001600160a01b03166000805160206127fc83398151915283604051611eb791815260200190565b60405180910390a35b5050505050565b6001600160a01b03821660009081526001602052604081208054839290611eef908490612673565b90915550505050565b6001600160a01b03821660009081526001602052604081208054839290611eef908490612686565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f5557611f556126b6565b60200260200101906001600160a01b031690816001600160a01b031681525050600560029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fec919061273f565b81600181518110611fff57611fff6126b6565b6001600160a01b03928316602091820292909201015260055461202b91309162010000900416856115ba565b60055460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac9479061206990869060009086908890429060040161275c565b600060405180830381600087803b15801561208357600080fd5b505af1158015612097573d6000803e3d6000fd5b50505050505050565b6005546120be9030906201000090046001600160a01b0316846115ba565b6005546001600160a01b03620100009091041663f305d7198230856000806120ee6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612156573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ec091906127cd565b60006020828403121561218d57600080fd5b813560ff8116811461219e57600080fd5b9392505050565b600060208083528351808285015260005b818110156121d2578581018301518582016040015282016121b6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461096657600080fd5b6000806040838503121561221b57600080fd5b8235612226816121f3565b946020939093013593505050565b60008060006060848603121561224957600080fd5b8335612254816121f3565b92506020840135612264816121f3565b929592945050506040919091013590565b60006020828403121561228757600080fd5b813561219e816121f3565b600080604083850312156122a557600080fd5b82356122b0816121f3565b915060208301356122c0816121f3565b809150509250929050565b6000602082840312156122dd57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612323576123236122e4565b604052919050565b600067ffffffffffffffff821115612345576123456122e4565b5060051b60200190565b600082601f83011261236057600080fd5b813560206123756123708361232b565b6122fa565b82815260059290921b8401810191818101908684111561239457600080fd5b8286015b848110156123b85780356123ab816121f3565b8352918301918301612398565b509695505050505050565b600080604083850312156123d657600080fd5b823567ffffffffffffffff808211156123ee57600080fd5b6123fa8683870161234f565b935060209150818501358181111561241157600080fd5b85019050601f8101861361242457600080fd5b80356124326123708261232b565b81815260059190911b8201830190838101908883111561245157600080fd5b928401925b8284101561246f57833582529284019290840190612456565b80955050505050509250929050565b801515811461096657600080fd5b60006020828403121561249e57600080fd5b813561219e8161247e565b600080604083850312156124bc57600080fd5b823567ffffffffffffffff8111156124d357600080fd5b6124df8582860161234f565b92505060208301356122c08161247e565b6000806040838503121561250357600080fd5b823561250e816121f3565b915060208301356122c08161247e565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156125a457816000190482111561258a5761258a612553565b8085161561259757918102915b93841c939080029061256e565b509250929050565b6000826125bb5750600161097a565b816125c85750600061097a565b81600181146125de57600281146125e857612604565b600191505061097a565b60ff8411156125f9576125f9612553565b50506001821b61097a565b5060208310610133831016604e8410600b8410161715612627575081810a61097a565b6126318383612569565b806000190482111561264557612645612553565b029392505050565b600061219e60ff8416836125ac565b808202811582820484141761097a5761097a612553565b8181038181111561097a5761097a612553565b8082018082111561097a5761097a612553565b6000602082840312156126ab57600080fd5b815161219e8161247e565b634e487b7160e01b600052603260045260246000fd5b6000600182016126de576126de612553565b5060010190565b634e487b7160e01b600052602160045260246000fd5b61ffff81811683821601908082111561271657612716612553565b5092915050565b60008261273a57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561275157600080fd5b815161219e816121f3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127ac5784516001600160a01b031683529383019391830191600101612787565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156127e257600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cca24b2d0ce0a4f88248219abfcac54b604da7d146e368879ac0c05131ebe69264736f6c634300081200330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode
0x6080604052600436106102815760003560e01c8063715018a61161014f578063b2ca2f06116100c1578063e11655451161007a578063e116554514610847578063e2f4560514610867578063ea2f0b371461087d578063f2fde38b1461089d578063f66895a3146108bd578063f90dfee5146108e257600080fd5b8063b2ca2f0614610777578063b31470a41461078c578063cd4c7d90146107ac578063d257b34f146107c1578063d54adc84146107e1578063dd62ed3e1461080157600080fd5b80639ba5e4d5116101135780639ba5e4d5146106ad5780639dbcb1d6146106dd578063a457c2d7146106f7578063a5ece94114610717578063a9059cbb14610737578063aacebbe31461075757600080fd5b8063715018a614610609578063864701a51461061e5780638da5cb5b14610643578063924de9b71461066157806395d89b411461068157600080fd5b806340b28c2f116101f35780635331803c116101ac5780635331803c146104f35780635342acb414610533578063538ba4f91461056c5780636ddd171314610599578063706f6937146105b357806370a08231146105d357600080fd5b806340b28c2f1461043e57806342b36ed01461045e578063437823ec14610473578063441b1d301461049357806347c23092146104b35780634ac92b27146104d357600080fd5b80632427b7c3116102455780632427b7c3146103645780632dfb2cbc14610397578063313ce567146103b757806339420731146103cb57806339509351146103e55780633bbac5791461040557600080fd5b80630444a3731461028d57806306fdde03146102af578063095ea7b3146102f157806318160ddd1461032157806323b872dd1461034457600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102ad6102a836600461217b565b6108f7565b005b3480156102bb57600080fd5b5060408051808201909152600781526621b0ba31b7b4b760c91b60208201525b6040516102e891906121a5565b60405180910390f35b3480156102fd57600080fd5b5061031161030c366004612208565b610969565b60405190151581526020016102e8565b34801561032d57600080fd5b50610336610980565b6040519081526020016102e8565b34801561035057600080fd5b5061031161035f366004612234565b6109a4565b34801561037057600080fd5b5060085461038590600160a01b900460ff1681565b60405160ff90911681526020016102e8565b3480156103a357600080fd5b506102ad6103b236600461217b565b610a5e565b3480156103c357600080fd5b506009610385565b3480156103d757600080fd5b50600c546103859060ff1681565b3480156103f157600080fd5b50610311610400366004612208565b610acd565b34801561041157600080fd5b50610311610420366004612275565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561044a57600080fd5b506102ad610459366004612292565b610b04565b34801561046a57600080fd5b506102ad610b68565b34801561047f57600080fd5b506102ad61048e366004612275565b610bae565b34801561049f57600080fd5b506102ad6104ae3660046122cb565b610bfc565b3480156104bf57600080fd5b506102ad6104ce366004612234565b610ca7565b3480156104df57600080fd5b506102ad6104ee36600461217b565b610da2565b3480156104ff57600080fd5b506009546105189061ffff808216916201000090041682565b6040805161ffff9384168152929091166020830152016102e8565b34801561053f57600080fd5b5061031161054e366004612275565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561057857600080fd5b50610581600081565b6040516001600160a01b0390911681526020016102e8565b3480156105a557600080fd5b506005546103119060ff1681565b3480156105bf57600080fd5b506102ad6105ce3660046123c3565b610e30565b3480156105df57600080fd5b506103366105ee366004612275565b6001600160a01b031660009081526001602052604090205490565b34801561061557600080fd5b506102ad610f23565b34801561062a57600080fd5b50600b546105189061ffff808216916201000090041682565b34801561064f57600080fd5b506000546001600160a01b0316610581565b34801561066d57600080fd5b506102ad61067c36600461248c565b610f57565b34801561068d57600080fd5b5060408051808201909152600381526210d05560ea1b60208201526102db565b3480156106b957600080fd5b50600e54600f546106c8919082565b604080519283526020830191909152016102e8565b3480156106e957600080fd5b50600a546103859060ff1681565b34801561070357600080fd5b50610311610712366004612208565b610f94565b34801561072357600080fd5b50600854610581906001600160a01b031681565b34801561074357600080fd5b50610311610752366004612208565b61102f565b34801561076357600080fd5b506102ad610772366004612275565b61103c565b34801561078357600080fd5b506102ad6110fd565b34801561079857600080fd5b506102ad6107a73660046124a9565b611156565b3480156107b857600080fd5b506102ad6111e7565b3480156107cd57600080fd5b506102ad6107dc3660046122cb565b611228565b3480156107ed57600080fd5b506102ad6107fc36600461217b565b61126e565b34801561080d57600080fd5b5061033661081c366004612292565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561085357600080fd5b506102ad6108623660046124f0565b6112d4565b34801561087357600080fd5b5061033660075481565b34801561088957600080fd5b506102ad610898366004612275565b61138d565b3480156108a957600080fd5b506102ad6108b8366004612275565b6113d8565b3480156108c957600080fd5b50600d546105189061ffff808216916201000090041682565b3480156108ee57600080fd5b506102ad611470565b6000546001600160a01b0316331461092a5760405162461bcd60e51b81526004016109219061251e565b60405180910390fd5b60008160ff16118015610941575060028160ff1611155b61094a57600080fd5b600a805460ff191660ff831617905561096660016000806114ad565b50565b60006109763384846115ba565b5060015b92915050565b600061098e6009600a61264d565b61099f9066b1a2bc2ec5000061265c565b905090565b60006109b18484846116df565b6001600160a01b03841660009081526002602090815260408083203384529091529020546000198114610a535782811015610a3f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610921565b610a538533610a4e8685612673565b6115ba565b506001949350505050565b6000546001600160a01b03163314610a885760405162461bcd60e51b81526004016109219061251e565b60008160ff16118015610a9f575060028160ff1611155b610aa857600080fd5b6008805460ff60a01b1916600160a01b60ff84160217905561096660008060016114ad565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610976918590610a4e908690612686565b6000546001600160a01b03163314610b2e5760405162461bcd60e51b81526004016109219061251e565b6005805462010000600160b01b031916620100006001600160a01b0394851602179055600680546001600160a01b03191691909216179055565b6000546001600160a01b03163314610b925760405162461bcd60e51b81526004016109219061251e565b6008805460ff60a01b19169055610bac60008060016114ad565b565b6000546001600160a01b03163314610bd85760405162461bcd60e51b81526004016109219061251e565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b6000546001600160a01b03163314610c265760405162461bcd60e51b81526004016109219061251e565b80471015610c765760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610921565b604051339082156108fc029083906000818181858888f19350505050158015610ca3573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610cd15760405162461bcd60e51b81526004016109219061251e565b306001600160a01b03841603610d295760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f74207472616e73666572206f75742073656c6621000000000000006044820152606401610921565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9c9190612699565b50505050565b6000546001600160a01b03163314610dcc5760405162461bcd60e51b81526004016109219061251e565b60008160ff16118015610de3575060028160ff1611155b610dec57600080fd5b600a805460ff1990811660ff8416908117909255600c8054909116821790556008805460ff60a01b1916600160a01b909202919091179055610966600180806114ad565b6000546001600160a01b03163314610e5a5760405162461bcd60e51b81526004016109219061251e565b8051825114610eab5760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d7573742068617665207468652073616d652073697a6500006044820152606401610921565b60005b8251811015610f1e57610f0c33848381518110610ecd57610ecd6126b6565b60200260200101516009600a610ee3919061264d565b858581518110610ef557610ef56126b6565b6020026020010151610f07919061265c565b611b61565b80610f16816126cc565b915050610eae565b505050565b6000546001600160a01b03163314610f4d5760405162461bcd60e51b81526004016109219061251e565b610bac6000611ba8565b6000546001600160a01b03163314610f815760405162461bcd60e51b81526004016109219061251e565b6005805460ff1916911515919091179055565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156110165760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610921565b6110253385610a4e8685612673565b5060019392505050565b60006109763384846116df565b6000546001600160a01b031633146110665760405162461bcd60e51b81526004016109219061251e565b6008546001600160a01b038083169116036110b85760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610921565b600880546001600160a01b0319166001600160a01b0383169081179091556000908152600360205260409020805460ff191660019081179091556109669080806114ad565b6000546001600160a01b031633146111275760405162461bcd60e51b81526004016109219061251e565b600a805460ff19908116909155600c805490911690556008805460ff60a01b19169055610bac600180806114ad565b6000546001600160a01b031633146111805760405162461bcd60e51b81526004016109219061251e565b60005b8251811015610f1e5781600460008584815181106111a3576111a36126b6565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806111df816126cc565b915050611183565b6000546001600160a01b031633146112115760405162461bcd60e51b81526004016109219061251e565b600c805460ff19169055610bac60006001816114ad565b6000546001600160a01b031633146112525760405162461bcd60e51b81526004016109219061251e565b61125e6009600a61264d565b611268908261265c565b60075550565b6000546001600160a01b031633146112985760405162461bcd60e51b81526004016109219061251e565b60008160ff161180156112af575060028160ff1611155b6112b857600080fd5b600c805460ff191660ff831617905561096660006001816114ad565b6000546001600160a01b031633146112fe5760405162461bcd60e51b81526004016109219061251e565b6001600160a01b03821660009081526004602052604090205481151560ff9091161515036113625760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610921565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113b75760405162461bcd60e51b81526004016109219061251e565b6001600160a01b03166000908152600360205260409020805460ff19169055565b6000546001600160a01b031633146114025760405162461bcd60e51b81526004016109219061251e565b6001600160a01b0381166114675760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610921565b61096681611ba8565b6000546001600160a01b0316331461149a5760405162461bcd60e51b81526004016109219061251e565b600a805460ff19169055610bac60016000805b821561150357600a5460009081906114c79060ff16611bf8565b6040805180820190915261ffff928316808252929091166020909101819052600b80546201000090920263ffffffff1990921690921717905550505b811561155957600c54600090819061151d9060ff16611bf8565b6040805180820190915261ffff928316808252929091166020909101819052600d80546201000090920263ffffffff1990921690921717905550505b8015610f1e5760008061157a600860149054906101000a900460ff16611c6d565b6040805180820190915261ffff928316808252929091166020909101819052600980546201000090920263ffffffff199092169092171790555050505050565b6001600160a01b03831661161c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610921565b6001600160a01b03821661167d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610921565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166117435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610921565b6001600160a01b0382166117a55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610921565b600081116118075760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610921565b6001600160a01b0383166000908152600160205260409020548111156118895760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610921565b6001600160a01b03831660009081526004602052604090205460ff161580156118cb57506001600160a01b03821660009081526004602052604090205460ff16155b6119075760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610921565b6040805180820190915260095461ffff80821683526201000090910416602082015260065460029160009182906001600160a01b0390811690871603611995575050604080518082018252600d5461ffff808216835262010000909104166020808301919091526001600160a01b03881660009081526003909152918220549193508692509060ff16611a64565b6006546001600160a01b03908116908816036119fa575050604080518082018252600b5461ffff808216835262010000909104166020808301919091526001600160a01b0387166000908152600390915291909120546001935085925060ff16611a64565b60408051808201825260095461ffff808216835262010000909104166020808301919091526001600160a01b038a1660009081526003909152919091205490925060ff1680611a6157506001600160a01b03861660009081526003602052604090205460ff165b90505b600754306000908152600160205260408120549091111590506001856002811115611a9157611a916126e5565b14158015611aa75750600554610100900460ff16155b8015611ab5575060055460ff165b8015611abe5750805b8015611ae357506001600160a01b03881660009081526003602052604090205460ff16155b8015611b0857506001600160a01b03871660009081526003602052604090205460ff16155b15611b1857611b18600754611cd3565b8180611b36575060208301518351611b3091906126fb565b61ffff16155b15611b4b57611b46888888611b61565b611b57565b611b5788888886611d27565b5050505050505050565b611b6b8382611ec7565b611b758282611ef8565b816001600160a01b0316836001600160a01b03166000805160206127fc833981519152836040516116d291815260200190565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808260ff16600003611c1157506000928392509050565b8260ff16600103611c43576008546001600160a01b0316611c385750600092603c92509050565b50601e928392509050565b6008546001600160a01b0316611c6057506000926101f492509050565b5060c89261012c92509050565b6000808260ff16600003611c8657506000928392509050565b8260ff16600103611cb8576008546001600160a01b0316611cac57506000928392509050565b50601e92600092509050565b6008546001600160a01b0316611cac57506000928392509050565b6005805461ff0019166101001790556000611cef60028361271d565b90508047611cfd8230611f20565b6000611d098247612673565b9050611d1583826120a0565b50506005805461ff0019169055505050565b6020810151829061ffff1615611dc4576000612710836020015161ffff1685611d50919061265c565b611d5a919061271d565b90508015611dc257611d6c8183612673565b915080600e6001016000828254611d839190612686565b90915550611d9390503082611ef8565b60405181815230906001600160a01b038816906000805160206127fc8339815191529060200160405180910390a35b505b815161ffff1615611e6a57815160009061271090611de69061ffff168661265c565b611df0919061271d565b90508015611e6857611e028183612673565b915080600e6000016000828254611e199190612686565b9091555050600854611e34906001600160a01b031682611ef8565b6008546040518281526001600160a01b03918216918816906000805160206127fc8339815191529060200160405180910390a35b505b611e748584611ec7565b8015611ec057611e848482611ef8565b836001600160a01b0316856001600160a01b03166000805160206127fc83398151915283604051611eb791815260200190565b60405180910390a35b5050505050565b6001600160a01b03821660009081526001602052604081208054839290611eef908490612673565b90915550505050565b6001600160a01b03821660009081526001602052604081208054839290611eef908490612686565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f5557611f556126b6565b60200260200101906001600160a01b031690816001600160a01b031681525050600560029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fec919061273f565b81600181518110611fff57611fff6126b6565b6001600160a01b03928316602091820292909201015260055461202b91309162010000900416856115ba565b60055460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac9479061206990869060009086908890429060040161275c565b600060405180830381600087803b15801561208357600080fd5b505af1158015612097573d6000803e3d6000fd5b50505050505050565b6005546120be9030906201000090046001600160a01b0316846115ba565b6005546001600160a01b03620100009091041663f305d7198230856000806120ee6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612156573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ec091906127cd565b60006020828403121561218d57600080fd5b813560ff8116811461219e57600080fd5b9392505050565b600060208083528351808285015260005b818110156121d2578581018301518582016040015282016121b6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461096657600080fd5b6000806040838503121561221b57600080fd5b8235612226816121f3565b946020939093013593505050565b60008060006060848603121561224957600080fd5b8335612254816121f3565b92506020840135612264816121f3565b929592945050506040919091013590565b60006020828403121561228757600080fd5b813561219e816121f3565b600080604083850312156122a557600080fd5b82356122b0816121f3565b915060208301356122c0816121f3565b809150509250929050565b6000602082840312156122dd57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612323576123236122e4565b604052919050565b600067ffffffffffffffff821115612345576123456122e4565b5060051b60200190565b600082601f83011261236057600080fd5b813560206123756123708361232b565b6122fa565b82815260059290921b8401810191818101908684111561239457600080fd5b8286015b848110156123b85780356123ab816121f3565b8352918301918301612398565b509695505050505050565b600080604083850312156123d657600080fd5b823567ffffffffffffffff808211156123ee57600080fd5b6123fa8683870161234f565b935060209150818501358181111561241157600080fd5b85019050601f8101861361242457600080fd5b80356124326123708261232b565b81815260059190911b8201830190838101908883111561245157600080fd5b928401925b8284101561246f57833582529284019290840190612456565b80955050505050509250929050565b801515811461096657600080fd5b60006020828403121561249e57600080fd5b813561219e8161247e565b600080604083850312156124bc57600080fd5b823567ffffffffffffffff8111156124d357600080fd5b6124df8582860161234f565b92505060208301356122c08161247e565b6000806040838503121561250357600080fd5b823561250e816121f3565b915060208301356122c08161247e565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156125a457816000190482111561258a5761258a612553565b8085161561259757918102915b93841c939080029061256e565b509250929050565b6000826125bb5750600161097a565b816125c85750600061097a565b81600181146125de57600281146125e857612604565b600191505061097a565b60ff8411156125f9576125f9612553565b50506001821b61097a565b5060208310610133831016604e8410600b8410161715612627575081810a61097a565b6126318383612569565b806000190482111561264557612645612553565b029392505050565b600061219e60ff8416836125ac565b808202811582820484141761097a5761097a612553565b8181038181111561097a5761097a612553565b8082018082111561097a5761097a612553565b6000602082840312156126ab57600080fd5b815161219e8161247e565b634e487b7160e01b600052603260045260246000fd5b6000600182016126de576126de612553565b5060010190565b634e487b7160e01b600052602160045260246000fd5b61ffff81811683821601908082111561271657612716612553565b5092915050565b60008261273a57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561275157600080fd5b815161219e816121f3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127ac5784516001600160a01b031683529383019391830191600101612787565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156127e257600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cca24b2d0ce0a4f88248219abfcac54b604da7d146e368879ac0c05131ebe69264736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode Sourcemap
2849:15090:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16226:192;;;;;;;;;;-1:-1:-1;16226:192:0;;;;;:::i;:::-;;:::i;:::-;;4818:82;;;;;;;;;;-1:-1:-1;4888:4:0;;;;;;;;;;;;-1:-1:-1;;;4888:4:0;;;;4818:82;;;;;;;:::i;:::-;;;;;;;;5666:161;;;;;;;;;;-1:-1:-1;5666:161:0;;;;;:::i;:::-;;:::i;:::-;;;1462:14:1;;1455:22;1437:41;;1425:2;1410:18;5666:161:0;1297:187:1;5111:95:0;;;;;;;;;;;;;:::i;:::-;;;1635:25:1;;;1623:2;1608:18;5111:95:0;1489:177:1;5835:495:0;;;;;;;;;;-1:-1:-1;5835:495:0;;;;;:::i;:::-;;:::i;3869:30::-;;;;;;;;;;-1:-1:-1;3869:30:0;;;;-1:-1:-1;;;3869:30:0;;;;;;;;;2304:4:1;2292:17;;;2274:36;;2262:2;2247:18;3869:30:0;2132:184:1;16628:202:0;;;;;;;;;;-1:-1:-1;16628:202:0;;;;;:::i;:::-;;:::i;4998:82::-;;;;;;;;;;-1:-1:-1;3291:1:0;4998:82;;4012:26;;;;;;;;;;-1:-1:-1;4012:26:0;;;;;;;;6338:215;;;;;;;;;;-1:-1:-1;6338:215:0;;;;;:::i;:::-;;:::i;14664:98::-;;;;;;;;;;-1:-1:-1;14664:98:0;;;;;:::i;:::-;-1:-1:-1;;;;;14739:15:0;14716:4;14739:15;;;:6;:15;;;;;;;;;14664:98;14774:154;;;;;;;;;;-1:-1:-1;14774:154:0;;;;;:::i;:::-;;:::i;17094:129::-;;;;;;;;;;;;;:::i;6946:111::-;;;;;;;;;;-1:-1:-1;6946:111:0;;;;;:::i;:::-;;:::i;17295:196::-;;;;;;;;;;-1:-1:-1;17295:196:0;;;;;:::i;:::-;;:::i;17664:230::-;;;;;;;;;;-1:-1:-1;17664:230:0;;;;;:::i;:::-;;:::i;15955:263::-;;;;;;;;;;-1:-1:-1;15955:263:0;;;;;:::i;:::-;;:::i;3906:39::-;;;;;;;;;;-1:-1:-1;3906:39:0;;;;;;;;;;;;;;;;;;;3331:6:1;3364:15;;;3346:34;;3416:15;;;;3411:2;3396:18;;3389:43;3294:18;3906:39:0;3151:287:1;7185:123:0;;;;;;;;;;-1:-1:-1;7185:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;7273:27:0;7249:4;7273:27;;;:18;:27;;;;;;;;;7185:123;3497:49;;;;;;;;;;;;3544:1;3497:49;;;;;-1:-1:-1;;;;;3607:32:1;;;3589:51;;3577:2;3562:18;3497:49:0;3443:203:1;3139:23:0;;;;;;;;;;-1:-1:-1;3139:23:0;;;;;;;;15423:336;;;;;;;;;;-1:-1:-1;15423:336:0;;;;;:::i;:::-;;:::i;5214:118::-;;;;;;;;;;-1:-1:-1;5214:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;5307:17:0;5280:7;5307:17;;;:8;:17;;;;;;;5214:118;1626:94;;;;;;;;;;;;;:::i;3984:21::-;;;;;;;;;;-1:-1:-1;3984:21:0;;;;;;;;;;;;;;;1403:87;;;;;;;;;;-1:-1:-1;1449:7:0;1476:6;-1:-1:-1;;;;;1476:6:0;1403:87;;14159:101;;;;;;;;;;-1:-1:-1;14159:101:0;;;;;:::i;:::-;;:::i;4906:86::-;;;;;;;;;;-1:-1:-1;4978:6:0;;;;;;;;;;;;-1:-1:-1;;;4978:6:0;;;;4906:86;;4170:36;;;;;;;;;;-1:-1:-1;4170:36:0;;;;;;;;;;;;;6679:25:1;;;6735:2;6720:18;;6713:34;;;;6652:18;4170:36:0;6505:248:1;3952:25:0;;;;;;;;;;-1:-1:-1;3952:25:0;;;;;;;;6561:377;;;;;;;;;;-1:-1:-1;6561:377:0;;;;;:::i;:::-;;:::i;3553:46::-;;;;;;;;;;-1:-1:-1;3553:46:0;;;;-1:-1:-1;;;;;3553:46:0;;;5340:167;;;;;;;;;;-1:-1:-1;5340:167:0;;;;;:::i;:::-;;:::i;13726:288::-;;;;;;;;;;-1:-1:-1;13726:288:0;;;;;:::i;:::-;;:::i;15773:174::-;;;;;;;;;;;;;:::i;14458:194::-;;;;;;;;;;-1:-1:-1;14458:194:0;;;;;:::i;:::-;;:::i;16965:121::-;;;;;;;;;;;;;:::i;14022:129::-;;;;;;;;;;-1:-1:-1;14022:129:0;;;;;:::i;:::-;;:::i;16426:194::-;;;;;;;;;;-1:-1:-1;16426:194:0;;;;;:::i;:::-;;:::i;5515:143::-;;;;;;;;;;-1:-1:-1;5515:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;5623:18:0;;;5596:7;5623:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5515:143;14272:174;;;;;;;;;;-1:-1:-1;14272:174:0;;;;;:::i;:::-;;:::i;3413:69::-;;;;;;;;;;;;;;;;7065:110;;;;;;;;;;-1:-1:-1;7065:110:0;;;;;:::i;:::-;;:::i;1728:192::-;;;;;;;;;;-1:-1:-1;1728:192:0;;;;;:::i;:::-;;:::i;4045:22::-;;;;;;;;;;-1:-1:-1;4045:22:0;;;;;;;;;;;;;;;16838:119;;;;;;;;;;;;;:::i;16226:192::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;;;;;;;;;16306:1:::1;16294:9;:13;;;:30;;;;;16323:1;16311:9;:13;;;;16294:30;16286:39;;;::::0;::::1;;16336:12;:24:::0;;-1:-1:-1;;16336:24:0::1;;::::0;::::1;;::::0;;16371:39:::1;-1:-1:-1::0;;;16371:19:0::1;:39::i;:::-;16226:192:::0;:::o;5666:161::-;5741:4;5758:39;904:10;5781:7;5790:6;5758:8;:39::i;:::-;-1:-1:-1;5815:4:0;5666:161;;;;;:::o;5111:95::-;5164:7;3392:12;3291:1;3392:2;:12;:::i;:::-;3385:19;;:4;:19;:::i;:::-;5184:14;;5111:95;:::o;5835:495::-;5941:4;5958:36;5968:6;5976:9;5987:6;5958:9;:36::i;:::-;-1:-1:-1;;;;;6034:19:0;;6007:24;6034:19;;;:11;:19;;;;;;;;904:10;6034:33;;;;;;;;-1:-1:-1;;6082:37:0;;6078:221;;6164:6;6144:16;:26;;6136:79;;;;-1:-1:-1;;;6136:79:0;;9878:2:1;6136:79:0;;;9860:21:1;9917:2;9897:18;;;9890:30;9956:34;9936:18;;;9929:62;-1:-1:-1;;;10007:18:1;;;10000:38;10055:19;;6136:79:0;9676:404:1;6136:79:0;6230:57;6239:6;904:10;6261:25;6280:6;6261:16;:25;:::i;:::-;6230:8;:57::i;:::-;-1:-1:-1;6318:4:0;;5835:495;-1:-1:-1;;;;5835:495:0:o;16628:202::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;16713:1:::1;16701:9;:13;;;:30;;;;;16730:1;16718:9;:13;;;;16701:30;16693:39;;;::::0;::::1;;16743:17;:29:::0;;-1:-1:-1;;;;16743:29:0::1;-1:-1:-1::0;;;16743:29:0::1;::::0;::::1;;;::::0;;16783:39:::1;-1:-1:-1::0;;;16783:19:0::1;:39::i;6338:215::-:0;904:10;6426:4;6475:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6475:34:0;;;;;;;;;;6426:4;;6443:80;;6466:7;;6475:47;;6512:10;;6475:47;:::i;14774:154::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;14868:6:::1;:27:::0;;-1:-1:-1;;;;;;14868:27:0::1;::::0;-1:-1:-1;;;;;14868:27:0;;::::1;;;::::0;;14906:4:::1;:14:::0;;-1:-1:-1;;;;;;14906:14:0::1;::::0;;;::::1;;::::0;;14774:154::o;17094:129::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;17144:17:::1;:21:::0;;-1:-1:-1;;;;17144:21:0::1;::::0;;17176:39:::1;17164:1;::::0;-1:-1:-1;17176:19:0::1;:39::i;:::-;17094:129::o:0;6946:111::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7015:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;7015:34:0::1;7045:4;7015:34;::::0;;6946:111::o;17295:196::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;17395:9:::1;17370:21;:34;;17362:71;;;::::0;-1:-1:-1;;;17362:71:0;;10550:2:1;17362:71:0::1;::::0;::::1;10532:21:1::0;10589:2;10569:18;;;10562:30;10628:26;10608:18;;;10601:54;10672:18;;17362:71:0::1;10348:348:1::0;17362:71:0::1;17444:39;::::0;17452:10:::1;::::0;17444:39;::::1;;;::::0;17473:9;;17444:39:::1;::::0;;;17473:9;17452:10;17444:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17295:196:::0;:::o;17664:230::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;17799:4:::1;-1:-1:-1::0;;;;;17777:27:0;::::1;::::0;17769:65:::1;;;::::0;-1:-1:-1;;;17769:65:0;;10903:2:1;17769:65:0::1;::::0;::::1;10885:21:1::0;10942:2;10922:18;;;10915:30;10981:27;10961:18;;;10954:55;11026:18;;17769:65:0::1;10701:349:1::0;17769:65:0::1;17845:41;::::0;-1:-1:-1;;;17845:41:0;;-1:-1:-1;;;;;11247:32:1;;;17845:41:0::1;::::0;::::1;11229:51:1::0;11296:18;;;11289:34;;;17845:27:0;::::1;::::0;::::1;::::0;11202:18:1;;17845:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17664:230:::0;;;:::o;15955:263::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;16032:1:::1;16020:9;:13;;;:30;;;;;16049:1;16037:9;:13;;;;16020:30;16012:39;;;::::0;::::1;;16062:12;:24:::0;;-1:-1:-1;;16062:24:0;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;16097:13:::1;:25:::0;;;;::::1;::::0;::::1;::::0;;16133:17:::1;:29:::0;;-1:-1:-1;;;;16133:29:0::1;-1:-1:-1::0;;;16133:29:0;;::::1;::::0;;;::::1;::::0;;16173:37:::1;-1:-1:-1::0;;;16173:19:0::1;:37::i;15423:336::-:0;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;15555:7:::1;:14;15536:8;:15;:33;15528:76;;;::::0;-1:-1:-1;;;15528:76:0;;11786:2:1;15528:76:0::1;::::0;::::1;11768:21:1::0;11825:2;11805:18;;;11798:30;11864:32;11844:18;;;11837:60;11914:18;;15528:76:0::1;11584:354:1::0;15528:76:0::1;15619:9;15615:137;15637:8;:15;15633:1;:19;15615:137;;;15673:67;15689:10;15701:8;15710:1;15701:11;;;;;;;;:::i;:::-;;;;;;;3291:1;15727:2;:12;;;;:::i;:::-;15714:7;15722:1;15714:10;;;;;;;;:::i;:::-;;;;;;;:25;;;;:::i;:::-;15673:15;:67::i;:::-;15654:3:::0;::::1;::::0;::::1;:::i;:::-;;;;15615:137;;;;15423:336:::0;;:::o;1626:94::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;1691:21:::1;1709:1;1691:9;:21::i;14159:101::-:0;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;14230:11:::1;:22:::0;;-1:-1:-1;;14230:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14159:101::o;6561:377::-;904:10;6654:4;6698:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6698:34:0;;;;;;;;;;6751:35;;;;6743:85;;;;-1:-1:-1;;;6743:85:0;;12417:2:1;6743:85:0;;;12399:21:1;12456:2;12436:18;;;12429:30;12495:34;12475:18;;;12468:62;-1:-1:-1;;;12546:18:1;;;12539:35;12591:19;;6743:85:0;12215:401:1;6743:85:0;6839:67;904:10;6862:7;6871:34;6890:15;6871:16;:34;:::i;6839:67::-;-1:-1:-1;6926:4:0;;6561:377;-1:-1:-1;;;6561:377:0:o;5340:167::-;5418:4;5435:42;904:10;5459:9;5470:6;5435:9;:42::i;13726:288::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;13813:16:::1;::::0;-1:-1:-1;;;;;13813:29:0;;::::1;:16:::0;::::1;:29:::0;13805:60:::1;;;::::0;-1:-1:-1;;;13805:60:0;;12823:2:1;13805:60:0::1;::::0;::::1;12805:21:1::0;12862:2;12842:18;;;12835:30;-1:-1:-1;;;12881:18:1;;;12874:48;12939:18;;13805:60:0::1;12621:342:1::0;13805:60:0::1;13876:16;:28:::0;;-1:-1:-1;;;;;;13876:28:0::1;-1:-1:-1::0;;;;;13876:28:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13915:36:0;;;:18:::1;:36;::::0;;;;:43;;-1:-1:-1;;13915:43:0::1;-1:-1:-1::0;13915:43:0;;::::1;::::0;;;13969:37:::1;::::0;-1:-1:-1;;13969:19:0::1;:37::i;15773:174::-:0;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;15815:12:::1;:16:::0;;-1:-1:-1;;15815:16:0;;::::1;::::0;;;15842:13:::1;:17:::0;;;;::::1;::::0;;15870::::1;:21:::0;;-1:-1:-1;;;;15870:21:0::1;::::0;;15902:37:::1;15815:16:::0;;;15902:19:::1;:37::i;14458:194::-:0;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;14551:9:::1;14547:98;14570:8;:15;14566:1;:19;14547:98;;;14628:5;14606:6;:19;14613:8;14622:1;14613:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;14606:19:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;14606:19:0;:27;;-1:-1:-1;;14606:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14587:3;::::1;::::0;::::1;:::i;:::-;;;;14547:98;;16965:121:::0;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;17011:13:::1;:17:::0;;-1:-1:-1;;17011:17:0::1;::::0;;17039:39:::1;17027:1;17011:17:::0;17027:1;17039:19:::1;:39::i;14022:129::-:0;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;14131:12:::1;3291:1;14131:2;:12;:::i;:::-;14122:21;::::0;:6;:21:::1;:::i;:::-;14101:18;:42:::0;-1:-1:-1;14022:129:0:o;16426:194::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;16507:1:::1;16495:9;:13;;;:30;;;;;16524:1;16512:9;:13;;;;16495:30;16487:39;;;::::0;::::1;;16537:13;:25:::0;;-1:-1:-1;;16537:25:0::1;;::::0;::::1;;::::0;;16573:39:::1;-1:-1:-1::0;;;16573:19:0::1;:39::i;14272:174::-:0;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14358:15:0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;:24;::::1;;:15;::::0;;::::1;:24;;::::0;14350:54:::1;;;::::0;-1:-1:-1;;;14350:54:0;;13170:2:1;14350:54:0::1;::::0;::::1;13152:21:1::0;13209:2;13189:18;;;13182:30;-1:-1:-1;;;13228:18:1;;;13221:47;13285:18;;14350:54:0::1;12968:341:1::0;14350:54:0::1;-1:-1:-1::0;;;;;14415:15:0;;;::::1;;::::0;;;:6:::1;:15;::::0;;;;:23;;-1:-1:-1;;14415:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14272:174::o;7065:110::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7132:27:0::1;7162:5;7132:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;7132:35:0::1;::::0;;7065:110::o;1728:192::-;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1817:22:0;::::1;1809:73;;;::::0;-1:-1:-1;;;1809:73:0;;13516:2:1;1809:73:0::1;::::0;::::1;13498:21:1::0;13555:2;13535:18;;;13528:30;13594:34;13574:18;;;13567:62;-1:-1:-1;;;13645:18:1;;;13638:36;13691:19;;1809:73:0::1;13314:402:1::0;1809:73:0::1;1893:19;1903:8;1893:9;:19::i;16838:119::-:0;1449:7;1476:6;-1:-1:-1;;;;;1476:6:0;904:10;1538:23;1530:68;;;;-1:-1:-1;;;1530:68:0;;;;;;;:::i;:::-;16883:12:::1;:16:::0;;-1:-1:-1;;16883:16:0::1;::::0;;16910:39:::1;16883:16:::0;16898:1:::1;::::0;13140:578;13249:10;13245:140;;;13321:12;;13277:9;;;;13301:33;;13321:12;;13301:19;:33::i;:::-;13360:13;;;;;;;;;;;;;;;;;;;;;;;;;;;13349:8;:24;;;;;;-1:-1:-1;;13349:24:0;;;;;;;;;-1:-1:-1;;13245:140:0;13399:11;13395:143;;;13472:13;;13428:9;;;;13452:34;;13472:13;;13452:19;:34::i;:::-;13513:13;;;;;;;;;;;;;;;;;;;;;;;;;;;13501:9;:25;;;;;;-1:-1:-1;;13501:25:0;;;;;;;;;-1:-1:-1;;13395:143:0;13552:15;13548:163;;;13585:9;13596;13609:46;13637:17;;;;;;;;;;;13609:27;:46::i;:::-;13686:13;;;;;;;;;;;;;;;;;;;;;;;;;;;13670;:29;;;;;;-1:-1:-1;;13670:29:0;;;;;;;;;-1:-1:-1;;13140:578:0;;;:::o;7322:335::-;-1:-1:-1;;;;;7415:19:0;;7407:68;;;;-1:-1:-1;;;7407:68:0;;13923:2:1;7407:68:0;;;13905:21:1;13962:2;13942:18;;;13935:30;14001:34;13981:18;;;13974:62;-1:-1:-1;;;14052:18:1;;;14045:34;14096:19;;7407:68:0;13721:400:1;7407:68:0;-1:-1:-1;;;;;7494:21:0;;7486:68;;;;-1:-1:-1;;;7486:68:0;;14328:2:1;7486:68:0;;;14310:21:1;14367:2;14347:18;;;14340:30;14406:34;14386:18;;;14379:62;-1:-1:-1;;;14457:18:1;;;14450:32;14499:19;;7486:68:0;14126:398:1;7486:68:0;-1:-1:-1;;;;;7565:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7617:32;;1635:25:1;;;7617:32:0;;1608:18:1;7617:32:0;;;;;;;;7322:335;;;:::o;7665:1707::-;-1:-1:-1;;;;;7753:18:0;;7745:68;;;;-1:-1:-1;;;7745:68:0;;14731:2:1;7745:68:0;;;14713:21:1;14770:2;14750:18;;;14743:30;14809:34;14789:18;;;14782:62;-1:-1:-1;;;14860:18:1;;;14853:35;14905:19;;7745:68:0;14529:401:1;7745:68:0;-1:-1:-1;;;;;7832:16:0;;7824:64;;;;-1:-1:-1;;;7824:64:0;;15137:2:1;7824:64:0;;;15119:21:1;15176:2;15156:18;;;15149:30;15215:34;15195:18;;;15188:62;-1:-1:-1;;;15266:18:1;;;15259:33;15309:19;;7824:64:0;14935:399:1;7824:64:0;7916:1;7907:6;:10;7899:64;;;;-1:-1:-1;;;7899:64:0;;15541:2:1;7899:64:0;;;15523:21:1;15580:2;15560:18;;;15553:30;15619:34;15599:18;;;15592:62;-1:-1:-1;;;15670:18:1;;;15663:39;15719:19;;7899:64:0;15339:405:1;7899:64:0;-1:-1:-1;;;;;5307:17:0;;5280:7;5307:17;;;:8;:17;;;;;;7982:6;:25;;7974:86;;;;-1:-1:-1;;;7974:86:0;;15951:2:1;7974:86:0;;;15933:21:1;15990:2;15970:18;;;15963:30;16029:34;16009:18;;;16002:62;-1:-1:-1;;;16080:18:1;;;16073:47;16137:19;;7974:86:0;15749:413:1;7974:86:0;-1:-1:-1;;;;;8080:12:0;;;;;;:6;:12;;;;;;;;8079:13;:28;;;;-1:-1:-1;;;;;;8097:10:0;;;;;;:6;:10;;;;;;;;8096:11;8079:28;8071:54;;;;-1:-1:-1;;;8071:54:0;;16369:2:1;8071:54:0;;;16351:21:1;16408:2;16388:18;;;16381:30;-1:-1:-1;;;16427:18:1;;;16420:43;16480:18;;8071:54:0;16167:337:1;8071:54:0;8238:38;;;;;;;;;8263:13;8238:38;;;;;;;;;;;;;;;;8336:4;;8167:22;;8138:26;;;;-1:-1:-1;;;;;8336:4:0;;;8330:10;;;;8326:543;;-1:-1:-1;;8433:21:0;;;;;;;;8445:9;8433:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8487:26:0;;8372:18;8487:26;;;:18;:26;;;;;;;8372:18;;-1:-1:-1;8414:4:0;;-1:-1:-1;8433:21:0;8487:26;;8326:543;;;8543:4;;-1:-1:-1;;;;;8543:4:0;;;8535:12;;;;8531:338;;-1:-1:-1;;8637:20:0;;;;;;;;8649:8;8637:20;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8690:26:0;;-1:-1:-1;8690:26:0;;;:18;:26;;;;;;;;8579:17;;-1:-1:-1;8620:2:0;;-1:-1:-1;8690:26:0;;8531:338;;;8749:25;;;;;;;;8761:13;8749:25;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8807:24:0;;-1:-1:-1;8807:24:0;;;:18;:24;;;;;;;;8749:25;;-1:-1:-1;8807:24:0;;;:50;;-1:-1:-1;;;;;;8835:22:0;;;;;;:18;:22;;;;;;;;8807:50;8789:68;;8531:338;8924:18;;8914:4;8881:12;5307:17;;;:8;:17;;;;;;8881:12;;-1:-1:-1;8896:46:0;;-1:-1:-1;8972:17:0;8956:12;:33;;;;;;;;:::i;:::-;;;:46;;;;-1:-1:-1;8994:8:0;;;;;;;8993:9;8956:46;:61;;;;-1:-1:-1;9006:11:0;;;;8956:61;:72;;;;;9021:7;8956:72;:101;;;;-1:-1:-1;;;;;;9033:24:0;;;;;;:18;:24;;;;;;;;9032:25;8956:101;:128;;;;-1:-1:-1;;;;;;9062:22:0;;;;;;:18;:22;;;;;;;;9061:23;8956:128;8953:193;;;9100:34;9115:18;;9100:14;:34::i;:::-;9162:15;:65;;;-1:-1:-1;9203:19:0;;;;9181;;:41;;9203:19;9181:41;:::i;:::-;:46;;;9162:65;9158:207;;;9244:33;9260:4;9266:2;9270:6;9244:15;:33::i;:::-;9158:207;;;9310:43;9325:4;9331:2;9335:6;9343:9;9310:14;:43::i;:::-;7734:1638;;;;;7665:1707;;;:::o;14940:232::-;15037:31;15052:6;15060:7;15037:14;:31::i;:::-;15079;15091:9;15102:7;15079:11;:31::i;:::-;15145:9;-1:-1:-1;;;;;15128:36:0;15137:6;-1:-1:-1;;;;;15128:36:0;-1:-1:-1;;;;;;;;;;;15156:7:0;15128:36;;;;1635:25:1;;1623:2;1608:18;;1489:177;1928:173:0;1984:16;2003:6;;-1:-1:-1;;;;;2020:17:0;;;-1:-1:-1;;;;;;2020:17:0;;;;;;2053:40;;2003:6;;;;;;;2053:40;;1984:16;2053:40;1973:128;1928:173;:::o;12229:447::-;12291:6;12299;12322:4;:9;;12330:1;12322:9;12318:55;;-1:-1:-1;12356:1:0;;;;-1:-1:-1;12229:447:0;-1:-1:-1;12229:447:0:o;12318:55::-;12387:4;:9;;12395:1;12387:9;12383:158;;12417:16;;-1:-1:-1;;;;;12417:16:0;12413:87;;-1:-1:-1;12478:1:0;;12481:2;;-1:-1:-1;12229:447:0;-1:-1:-1;12229:447:0:o;12413:87::-;-1:-1:-1;12522:2:0;;;;-1:-1:-1;12229:447:0;-1:-1:-1;12229:447:0:o;12383:158::-;12565:16;;-1:-1:-1;;;;;12565:16:0;12561:80;;-1:-1:-1;12622:1:0;;12625:3;;-1:-1:-1;12229:447:0;-1:-1:-1;12229:447:0:o;12561:80::-;-1:-1:-1;12659:3:0;;12664;;-1:-1:-1;12229:447:0;-1:-1:-1;12229:447:0:o;12684:448::-;12754:6;12762;12785:4;:9;;12793:1;12785:9;12781:55;;-1:-1:-1;12819:1:0;;;;-1:-1:-1;12684:448:0;-1:-1:-1;12684:448:0:o;12781:55::-;12850:4;:9;;12858:1;12850:9;12846:156;;12880:16;;-1:-1:-1;;;;;12880:16:0;12876:86;;-1:-1:-1;12941:1:0;;;;-1:-1:-1;12684:448:0;-1:-1:-1;12684:448:0:o;12876:86::-;-1:-1:-1;12984:2:0;;12988:1;;-1:-1:-1;12684:448:0;-1:-1:-1;12684:448:0:o;12846:156::-;13026:16;;-1:-1:-1;;;;;13026:16:0;13022:78;;-1:-1:-1;13083:1:0;;;;-1:-1:-1;12684:448:0;-1:-1:-1;12684:448:0:o;10637:487::-;4247:8;:15;;-1:-1:-1;;4247:15:0;;;;;;10802:24:::1;10825:1;10802:20:::0;:24:::1;:::i;:::-;10779:47:::0;-1:-1:-1;10779:47:0;10913:21:::1;10945:45;10779:47:::0;10984:4:::1;10945:16;:45::i;:::-;11001:18;11022:40;11047:14:::0;11022:21:::1;:40;:::i;:::-;11001:61;;11073:43;11086:17;11105:10;11073:12;:43::i;:::-;-1:-1:-1::0;;4285:8:0;:16;;-1:-1:-1;;4285:16:0;;;-1:-1:-1;;;10637:487:0:o;9436:1193::-;9614:19;;;;9583:7;;9614:24;;;9611:391;;9655:18;9708:5;9686:9;:19;;;9676:29;;:7;:29;;;;:::i;:::-;:37;;;;:::i;:::-;9655:58;-1:-1:-1;9732:15:0;;9728:263;;9768:29;9787:10;9768:29;;:::i;:::-;;;9841:10;9816:11;:21;;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;9870:38:0;;-1:-1:-1;9890:4:0;9897:10;9870:11;:38::i;:::-;9932:43;;1635:25:1;;;9957:4:0;;-1:-1:-1;;;;;9932:43:0;;;-1:-1:-1;;;;;;;;;;;9932:43:0;1623:2:1;1608:18;9932:43:0;;;;;;;9728:263;9640:362;9611:391;10016:19;;:24;;;10012:398;;10088:19;;10057:18;;10110:5;;10078:29;;;;:7;:29;:::i;:::-;:37;;;;:::i;:::-;10057:58;-1:-1:-1;10134:15:0;;10130:269;;10170:29;10189:10;10170:29;;:::i;:::-;;;10243:10;10218:11;:21;;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;10284:16:0;;10272:41;;-1:-1:-1;;;;;10284:16:0;10302:10;10272:11;:41::i;:::-;10354:16;;10337:46;;1635:25:1;;;-1:-1:-1;;;;;10354:16:0;;;;10337:46;;;-1:-1:-1;;;;;;;;;;;10337:46:0;1623:2:1;1608:18;10337:46:0;;;;;;;10130:269;10042:368;10012:398;10424:31;10439:6;10447:7;10424:14;:31::i;:::-;10470:20;;10466:156;;10507:39;10519:9;10530:15;10507:11;:39::i;:::-;10583:9;-1:-1:-1;;;;;10566:44:0;10575:6;-1:-1:-1;;;;;10566:44:0;-1:-1:-1;;;;;;;;;;;10594:15:0;10566:44;;;;1635:25:1;;1623:2;1608:18;;1489:177;10566:44:0;;;;;;;;10466:156;9544:1085;9436:1193;;;;:::o;15298:113::-;-1:-1:-1;;;;;15375:17:0;;;;;;:8;:17;;;;;:28;;15396:7;;15375:17;:28;;15396:7;;15375:28;:::i;:::-;;;;-1:-1:-1;;;;15298:113:0:o;15180:110::-;-1:-1:-1;;;;;15254:17:0;;;;;;:8;:17;;;;;:28;;15275:7;;15254:17;:28;;15275:7;;15254:28;:::i;11635:586::-;11804:16;;;11818:1;11804:16;;;;;;;;11780:21;;11804:16;;;;;;;;;;-1:-1:-1;11804:16:0;11780:40;;11849:4;11831;11836:1;11831:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;11831:23:0;;;-1:-1:-1;;;;;11831:23:0;;;;;11875:6;;;;;;;;;-1:-1:-1;;;;;11875:6:0;-1:-1:-1;;;;;11875:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11865:4;11870:1;11865:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11865:23:0;;;:7;;;;;;;;;:23;11933:6;;11901:53;;11918:4;;11933:6;;;;11942:11;11901:8;:53::i;:::-;11993:6;;:220;;-1:-1:-1;;;11993:220:0;;:6;;;;-1:-1:-1;;;;;11993:6:0;;:57;;:220;;12065:11;;12091:1;;12135:4;;12162:9;;12187:15;;11993:220;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11709:512;11635:586;;:::o;11132:495::-;11312:6;;11280:53;;11297:4;;11312:6;;;-1:-1:-1;;;;;11312:6:0;11321:11;11280:8;:53::i;:::-;11376:6;;-1:-1:-1;;;;;11376:6:0;;;;;:22;11406:9;11439:4;11459:11;11485:1;;11571:7;1449;1476:6;-1:-1:-1;;;;;1476:6:0;;1403:87;11571:7;11376:243;;;;;;-1:-1:-1;;;;;;11376:243:0;;;-1:-1:-1;;;;;18644:15:1;;;11376:243:0;;;18626:34:1;18676:18;;;18669:34;;;;18719:18;;;18712:34;;;;18762:18;;;18755:34;18826:15;;;18805:19;;;18798:44;11593:15:0;18858:19:1;;;18851:35;18560:19;;11376:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:269:1:-;71:6;124:2;112:9;103:7;99:23;95:32;92:52;;;140:1;137;130:12;92:52;179:9;166:23;229:4;222:5;218:16;211:5;208:27;198:55;;249:1;246;239:12;198:55;272:5;14:269;-1:-1:-1;;;14:269:1:o;288:548::-;400:4;429:2;458;447:9;440:21;490:6;484:13;533:6;528:2;517:9;513:18;506:34;558:1;568:140;582:6;579:1;576:13;568:140;;;677:14;;;673:23;;667:30;643:17;;;662:2;639:26;632:66;597:10;;568:140;;;572:3;757:1;752:2;743:6;732:9;728:22;724:31;717:42;827:2;820;816:7;811:2;803:6;799:15;795:29;784:9;780:45;776:54;768:62;;;;288:548;;;;:::o;841:131::-;-1:-1:-1;;;;;916:31:1;;906:42;;896:70;;962:1;959;952:12;977:315;1045:6;1053;1106:2;1094:9;1085:7;1081:23;1077:32;1074:52;;;1122:1;1119;1112:12;1074:52;1161:9;1148:23;1180:31;1205:5;1180:31;:::i;:::-;1230:5;1282:2;1267:18;;;;1254:32;;-1:-1:-1;;;977:315:1:o;1671:456::-;1748:6;1756;1764;1817:2;1805:9;1796:7;1792:23;1788:32;1785:52;;;1833:1;1830;1823:12;1785:52;1872:9;1859:23;1891:31;1916:5;1891:31;:::i;:::-;1941:5;-1:-1:-1;1998:2:1;1983:18;;1970:32;2011:33;1970:32;2011:33;:::i;:::-;1671:456;;2063:7;;-1:-1:-1;;;2117:2:1;2102:18;;;;2089:32;;1671:456::o;2321:247::-;2380:6;2433:2;2421:9;2412:7;2408:23;2404:32;2401:52;;;2449:1;2446;2439:12;2401:52;2488:9;2475:23;2507:31;2532:5;2507:31;:::i;2573:388::-;2641:6;2649;2702:2;2690:9;2681:7;2677:23;2673:32;2670:52;;;2718:1;2715;2708:12;2670:52;2757:9;2744:23;2776:31;2801:5;2776:31;:::i;:::-;2826:5;-1:-1:-1;2883:2:1;2868:18;;2855:32;2896:33;2855:32;2896:33;:::i;:::-;2948:7;2938:17;;;2573:388;;;;;:::o;2966:180::-;3025:6;3078:2;3066:9;3057:7;3053:23;3049:32;3046:52;;;3094:1;3091;3084:12;3046:52;-1:-1:-1;3117:23:1;;2966:180;-1:-1:-1;2966:180:1:o;3651:127::-;3712:10;3707:3;3703:20;3700:1;3693:31;3743:4;3740:1;3733:15;3767:4;3764:1;3757:15;3783:275;3854:2;3848:9;3919:2;3900:13;;-1:-1:-1;;3896:27:1;3884:40;;3954:18;3939:34;;3975:22;;;3936:62;3933:88;;;4001:18;;:::i;:::-;4037:2;4030:22;3783:275;;-1:-1:-1;3783:275:1:o;4063:183::-;4123:4;4156:18;4148:6;4145:30;4142:56;;;4178:18;;:::i;:::-;-1:-1:-1;4223:1:1;4219:14;4235:4;4215:25;;4063:183::o;4251:737::-;4305:5;4358:3;4351:4;4343:6;4339:17;4335:27;4325:55;;4376:1;4373;4366:12;4325:55;4412:6;4399:20;4438:4;4462:60;4478:43;4518:2;4478:43;:::i;:::-;4462:60;:::i;:::-;4556:15;;;4642:1;4638:10;;;;4626:23;;4622:32;;;4587:12;;;;4666:15;;;4663:35;;;4694:1;4691;4684:12;4663:35;4730:2;4722:6;4718:15;4742:217;4758:6;4753:3;4750:15;4742:217;;;4838:3;4825:17;4855:31;4880:5;4855:31;:::i;:::-;4899:18;;4937:12;;;;4775;;4742:217;;;-1:-1:-1;4977:5:1;4251:737;-1:-1:-1;;;;;;4251:737:1:o;4993:1138::-;5111:6;5119;5172:2;5160:9;5151:7;5147:23;5143:32;5140:52;;;5188:1;5185;5178:12;5140:52;5228:9;5215:23;5257:18;5298:2;5290:6;5287:14;5284:34;;;5314:1;5311;5304:12;5284:34;5337:61;5390:7;5381:6;5370:9;5366:22;5337:61;:::i;:::-;5327:71;;5417:2;5407:12;;5472:2;5461:9;5457:18;5444:32;5501:2;5491:8;5488:16;5485:36;;;5517:1;5514;5507:12;5485:36;5540:24;;;-1:-1:-1;5595:4:1;5587:13;;5583:27;-1:-1:-1;5573:55:1;;5624:1;5621;5614:12;5573:55;5660:2;5647:16;5683:60;5699:43;5739:2;5699:43;:::i;5683:60::-;5777:15;;;5859:1;5855:10;;;;5847:19;;5843:28;;;5808:12;;;;5883:19;;;5880:39;;;5915:1;5912;5905:12;5880:39;5939:11;;;;5959:142;5975:6;5970:3;5967:15;5959:142;;;6041:17;;6029:30;;5992:12;;;;6079;;;;5959:142;;;6120:5;6110:15;;;;;;;4993:1138;;;;;:::o;6136:118::-;6222:5;6215:13;6208:21;6201:5;6198:32;6188:60;;6244:1;6241;6234:12;6259:241;6315:6;6368:2;6356:9;6347:7;6343:23;6339:32;6336:52;;;6384:1;6381;6374:12;6336:52;6423:9;6410:23;6442:28;6464:5;6442:28;:::i;6758:477::-;6848:6;6856;6909:2;6897:9;6888:7;6884:23;6880:32;6877:52;;;6925:1;6922;6915:12;6877:52;6965:9;6952:23;6998:18;6990:6;6987:30;6984:50;;;7030:1;7027;7020:12;6984:50;7053:61;7106:7;7097:6;7086:9;7082:22;7053:61;:::i;:::-;7043:71;;;7164:2;7153:9;7149:18;7136:32;7177:28;7199:5;7177:28;:::i;7240:382::-;7305:6;7313;7366:2;7354:9;7345:7;7341:23;7337:32;7334:52;;;7382:1;7379;7372:12;7334:52;7421:9;7408:23;7440:31;7465:5;7440:31;:::i;:::-;7490:5;-1:-1:-1;7547:2:1;7532:18;;7519:32;7560:30;7519:32;7560:30;:::i;7627:356::-;7829:2;7811:21;;;7848:18;;;7841:30;7907:34;7902:2;7887:18;;7880:62;7974:2;7959:18;;7627:356::o;7988:127::-;8049:10;8044:3;8040:20;8037:1;8030:31;8080:4;8077:1;8070:15;8104:4;8101:1;8094:15;8120:422;8209:1;8252:5;8209:1;8266:270;8287:7;8277:8;8274:21;8266:270;;;8346:4;8342:1;8338:6;8334:17;8328:4;8325:27;8322:53;;;8355:18;;:::i;:::-;8405:7;8395:8;8391:22;8388:55;;;8425:16;;;;8388:55;8504:22;;;;8464:15;;;;8266:270;;;8270:3;8120:422;;;;;:::o;8547:806::-;8596:5;8626:8;8616:80;;-1:-1:-1;8667:1:1;8681:5;;8616:80;8715:4;8705:76;;-1:-1:-1;8752:1:1;8766:5;;8705:76;8797:4;8815:1;8810:59;;;;8883:1;8878:130;;;;8790:218;;8810:59;8840:1;8831:10;;8854:5;;;8878:130;8915:3;8905:8;8902:17;8899:43;;;8922:18;;:::i;:::-;-1:-1:-1;;8978:1:1;8964:16;;8993:5;;8790:218;;9092:2;9082:8;9079:16;9073:3;9067:4;9064:13;9060:36;9054:2;9044:8;9041:16;9036:2;9030:4;9027:12;9023:35;9020:77;9017:159;;;-1:-1:-1;9129:19:1;;;9161:5;;9017:159;9208:34;9233:8;9227:4;9208:34;:::i;:::-;9278:6;9274:1;9270:6;9266:19;9257:7;9254:32;9251:58;;;9289:18;;:::i;:::-;9327:20;;8547:806;-1:-1:-1;;;8547:806:1:o;9358:140::-;9416:5;9445:47;9486:4;9476:8;9472:19;9466:4;9445:47;:::i;9503:168::-;9576:9;;;9607;;9624:15;;;9618:22;;9604:37;9594:71;;9645:18;;:::i;10085:128::-;10152:9;;;10173:11;;;10170:37;;;10187:18;;:::i;10218:125::-;10283:9;;;10304:10;;;10301:36;;;10317:18;;:::i;11334:245::-;11401:6;11454:2;11442:9;11433:7;11429:23;11425:32;11422:52;;;11470:1;11467;11460:12;11422:52;11502:9;11496:16;11521:28;11543:5;11521:28;:::i;11943:127::-;12004:10;11999:3;11995:20;11992:1;11985:31;12035:4;12032:1;12025:15;12059:4;12056:1;12049:15;12075:135;12114:3;12135:17;;;12132:43;;12155:18;;:::i;:::-;-1:-1:-1;12202:1:1;12191:13;;12075:135::o;16509:127::-;16570:10;16565:3;16561:20;16558:1;16551:31;16601:4;16598:1;16591:15;16625:4;16622:1;16615:15;16641:168;16708:6;16734:10;;;16746;;;16730:27;;16769:11;;;16766:37;;;16783:18;;:::i;:::-;16766:37;16641:168;;;;:::o;16814:217::-;16854:1;16880;16870:132;;16924:10;16919:3;16915:20;16912:1;16905:31;16959:4;16956:1;16949:15;16987:4;16984:1;16977:15;16870:132;-1:-1:-1;17016:9:1;;16814:217::o;17036:251::-;17106:6;17159:2;17147:9;17138:7;17134:23;17130:32;17127:52;;;17175:1;17172;17165:12;17127:52;17207:9;17201:16;17226:31;17251:5;17226:31;:::i;17292:988::-;17562:4;17610:3;17599:9;17595:19;17641:6;17630:9;17623:25;17667:2;17705:6;17700:2;17689:9;17685:18;17678:34;17748:3;17743:2;17732:9;17728:18;17721:31;17772:6;17807;17801:13;17838:6;17830;17823:22;17876:3;17865:9;17861:19;17854:26;;17915:2;17907:6;17903:15;17889:29;;17936:1;17946:195;17960:6;17957:1;17954:13;17946:195;;;18025:13;;-1:-1:-1;;;;;18021:39:1;18009:52;;18116:15;;;;18081:12;;;;18057:1;17975:9;17946:195;;;-1:-1:-1;;;;;;;18197:32:1;;;;18192:2;18177:18;;18170:60;-1:-1:-1;;;18261:3:1;18246:19;18239:35;18158:3;17292:988;-1:-1:-1;;;17292:988:1:o;18897:306::-;18985:6;18993;19001;19054:2;19042:9;19033:7;19029:23;19025:32;19022:52;;;19070:1;19067;19060:12;19022:52;19099:9;19093:16;19083:26;;19149:2;19138:9;19134:18;19128:25;19118:35;;19193:2;19182:9;19178:18;19172:25;19162:35;;18897:306;;;;;:::o
Swarm Source
ipfs://cca24b2d0ce0a4f88248219abfcac54b604da7d146e368879ac0c05131ebe692
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.