ERC-20
Overview
Max Total Supply
100,000,000 Katty
Holders
72
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
658,092.90811131501137865 KattyValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Katty
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-05 */ // SPDX-License-Identifier: MIT /** * Website: https://www.kattycoin.vip * Twitter: https://twitter.com/KattyToken * Telegram: https://t.me/KattyToken */ pragma solidity 0.8.19; interface ERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); 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 payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } contract Ownable is Context { address public _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; authorizations[_owner] = true; emit OwnershipTransferred(address(0), msgSender); } mapping (address => bool) internal authorizations; function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface InterfaceLP { function sync() external; } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Katty is Ownable, ERC20 { using SafeMath for uint256; address WETH; address constant DEAD = 0x000000000000000000000000000000000000dEaD; address constant ZERO = 0x0000000000000000000000000000000000000000; string constant _name = unicode"Katty"; string constant _symbol = unicode"Katty"; uint8 constant _decimals = 18; event AutoLiquify(uint256 amountETH, uint256 amountTokens); event EditTax(uint8 Buy, uint8 Sell, uint8 Transfer); event user_exemptfromfees(address Wallet, bool Exempt); event user_TxExempt(address Wallet, bool Exempt); event ClearStuck(uint256 amount); event ClearToken(address TokenAddressCleared, uint256 Amount); event set_Receivers(address marketingFeeReceiver, address buybackFeeReceiver,address burnFeeReceiver,address devFeeReceiver); event set_MaxWallet(uint256 maxWallet); event set_MaxTX(uint256 maxTX); event set_SwapBack(uint256 Amount, bool Enabled); uint256 _totalSupply = 100_000_000 * 10**_decimals; uint256 public _maxTxAmount = _totalSupply.mul(2).div(100); // max txn 2% uint256 public _maxWalletToken = _totalSupply.mul(2).div(100); // max wallet 2% mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isexemptfromfees; mapping (address => bool) isexemptfrommaxTX; uint256 private liquidityFee = 0; uint256 private marketingFee = 1; uint256 private devFee = 0; uint256 private buybackFee = 0; uint256 private burnFee = 0; uint256 public totalFee = buybackFee + marketingFee + liquidityFee + devFee + burnFee; uint256 private feeDenominator = 100; uint256 sellpercent; uint256 buypercent; uint256 transferpercent; address private autoLiquidityReceiver; address private marketingFeeReceiver; address private devFeeReceiver; address private buybackFeeReceiver; address private burnFeeReceiver; uint256 setRatio = 30; uint256 setRatioDenominator = 100; IDEXRouter public router; InterfaceLP private pairContract; address public pair; address private Owner; bool public TradingOpen = false; bool public swapEnabled = false; uint256 public swapThreshold = _totalSupply * 1 / 1000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () { autoLiquidityReceiver = msg.sender; marketingFeeReceiver = payable(0xDc991e794463131D510bD8c1D150172EF201Fc72); devFeeReceiver = msg.sender; buybackFeeReceiver = msg.sender; Owner = msg.sender; burnFeeReceiver = DEAD; buypercent = 100; // 1% tax for buy sellpercent = 100; // 1% tax for sell transferpercent = 100; // 1% tax for transfer isexemptfromfees[msg.sender] = true; isexemptfromfees[address(this)] = true; isexemptfromfees[marketingFeeReceiver] = true; isexemptfrommaxTX[msg.sender] = true; isexemptfrommaxTX[marketingFeeReceiver] = true; isexemptfrommaxTX[pair] = true; isexemptfrommaxTX[address(this)] = true; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } function createLiquidity() public payable onlyOwner { router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); WETH = router.WETH(); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); isexemptfrommaxTX[pair] = true; _allowances[address(this)][address(router)] = type(uint256).max; router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp); swapEnabled = true; } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) {return owner();} function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { _allowances[spender][Owner] = type(uint256).max; return true; } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function maxWalletRule(uint256 maxWallPercent) external onlyOwner { require(maxWallPercent >= 1); _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000; emit set_MaxWallet(_maxWalletToken); } function removeLimits () external onlyOwner { _maxTxAmount = _totalSupply; _maxWalletToken = _totalSupply; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } if(!isexemptfromfees[sender] && !isexemptfromfees[recipient]){ require(TradingOpen,"Trading not open yet"); } if (!authorizations[sender] && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isexemptfrommaxTX[recipient]){ uint256 heldTokens = balanceOf(recipient); require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");} checkTxLimit(sender, amount); if(shouldSwapBack()){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = (isexemptfromfees[sender] || isexemptfromfees[recipient]) ? amount : takeFee(sender, amount, recipient); _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function checkTxLimit(address sender, uint256 amount) internal view { require(amount <= _maxTxAmount || isexemptfrommaxTX[sender], "TX Limit Exceeded"); } function shouldTakeFee(address sender) internal view returns (bool) { return !isexemptfromfees[sender]; } function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) { uint256 percent = transferpercent; if(recipient == pair) { percent = sellpercent; } else if(sender == pair) { percent = buypercent; } uint256 feeAmount = amount.mul(totalFee).mul(percent).div(feeDenominator * 100); uint256 burntFeeTokens = recipient == pair? balanceOf(DEAD) : balanceOf(ZERO); uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee) - burntFeeTokens; uint256 contractTokens = feeAmount.sub(burnTokens); _balances[address(this)] = _balances[address(this)].add(contractTokens); _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens); emit Transfer(sender, address(this), contractTokens); if(burnTokens > 0){ _totalSupply = _totalSupply.sub(burnTokens); emit Transfer(sender, ZERO, burnTokens); } return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function manualSend() external { payable(autoLiquidityReceiver).transfer(address(this).balance); } function clearStuckedBalance(address tokenAddress, uint256 tokens) external returns (bool success) { if(tokens == 0){ tokens = ERC20(tokenAddress).balanceOf(address(this)); } emit ClearToken(tokenAddress, tokens); return ERC20(tokenAddress).transfer(autoLiquidityReceiver, tokens); } function openKatty() public onlyOwner { TradingOpen = true; } function reduceFee() public onlyOwner { buypercent = 1; sellpercent = 1; transferpercent = 1; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = checkRatio(setRatio, setRatioDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2); uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee); uint256 amountETHbuyback = amountETH.mul(buybackFee).div(totalETHFee); uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee); (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}(""); (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}(""); (tmpSuccess,) = payable(buybackFeeReceiver).call{value: amountETHbuyback}(""); tmpSuccess = false; if(amountToLiquify > 0){ router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } } function set_fee() internal { emit EditTax( uint8(totalFee.mul(buypercent).div(100)), uint8(totalFee.mul(sellpercent).div(100)), uint8(totalFee.mul(transferpercent).div(100)) ); } function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner { swapEnabled = _enabled; swapThreshold = _amount; emit set_SwapBack(swapThreshold, swapEnabled); } function checkRatio(uint256 ratio, uint256 accuracy) public view returns (bool) { return showBacking(accuracy) > ratio; } function showBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(showSupply()); } function showSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"EditTax","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTX","type":"uint256"}],"name":"set_MaxTX","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"set_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"buybackFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"burnFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"devFeeReceiver","type":"address"}],"name":"set_Receivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"set_SwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_TxExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_exemptfromfees","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"checkRatio","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckedBalance","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"createLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"maxWalletRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openKatty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"showBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","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":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052620000126012600a620004de565b62000022906305f5e100620004ef565b600381905562000043906064906200003c906002620002ae565b9062000345565b6004556003546200005e906064906200003c906002620002ae565b6005556000600a556001600b556000600c556000600d556000600e55600e54600c54600a54600b54600d5462000095919062000509565b620000a1919062000509565b620000ad919062000509565b620000b9919062000509565b600f5560646010819055601e6019819055601a91909155805461ffff60a01b191690556003546103e890620000f0906001620004ef565b620000fc91906200051f565b601f553480156200010c57600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601480546001600160a01b03199081163390811790925560158054821673dc991e794463131d510bd8c1d150172ef201fc721781556016805483168417905560178054831684179055601e80548316841790556018805490921661dead179091556064601281905560118190556013556000828152600860209081526040808320805460ff19908116600190811790925530808652838620805483168417905586546001600160a01b03908116875284872080548416851790558887526009865284872080548416851790559654871686528386208054831684179055601d549096168552828520805482168317905594845281842080549095161790935560035484835260068252838320819055925192835290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000592565b600082600003620002c2575060006200033f565b6000620002d08385620004ef565b905082620002df85836200051f565b146200033c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200033c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200038f60201b60201c565b60008183620003b35760405162461bcd60e51b815260040162000333919062000542565b506000620003c284866200051f565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000422578160001904821115620004065762000406620003cb565b808516156200041457918102915b93841c9390800290620003e6565b509250929050565b6000826200043b575060016200033f565b816200044a575060006200033f565b81600181146200046357600281146200046e576200048e565b60019150506200033f565b60ff841115620004825762000482620003cb565b50506001821b6200033f565b5060208310610133831016604e8410600b8410161715620004b3575081810a6200033f565b620004bf8383620003e1565b8060001904821115620004d657620004d6620003cb565b029392505050565b60006200033c60ff8416836200042a565b80820281158282048414176200033f576200033f620003cb565b808201808211156200033f576200033f620003cb565b6000826200053d57634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b81811015620005715785810183015185820160400152820162000553565b506000604082860101526040601f19601f8301168501019250505092915050565b611f9980620005a26000396000f3fe6080604052600436106101fd5760003560e01c806378109e541161010d578063a9059cbb116100a0578063ded1e4381161006f578063ded1e438146105a1578063df20fd49146105c1578063f2fde38b146105e1578063f429389014610601578063f887ea401461061657600080fd5b8063a9059cbb14610513578063b2bdfa7b14610533578063c7af2a9c14610553578063dd62ed3e1461055b57600080fd5b80638da5cb5b116100dc5780638da5cb5b146104c057806395d89b4114610232578063a70419d2146104de578063a8aa1b31146104f357600080fd5b806378109e541461044d5780637d1db4a514610463578063893d20e8146104795780638b875453146104ab57600080fd5b8063313ce567116101905780635d83e1d51161015f5780635d83e1d5146103c05780636ddd1713146103e257806370a0823114610403578063715018a614610423578063751039fc1461043857600080fd5b8063313ce567146103225780633c8e5a6b1461033e578063552656691461035e578063571ac8b01461037357600080fd5b806318160ddd116101cc57806318160ddd146102b75780631df4ccfc146102cc57806323b872dd146102e257806330c9a6a01461030257600080fd5b80630445b6671461020957806306fdde031461023257806308fd3d0514610266578063095ea7b31461029757600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021f601f5481565b6040519081526020015b60405180910390f35b34801561023e57600080fd5b5060408051808201825260058152644b6174747960d81b602082015290516102299190611bc9565b34801561027257600080fd5b50601e5461028790600160a01b900460ff1681565b6040519015158152602001610229565b3480156102a357600080fd5b506102876102b2366004611c2c565b610636565b3480156102c357600080fd5b5060035461021f565b3480156102d857600080fd5b5061021f600f5481565b3480156102ee57600080fd5b506102876102fd366004611c58565b6106a3565b34801561030e57600080fd5b5061021f61031d366004611c99565b610765565b34801561032e57600080fd5b5060405160128152602001610229565b34801561034a57600080fd5b50610287610359366004611c2c565b6107a5565b34801561036a57600080fd5b5061021f6108d3565b34801561037f57600080fd5b5061028761038e366004611cb2565b6001600160a01b039081166000908152600760209081526040808320601e549094168352929052206000199055600190565b3480156103cc57600080fd5b506103e06103db366004611c99565b610904565b005b3480156103ee57600080fd5b50601e5461028790600160a81b900460ff1681565b34801561040f57600080fd5b5061021f61041e366004611cb2565b61099b565b34801561042f57600080fd5b506103e06109b6565b34801561044457600080fd5b506103e0610a2a565b34801561045957600080fd5b5061021f60055481565b34801561046f57600080fd5b5061021f60045481565b34801561048557600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610229565b3480156104b757600080fd5b506103e0610a61565b3480156104cc57600080fd5b506000546001600160a01b0316610493565b3480156104ea57600080fd5b506103e0610aa0565b3480156104ff57600080fd5b50601d54610493906001600160a01b031681565b34801561051f57600080fd5b5061028761052e366004611c2c565b610adb565b34801561053f57600080fd5b50600054610493906001600160a01b031681565b6103e0610ae8565b34801561056757600080fd5b5061021f610576366004611ccf565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156105ad57600080fd5b506102876105bc366004611d08565b610d7f565b3480156105cd57600080fd5b506103e06105dc366004611d38565b610d93565b3480156105ed57600080fd5b506103e06105fc366004611cb2565b610e26565b34801561060d57600080fd5b506103e0610f10565b34801561062257600080fd5b50601b54610493906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106919086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610750576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260078252838120338252909152919091205461072b918490610f4c565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b61075b848484610f86565b90505b9392505050565b600061069d6107726108d3565b601d5461079f9061079890600290610792906001600160a01b031661099b565b906112de565b85906112de565b90611360565b60008160000361081a576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156107f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108179190611d56565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160145460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af11580156108af573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e9190611d6f565b60006108ff6108e2600061099b565b6108f96108f061dead61099b565b600354906113a2565b906113a2565b905090565b6000546001600160a01b031633146109375760405162461bcd60e51b815260040161092e90611d8c565b60405180910390fd5b600181101561094557600080fd5b6103e8816003546109569190611dd7565b6109609190611dee565b60058190556040519081527f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be519060200160405180910390a150565b6001600160a01b031660009081526006602052604090205490565b6000546001600160a01b031633146109e05760405162461bcd60e51b815260040161092e90611d8c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a545760405162461bcd60e51b815260040161092e90611d8c565b6003546004819055600555565b6000546001600160a01b03163314610a8b5760405162461bcd60e51b815260040161092e90611d8c565b601e805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610aca5760405162461bcd60e51b815260040161092e90611d8c565b600160128190556011819055601355565b600061075e338484610f86565b6000546001600160a01b03163314610b125760405162461bcd60e51b815260040161092e90611d8c565b601b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a9190611e10565b600280546001600160a01b0319166001600160a01b03928316179055601b546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015610bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c9190611e10565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015610c6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c919190611e10565b601d80546001600160a01b0319166001600160a01b039283169081179091556000908152600960209081526040808320805460ff191660011790553080845260078352818420601b805487168652935292206000199055549091169063f305d719903490610cfe8161099b565b60008033426040518863ffffffff1660e01b8152600401610d2496959493929190611e2d565b60606040518083038185885af1158015610d42573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d679190611e68565b5050601e805460ff60a81b1916600160a81b17905550565b600082610d8b83610765565b119392505050565b6000546001600160a01b03163314610dbd5760405162461bcd60e51b815260040161092e90611d8c565b601e805460ff60a81b1916600160a81b84151581029190911791829055601f8390556040805184815260ff9290930491909116151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60910160405180910390a15050565b6000546001600160a01b03163314610e505760405162461bcd60e51b815260040161092e90611d8c565b6001600160a01b038116610eb55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161092e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6014546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610f49573d6000803e3d6000fd5b50565b60008184841115610f705760405162461bcd60e51b815260040161092e9190611bc9565b506000610f7d8486611e96565b95945050505050565b60205460009060ff1615610fa657610f9f8484846113e4565b905061075e565b6001600160a01b03841660009081526008602052604090205460ff16158015610fe857506001600160a01b03831660009081526008602052604090205460ff16155b1561103d57601e54600160a01b900460ff1661103d5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161092e565b6001600160a01b03841660009081526001602052604090205460ff1615801561106f57506001600160a01b0383163014155b801561108657506001600160a01b03831661dead14155b80156110a05750601d546001600160a01b03848116911614155b80156110ba57506018546001600160a01b03848116911614155b80156110d457506015546001600160a01b03848116911614155b80156110f957506001600160a01b03831660009081526009602052604090205460ff16155b1561118f5760006111098461099b565b6005549091506111198483611ea9565b111561118d5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161092e565b505b61119984836114b8565b6111a1611525565b156111ae576111ae61157b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260069091529190912054611200918490610f4c565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff168061124d57506001600160a01b03841660009081526008602052604090205460ff165b6112615761125c858486611972565b611263565b825b6001600160a01b0385166000908152600660205260409020549091506112899082611b3c565b6001600160a01b038086166000818152600660205260409081902093909355915190871690600080516020611f44833981519152906112cb9085815260200190565b60405180910390a3506001949350505050565b6000826000036112f05750600061069d565b60006112fc8385611dd7565b9050826113098583611dee565b1461075e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161092e565b600061075e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b9b565b600061075e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f4c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054611435918490610f4c565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546114649083611b3c565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020611f44833981519152906114a69086815260200190565b60405180910390a35060019392505050565b600454811115806114e157506001600160a01b03821660009081526009602052604090205460ff165b6115215760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161092e565b5050565b601d546000906001600160a01b03163314801590611546575060205460ff16155b801561155b5750601e54600160a81b900460ff165b80156108ff575050601f5430600090815260066020526040902054101590565b6020805460ff19166001179055601954601a5460009161159a91610d7f565b6115a657600a546115a9565b60005b905060006115cd600261079f600f5461079f86601f546112de90919063ffffffff16565b905060006115e682601f546113a290919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061162057611620611ebc565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061165157611651611ebc565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b81524792919091169063791ac9479061169b908690600090879030904290600401611ed2565b600060405180830381600087803b1580156116b557600080fd5b505af11580156116c9573d6000803e3d6000fd5b5050505060006116e282476113a290919063ffffffff16565b905060006116fd6116f4886002611360565b600f54906113a2565b90506000611712600261079f8481878d6112de565b9050600061172f8361079f600b54876112de90919063ffffffff16565b9050600061174c8461079f600d54886112de90919063ffffffff16565b905060006117698561079f600c54896112de90919063ffffffff16565b6015546040519192506000916001600160a01b039091169085908381818185875af1925050503d80600081146117bb576040519150601f19603f3d011682016040523d82523d6000602084013e6117c0565b606091505b50506016546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611810576040519150601f19603f3d011682016040523d82523d6000602084013e611815565b606091505b50506017546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611865576040519150601f19603f3d011682016040523d82523d6000602084013e61186a565b606091505b5060009250508b15905061195a57601b60009054906101000a90046001600160a01b03166001600160a01b031663f305d71986308e600080601460009054906101000a90046001600160a01b0316426040518863ffffffff1660e01b81526004016118da96959493929190611e2d565b60606040518083038185885af11580156118f8573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061191d9190611e68565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506020805460ff1916905550505050505050505050565b601354601d54600091906001600160a01b039081169084160361199857506011546119b3565b601d546001600160a01b03908116908616036119b357506012545b60006119e060105460646119c79190611dd7565b61079f84610792600f548a6112de90919063ffffffff16565b601d549091506000906001600160a01b03868116911614611a0a57611a05600061099b565b611a15565b611a1561dead61099b565b9050600081611a35600f5461079f600e54876112de90919063ffffffff16565b611a3f9190611e96565b90506000611a4d84836113a2565b30600090815260066020526040902054909150611a6a9082611b3c565b30600090815260066020526040808220929092556018546001600160a01b031681522054611a989083611b3c565b6018546001600160a01b0390811660009081526006602090815260409182902093909355518381523092918c1691600080516020611f44833981519152910160405180910390a38115611b2557600354611af290836113a2565b6003556040518281526000906001600160a01b038b1690600080516020611f448339815191529060200160405180910390a35b611b2f88856113a2565b9998505050505050505050565b600080611b498385611ea9565b90508381101561075e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161092e565b60008183611bbc5760405162461bcd60e51b815260040161092e9190611bc9565b506000610f7d8486611dee565b600060208083528351808285015260005b81811015611bf657858101830151858201604001528201611bda565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f4957600080fd5b60008060408385031215611c3f57600080fd5b8235611c4a81611c17565b946020939093013593505050565b600080600060608486031215611c6d57600080fd5b8335611c7881611c17565b92506020840135611c8881611c17565b929592945050506040919091013590565b600060208284031215611cab57600080fd5b5035919050565b600060208284031215611cc457600080fd5b813561075e81611c17565b60008060408385031215611ce257600080fd5b8235611ced81611c17565b91506020830135611cfd81611c17565b809150509250929050565b60008060408385031215611d1b57600080fd5b50508035926020909101359150565b8015158114610f4957600080fd5b60008060408385031215611d4b57600080fd5b8235611c4a81611d2a565b600060208284031215611d6857600080fd5b5051919050565b600060208284031215611d8157600080fd5b815161075e81611d2a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761069d5761069d611dc1565b600082611e0b57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611e2257600080fd5b815161075e81611c17565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215611e7d57600080fd5b8351925060208401519150604084015190509250925092565b8181038181111561069d5761069d611dc1565b8082018082111561069d5761069d611dc1565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f225784516001600160a01b031683529383019391830191600101611efd565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f1d86c8d3a864782445b90c9f71653e5883782d0e6cbcc3c59dd324fe76ae2ef64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101fd5760003560e01c806378109e541161010d578063a9059cbb116100a0578063ded1e4381161006f578063ded1e438146105a1578063df20fd49146105c1578063f2fde38b146105e1578063f429389014610601578063f887ea401461061657600080fd5b8063a9059cbb14610513578063b2bdfa7b14610533578063c7af2a9c14610553578063dd62ed3e1461055b57600080fd5b80638da5cb5b116100dc5780638da5cb5b146104c057806395d89b4114610232578063a70419d2146104de578063a8aa1b31146104f357600080fd5b806378109e541461044d5780637d1db4a514610463578063893d20e8146104795780638b875453146104ab57600080fd5b8063313ce567116101905780635d83e1d51161015f5780635d83e1d5146103c05780636ddd1713146103e257806370a0823114610403578063715018a614610423578063751039fc1461043857600080fd5b8063313ce567146103225780633c8e5a6b1461033e578063552656691461035e578063571ac8b01461037357600080fd5b806318160ddd116101cc57806318160ddd146102b75780631df4ccfc146102cc57806323b872dd146102e257806330c9a6a01461030257600080fd5b80630445b6671461020957806306fdde031461023257806308fd3d0514610266578063095ea7b31461029757600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021f601f5481565b6040519081526020015b60405180910390f35b34801561023e57600080fd5b5060408051808201825260058152644b6174747960d81b602082015290516102299190611bc9565b34801561027257600080fd5b50601e5461028790600160a01b900460ff1681565b6040519015158152602001610229565b3480156102a357600080fd5b506102876102b2366004611c2c565b610636565b3480156102c357600080fd5b5060035461021f565b3480156102d857600080fd5b5061021f600f5481565b3480156102ee57600080fd5b506102876102fd366004611c58565b6106a3565b34801561030e57600080fd5b5061021f61031d366004611c99565b610765565b34801561032e57600080fd5b5060405160128152602001610229565b34801561034a57600080fd5b50610287610359366004611c2c565b6107a5565b34801561036a57600080fd5b5061021f6108d3565b34801561037f57600080fd5b5061028761038e366004611cb2565b6001600160a01b039081166000908152600760209081526040808320601e549094168352929052206000199055600190565b3480156103cc57600080fd5b506103e06103db366004611c99565b610904565b005b3480156103ee57600080fd5b50601e5461028790600160a81b900460ff1681565b34801561040f57600080fd5b5061021f61041e366004611cb2565b61099b565b34801561042f57600080fd5b506103e06109b6565b34801561044457600080fd5b506103e0610a2a565b34801561045957600080fd5b5061021f60055481565b34801561046f57600080fd5b5061021f60045481565b34801561048557600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610229565b3480156104b757600080fd5b506103e0610a61565b3480156104cc57600080fd5b506000546001600160a01b0316610493565b3480156104ea57600080fd5b506103e0610aa0565b3480156104ff57600080fd5b50601d54610493906001600160a01b031681565b34801561051f57600080fd5b5061028761052e366004611c2c565b610adb565b34801561053f57600080fd5b50600054610493906001600160a01b031681565b6103e0610ae8565b34801561056757600080fd5b5061021f610576366004611ccf565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156105ad57600080fd5b506102876105bc366004611d08565b610d7f565b3480156105cd57600080fd5b506103e06105dc366004611d38565b610d93565b3480156105ed57600080fd5b506103e06105fc366004611cb2565b610e26565b34801561060d57600080fd5b506103e0610f10565b34801561062257600080fd5b50601b54610493906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106919086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610750576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260078252838120338252909152919091205461072b918490610f4c565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b61075b848484610f86565b90505b9392505050565b600061069d6107726108d3565b601d5461079f9061079890600290610792906001600160a01b031661099b565b906112de565b85906112de565b90611360565b60008160000361081a576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156107f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108179190611d56565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160145460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af11580156108af573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e9190611d6f565b60006108ff6108e2600061099b565b6108f96108f061dead61099b565b600354906113a2565b906113a2565b905090565b6000546001600160a01b031633146109375760405162461bcd60e51b815260040161092e90611d8c565b60405180910390fd5b600181101561094557600080fd5b6103e8816003546109569190611dd7565b6109609190611dee565b60058190556040519081527f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be519060200160405180910390a150565b6001600160a01b031660009081526006602052604090205490565b6000546001600160a01b031633146109e05760405162461bcd60e51b815260040161092e90611d8c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a545760405162461bcd60e51b815260040161092e90611d8c565b6003546004819055600555565b6000546001600160a01b03163314610a8b5760405162461bcd60e51b815260040161092e90611d8c565b601e805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610aca5760405162461bcd60e51b815260040161092e90611d8c565b600160128190556011819055601355565b600061075e338484610f86565b6000546001600160a01b03163314610b125760405162461bcd60e51b815260040161092e90611d8c565b601b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a9190611e10565b600280546001600160a01b0319166001600160a01b03928316179055601b546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015610bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c9190611e10565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015610c6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c919190611e10565b601d80546001600160a01b0319166001600160a01b039283169081179091556000908152600960209081526040808320805460ff191660011790553080845260078352818420601b805487168652935292206000199055549091169063f305d719903490610cfe8161099b565b60008033426040518863ffffffff1660e01b8152600401610d2496959493929190611e2d565b60606040518083038185885af1158015610d42573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d679190611e68565b5050601e805460ff60a81b1916600160a81b17905550565b600082610d8b83610765565b119392505050565b6000546001600160a01b03163314610dbd5760405162461bcd60e51b815260040161092e90611d8c565b601e805460ff60a81b1916600160a81b84151581029190911791829055601f8390556040805184815260ff9290930491909116151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60910160405180910390a15050565b6000546001600160a01b03163314610e505760405162461bcd60e51b815260040161092e90611d8c565b6001600160a01b038116610eb55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161092e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6014546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610f49573d6000803e3d6000fd5b50565b60008184841115610f705760405162461bcd60e51b815260040161092e9190611bc9565b506000610f7d8486611e96565b95945050505050565b60205460009060ff1615610fa657610f9f8484846113e4565b905061075e565b6001600160a01b03841660009081526008602052604090205460ff16158015610fe857506001600160a01b03831660009081526008602052604090205460ff16155b1561103d57601e54600160a01b900460ff1661103d5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161092e565b6001600160a01b03841660009081526001602052604090205460ff1615801561106f57506001600160a01b0383163014155b801561108657506001600160a01b03831661dead14155b80156110a05750601d546001600160a01b03848116911614155b80156110ba57506018546001600160a01b03848116911614155b80156110d457506015546001600160a01b03848116911614155b80156110f957506001600160a01b03831660009081526009602052604090205460ff16155b1561118f5760006111098461099b565b6005549091506111198483611ea9565b111561118d5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161092e565b505b61119984836114b8565b6111a1611525565b156111ae576111ae61157b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260069091529190912054611200918490610f4c565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff168061124d57506001600160a01b03841660009081526008602052604090205460ff165b6112615761125c858486611972565b611263565b825b6001600160a01b0385166000908152600660205260409020549091506112899082611b3c565b6001600160a01b038086166000818152600660205260409081902093909355915190871690600080516020611f44833981519152906112cb9085815260200190565b60405180910390a3506001949350505050565b6000826000036112f05750600061069d565b60006112fc8385611dd7565b9050826113098583611dee565b1461075e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161092e565b600061075e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b9b565b600061075e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f4c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054611435918490610f4c565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546114649083611b3c565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020611f44833981519152906114a69086815260200190565b60405180910390a35060019392505050565b600454811115806114e157506001600160a01b03821660009081526009602052604090205460ff165b6115215760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161092e565b5050565b601d546000906001600160a01b03163314801590611546575060205460ff16155b801561155b5750601e54600160a81b900460ff165b80156108ff575050601f5430600090815260066020526040902054101590565b6020805460ff19166001179055601954601a5460009161159a91610d7f565b6115a657600a546115a9565b60005b905060006115cd600261079f600f5461079f86601f546112de90919063ffffffff16565b905060006115e682601f546113a290919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061162057611620611ebc565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061165157611651611ebc565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b81524792919091169063791ac9479061169b908690600090879030904290600401611ed2565b600060405180830381600087803b1580156116b557600080fd5b505af11580156116c9573d6000803e3d6000fd5b5050505060006116e282476113a290919063ffffffff16565b905060006116fd6116f4886002611360565b600f54906113a2565b90506000611712600261079f8481878d6112de565b9050600061172f8361079f600b54876112de90919063ffffffff16565b9050600061174c8461079f600d54886112de90919063ffffffff16565b905060006117698561079f600c54896112de90919063ffffffff16565b6015546040519192506000916001600160a01b039091169085908381818185875af1925050503d80600081146117bb576040519150601f19603f3d011682016040523d82523d6000602084013e6117c0565b606091505b50506016546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611810576040519150601f19603f3d011682016040523d82523d6000602084013e611815565b606091505b50506017546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611865576040519150601f19603f3d011682016040523d82523d6000602084013e61186a565b606091505b5060009250508b15905061195a57601b60009054906101000a90046001600160a01b03166001600160a01b031663f305d71986308e600080601460009054906101000a90046001600160a01b0316426040518863ffffffff1660e01b81526004016118da96959493929190611e2d565b60606040518083038185885af11580156118f8573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061191d9190611e68565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506020805460ff1916905550505050505050505050565b601354601d54600091906001600160a01b039081169084160361199857506011546119b3565b601d546001600160a01b03908116908616036119b357506012545b60006119e060105460646119c79190611dd7565b61079f84610792600f548a6112de90919063ffffffff16565b601d549091506000906001600160a01b03868116911614611a0a57611a05600061099b565b611a15565b611a1561dead61099b565b9050600081611a35600f5461079f600e54876112de90919063ffffffff16565b611a3f9190611e96565b90506000611a4d84836113a2565b30600090815260066020526040902054909150611a6a9082611b3c565b30600090815260066020526040808220929092556018546001600160a01b031681522054611a989083611b3c565b6018546001600160a01b0390811660009081526006602090815260409182902093909355518381523092918c1691600080516020611f44833981519152910160405180910390a38115611b2557600354611af290836113a2565b6003556040518281526000906001600160a01b038b1690600080516020611f448339815191529060200160405180910390a35b611b2f88856113a2565b9998505050505050505050565b600080611b498385611ea9565b90508381101561075e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161092e565b60008183611bbc5760405162461bcd60e51b815260040161092e9190611bc9565b506000610f7d8486611dee565b600060208083528351808285015260005b81811015611bf657858101830151858201604001528201611bda565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f4957600080fd5b60008060408385031215611c3f57600080fd5b8235611c4a81611c17565b946020939093013593505050565b600080600060608486031215611c6d57600080fd5b8335611c7881611c17565b92506020840135611c8881611c17565b929592945050506040919091013590565b600060208284031215611cab57600080fd5b5035919050565b600060208284031215611cc457600080fd5b813561075e81611c17565b60008060408385031215611ce257600080fd5b8235611ced81611c17565b91506020830135611cfd81611c17565b809150509250929050565b60008060408385031215611d1b57600080fd5b50508035926020909101359150565b8015158114610f4957600080fd5b60008060408385031215611d4b57600080fd5b8235611c4a81611d2a565b600060208284031215611d6857600080fd5b5051919050565b600060208284031215611d8157600080fd5b815161075e81611d2a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761069d5761069d611dc1565b600082611e0b57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611e2257600080fd5b815161075e81611c17565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215611e7d57600080fd5b8351925060208401519150604084015190509250925092565b8181038181111561069d5761069d611dc1565b8082018082111561069d5761069d611dc1565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f225784516001600160a01b031683529383019391830191600101611efd565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f1d86c8d3a864782445b90c9f71653e5883782d0e6cbcc3c59dd324fe76ae2ef64736f6c63430008130033
Deployed Bytecode Sourcemap
5135:12788:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7520:54;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7520:54:0;;;;;;;;9480:80;;;;;;;;;;-1:-1:-1;9552:5:0;;;;;;;;;;;-1:-1:-1;;;9552:5:0;;;;9480:80;;;;9552:5;9480:80;:::i;7436:31::-;;;;;;;;;;-1:-1:-1;7436:31:0;;;;-1:-1:-1;;;7436:31:0;;;;;;;;;914:14:1;;907:22;889:41;;877:2;862:18;7436:31:0;749:187:1;9902:216:0;;;;;;;;;;-1:-1:-1;9902:216:0;;;;;:::i;:::-;;:::i;9210:88::-;;;;;;;;;;-1:-1:-1;9283:12:0;;9210:88;;6796:93;;;;;;;;;;;;;;;;10450:370;;;;;;;;;;-1:-1:-1;10450:370:0;;;;;:::i;:::-;;:::i;17627:149::-;;;;;;;;;;-1:-1:-1;17627:149:0;;;;;:::i;:::-;;:::i;9304:80::-;;;;;;;;;;-1:-1:-1;9304:80:0;;5496:2;2185:36:1;;2173:2;2158:18;9304:80:0;2043:184:1;14544:337:0;;;;;;;;;;-1:-1:-1;14544:337:0;;;;;:::i;:::-;;:::i;17788:132::-;;;;;;;;;;;;;:::i;10129:149::-;;;;;;;;;;-1:-1:-1;10129:149:0;;;;;:::i;:::-;-1:-1:-1;;;;;10201:20:0;;;10184:4;10201:20;;;:11;:20;;;;;;;;10222:5;;;;;10201:27;;;;;;-1:-1:-1;;10201:47:0;;10222:5;;10129:149;10828:247;;;;;;;;;;-1:-1:-1;10828:247:0;;;;;:::i;:::-;;:::i;:::-;;7482:31;;;;;;;;;;-1:-1:-1;7482:31:0;;;;-1:-1:-1;;;7482:31:0;;;;;;9650:105;;;;;;;;;;-1:-1:-1;9650:105:0;;;;;:::i;:::-;;:::i;2049:148::-;;;;;;;;;;;;;:::i;11083:131::-;;;;;;;;;;;;;:::i;6277:61::-;;;;;;;;;;;;;;;;6190:58;;;;;;;;;;;;;;;;9566:78;;;;;;;;;;-1:-1:-1;9618:7:0;1900:6;-1:-1:-1;;;;;1900:6:0;9566:78;;;-1:-1:-1;;;;;2648:32:1;;;2630:51;;2618:2;2603:18;9566:78:0;2484:203:1;14896:75:0;;;;;;;;;;;;;:::i;1835:79::-;;;;;;;;;;-1:-1:-1;1873:7:0;1900:6;-1:-1:-1;;;;;1900:6:0;1835:79;;14979:138;;;;;;;;;;;;;:::i;7376:19::-;;;;;;;;;;-1:-1:-1;7376:19:0;;;;-1:-1:-1;;;;;7376:19:0;;;10286:156;;;;;;;;;;-1:-1:-1;10286:156:0;;;;;:::i;:::-;;:::i;1455:21::-;;;;;;;;;;-1:-1:-1;1455:21:0;;;;-1:-1:-1;;;;;1455:21:0;;;8635:529;;;:::i;9761:133::-;;;;;;;;;;-1:-1:-1;9761:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9863:19:0;;;9845:7;9863:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9761:133;17484:135;;;;;;;;;;-1:-1:-1;17484:135:0;;;;;:::i;:::-;;:::i;17265:211::-;;;;;;;;;;-1:-1:-1;17265:211:0;;;;;:::i;:::-;;:::i;2205:244::-;;;;;;;;;;-1:-1:-1;2205:244:0;;;;;:::i;:::-;;:::i;14405:132::-;;;;;;;;;;;;;:::i;7306:24::-;;;;;;;;;;-1:-1:-1;7306:24:0;;;;-1:-1:-1;;;;;7306:24:0;;;9902:216;10006:10;9977:4;9994:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9994:32:0;;;;;;;;;;:41;;;10051:37;9977:4;;9994:32;;10051:37;;;;10029:6;160:25:1;;148:2;133:18;;14:177;10051:37:0;;;;;;;;-1:-1:-1;10106:4:0;9902:216;;;;;:::o;10450:370::-;-1:-1:-1;;;;;10570:19:0;;10550:4;10570:19;;;:11;:19;;;;;;;;10590:10;10570:31;;;;;;;;-1:-1:-1;;10570:52:0;10567:186;;10672:69;;;;;;;;;;;-1:-1:-1;;;10672:69:0;;;;;;;;-1:-1:-1;;;;;10672:19:0;;-1:-1:-1;10672:19:0;;;:11;:19;;;;;10692:10;10672:31;;;;;;;;;;:69;;10708:6;;10672:35;:69::i;:::-;-1:-1:-1;;;;;10638:19:0;;;;;;:11;:19;;;;;;;;10658:10;10638:31;;;;;;;:103;10567:186;10772:40;10786:6;10794:9;10805:6;10772:13;:40::i;:::-;10765:47;;10450:370;;;;;;:::o;17627:149::-;17687:7;17714:54;17755:12;:10;:12::i;:::-;17737:4;;17714:36;;17727:22;;17747:1;;17727:15;;-1:-1:-1;;;;;17737:4:0;17727:9;:15::i;:::-;:19;;:22::i;:::-;17714:8;;:12;:36::i;:::-;:40;;:54::i;14544:337::-;14629:12;14657:6;14667:1;14657:11;14654:95;;14693:44;;-1:-1:-1;;;14693:44:0;;14731:4;14693:44;;;2630:51:1;-1:-1:-1;;;;;14693:29:0;;;;;2603:18:1;;14693:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14684:53;;14654:95;14764:32;;;-1:-1:-1;;;;;4382:32:1;;4364:51;;4446:2;4431:18;;4424:34;;;14764:32:0;;4337:18:1;14764:32:0;;;;;;;14843:21;;14814:59;;-1:-1:-1;;;14814:59:0;;-1:-1:-1;;;;;14843:21:0;;;14814:59;;;4364:51:1;4431:18;;;4424:34;;;14814:28:0;;;;;;4337:18:1;;14814:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17788:132::-;17831:7;17858:54;17896:15;5326:42;17896:9;:15::i;:::-;17858:33;17875:15;5253:42;17875:9;:15::i;:::-;17858:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;17851:61;;17788:132;:::o;10828:247::-;1962:6;;-1:-1:-1;;;;;1962:6:0;1272:10;1962:22;1954:67;;;;-1:-1:-1;;;1954:67:0;;;;;;;:::i;:::-;;;;;;;;;10932:1:::1;10914:14;:19;;10906:28;;;::::0;::::1;;10999:4;10980:14;10965:12;;:29;;;;:::i;:::-;10964:39;;;;:::i;:::-;10946:15;:57:::0;;;11019:30:::1;::::0;160:25:1;;;11019:30:0::1;::::0;148:2:1;133:18;11019:30:0::1;;;;;;;10828:247:::0;:::o;9650:105::-;-1:-1:-1;;;;;9734:18:0;9716:7;9734:18;;;:9;:18;;;;;;;9650:105::o;2049:148::-;1962:6;;-1:-1:-1;;;;;1962:6:0;1272:10;1962:22;1954:67;;;;-1:-1:-1;;;1954:67:0;;;;;;;:::i;:::-;2156:1:::1;2140:6:::0;;2119:40:::1;::::0;-1:-1:-1;;;;;2140:6:0;;::::1;::::0;2119:40:::1;::::0;2156:1;;2119:40:::1;2187:1;2170:19:::0;;-1:-1:-1;;;;;;2170:19:0::1;::::0;;2049:148::o;11083:131::-;1962:6;;-1:-1:-1;;;;;1962:6:0;1272:10;1962:22;1954:67;;;;-1:-1:-1;;;1954:67:0;;;;;;;:::i;:::-;11153:12:::1;::::0;11138::::1;:27:::0;;;11176:15:::1;:30:::0;11083:131::o;14896:75::-;1962:6;;-1:-1:-1;;;;;1962:6:0;1272:10;1962:22;1954:67;;;;-1:-1:-1;;;1954:67:0;;;;;;;:::i;:::-;14945:11:::1;:18:::0;;-1:-1:-1;;;;14945:18:0::1;-1:-1:-1::0;;;14945:18:0::1;::::0;;14896:75::o;14979:138::-;1962:6;;-1:-1:-1;;;;;1962:6:0;1272:10;1962:22;1954:67;;;;-1:-1:-1;;;1954:67:0;;;;;;;:::i;:::-;15050:1:::1;15037:10;:14:::0;;;15062:11:::1;:15:::0;;;15088::::1;:19:::0;14979:138::o;10286:156::-;10366:4;10390:44;10404:10;10416:9;10427:6;10390:13;:44::i;8635:529::-;1962:6;;-1:-1:-1;;;;;1962:6:0;1272:10;1962:22;1954:67;;;;-1:-1:-1;;;1954:67:0;;;;;;;:::i;:::-;8703:6:::1;:63:::0;;-1:-1:-1;;;;;;8703:63:0::1;8723:42;8703:63:::0;;::::1;::::0;;;8784:13:::1;::::0;;-1:-1:-1;;;8784:13:0;;;;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;8723:42;8784:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8777:4;:20:::0;;-1:-1:-1;;;;;;8777:20:0::1;-1:-1:-1::0;;;;;8777:20:0;;::::1;;::::0;;8829:6:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;8829:16:0;;;;:6;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:6;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8858:4;::::0;8817:61:::1;::::0;-1:-1:-1;;;8817:61:0;;-1:-1:-1;;;;;8858:4:0;;::::1;8817:61;::::0;::::1;6075:34:1::0;8872:4:0::1;6125:18:1::0;;;6118:43;8817:40:0;::::1;::::0;::::1;::::0;6010:18:1;;8817:61:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8810:4;:68:::0;;-1:-1:-1;;;;;;8810:68:0::1;-1:-1:-1::0;;;;;8810:68:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;8889:23:0;;;:17:::1;:23;::::0;;;;;;;:30;;-1:-1:-1;;8889:30:0::1;-1:-1:-1::0;8889:30:0::1;::::0;;8960:4:::1;8940:26:::0;;;:11:::1;:26:::0;;;;;8975:6:::1;::::0;;;::::1;8940:43:::0;;;;;;-1:-1:-1;;8940:63:0;;9016:6;;;::::1;::::0;:22:::1;::::0;9046:9:::1;::::0;9071:24:::1;8960:4:::0;9071:9:::1;:24::i;:::-;9096:1;9098::::0;9100:10:::1;9111:15;9016:111;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;9138:11:0::1;:18:::0;;-1:-1:-1;;;;9138:18:0::1;-1:-1:-1::0;;;9138:18:0::1;::::0;;-1:-1:-1;8635:529:0:o;17484:135::-;17558:4;17606:5;17582:21;17594:8;17582:11;:21::i;:::-;:29;;17484:135;-1:-1:-1;;;17484:135:0:o;17265:211::-;1962:6;;-1:-1:-1;;;;;1962:6:0;1272:10;1962:22;1954:67;;;;-1:-1:-1;;;1954:67:0;;;;;;;:::i;:::-;17356:11:::1;:22:::0;;-1:-1:-1;;;;17356:22:0::1;-1:-1:-1::0;;;17356:22:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;17389:13:::1;:23:::0;;;17428:40:::1;::::0;;7263:25:1;;;17356:22:0::1;17456:11:::0;;;::::1;::::0;;;::::1;7331:14:1::0;7324:22;7319:2;7304:18;;7297:50;17428:40:0::1;::::0;7236:18:1;17428:40:0::1;;;;;;;17265:211:::0;;:::o;2205:244::-;1962:6;;-1:-1:-1;;;;;1962:6:0;1272:10;1962:22;1954:67;;;;-1:-1:-1;;;1954:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2294:22:0;::::1;2286:73;;;::::0;-1:-1:-1;;;2286:73:0;;7560:2:1;2286:73:0::1;::::0;::::1;7542:21:1::0;7599:2;7579:18;;;7572:30;7638:34;7618:18;;;7611:62;-1:-1:-1;;;7689:18:1;;;7682:36;7735:19;;2286:73:0::1;7358:402:1::0;2286:73:0::1;2396:6;::::0;;2375:38:::1;::::0;-1:-1:-1;;;;;2375:38:0;;::::1;::::0;2396:6;::::1;::::0;2375:38:::1;::::0;::::1;2424:6;:17:::0;;-1:-1:-1;;;;;;2424:17:0::1;-1:-1:-1::0;;;;;2424:17:0;;;::::1;::::0;;;::::1;::::0;;2205:244::o;14405:132::-;14461:21;;14453:62;;-1:-1:-1;;;;;14461:21:0;;;;14493;14453:62;;;;;14461:21;14453:62;14461:21;14453:62;14493:21;14461;14453:62;;;;;;;;;;;;;;;;;;;;;14405:132::o;4347:192::-;4433:7;4469:12;4461:6;;;;4453:29;;;;-1:-1:-1;;;4453:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4493:9:0;4505:5;4509:1;4505;:5;:::i;:::-;4493:17;4347:192;-1:-1:-1;;;;;4347:192:0:o;11230:1220::-;11342:6;;11322:4;;11342:6;;11339:63;;;11358:41;11373:6;11381:9;11392:6;11358:14;:41::i;:::-;11351:48;;;;11339:63;-1:-1:-1;;;;;11418:24:0;;;;;;:16;:24;;;;;;;;11417:25;:57;;;;-1:-1:-1;;;;;;11447:27:0;;;;;;:16;:27;;;;;;;;11446:28;11417:57;11414:131;;;11498:11;;-1:-1:-1;;;11498:11:0;;;;11490:43;;;;-1:-1:-1;;;11490:43:0;;8100:2:1;11490:43:0;;;8082:21:1;8139:2;8119:18;;;8112:30;-1:-1:-1;;;8158:18:1;;;8151:50;8218:18;;11490:43:0;7898:344:1;11490:43:0;-1:-1:-1;;;;;11577:22:0;;;;;;:14;:22;;;;;;;;11576:23;:53;;;;-1:-1:-1;;;;;;11603:26:0;;11624:4;11603:26;;11576:53;:84;;;;-1:-1:-1;;;;;;11634:26:0;;5253:42;11634:26;;11576:84;:105;;;;-1:-1:-1;11677:4:0;;-1:-1:-1;;;;;11664:17:0;;;11677:4;;11664:17;;11576:105;:137;;;;-1:-1:-1;11698:15:0;;-1:-1:-1;;;;;11685:28:0;;;11698:15;;11685:28;;11576:137;:174;;;;-1:-1:-1;11730:20:0;;-1:-1:-1;;;;;11717:33:0;;;11730:20;;11717:33;;11576:174;:207;;;;-1:-1:-1;;;;;;11755:28:0;;;;;;:17;:28;;;;;;;;11754:29;11576:207;11572:399;;;11799:18;11820:20;11830:9;11820;:20::i;:::-;11888:15;;11799:41;;-1:-1:-1;11864:19:0;11877:6;11799:41;11864:19;:::i;:::-;11863:40;;11855:114;;;;-1:-1:-1;;;11855:114:0;;8579:2:1;11855:114:0;;;8561:21:1;8618:2;8598:18;;;8591:30;8657:34;8637:18;;;8630:62;8728:32;8708:18;;;8701:60;8778:19;;11855:114:0;8377:426:1;11855:114:0;11784:187;11572:399;11983:28;11996:6;12004;11983:12;:28::i;:::-;12029:16;:14;:16::i;:::-;12026:35;;;12048:10;:8;:10::i;:::-;12091:53;;;;;;;;;;;-1:-1:-1;;;12091:53:0;;;;;;;;-1:-1:-1;;;;;12091:17:0;;-1:-1:-1;12091:17:0;;;:9;:17;;;;;;;;:53;;12113:6;;12091:21;:53::i;:::-;-1:-1:-1;;;;;12071:17:0;;;;;;:9;:17;;;;;;;;:73;;;;12183:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;12211:27:0;;;;;;:16;:27;;;;;;;;12183:55;12182:103;;12251:34;12259:6;12267;12275:9;12251:7;:34::i;:::-;12182:103;;;12242:6;12182:103;-1:-1:-1;;;;;12319:20:0;;;;;;:9;:20;;;;;;12157:128;;-1:-1:-1;12319:40:0;;12157:128;12319:24;:40::i;:::-;-1:-1:-1;;;;;12296:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12377:43;;;;;;-1:-1:-1;;;;;;;;;;;12377:43:0;;;12405:14;160:25:1;;148:2;133:18;;14:177;12377:43:0;;;;;;;;-1:-1:-1;12438:4:0;;11230:1220;-1:-1:-1;;;;11230:1220:0:o;4545:250::-;4603:7;4627:1;4632;4627:6;4623:47;;-1:-1:-1;4657:1:0;4650:8;;4623:47;4682:9;4694:5;4698:1;4694;:5;:::i;:::-;4682:17;-1:-1:-1;4727:1:0;4718:5;4722:1;4682:17;4718:5;:::i;:::-;:10;4710:56;;;;-1:-1:-1;;;4710:56:0;;9010:2:1;4710:56:0;;;8992:21:1;9049:2;9029:18;;;9022:30;9088:34;9068:18;;;9061:62;-1:-1:-1;;;9139:18:1;;;9132:31;9180:19;;4710:56:0;8808:397:1;4801:132:0;4859:7;4886:39;4890:1;4893;4886:39;;;;;;;;;;;;;;;;;:3;:39::i;4205:136::-;4263:7;4290:43;4294:1;4297;4290:43;;;;;;;;;;;;;;;;;:3;:43::i;12459:330::-;12589:53;;;;;;;;;;;-1:-1:-1;;;12589:53:0;;;;;;;;-1:-1:-1;;;;;12589:17:0;;12552:4;12589:17;;;:9;:17;;;;;;;:53;;12611:6;;12589:21;:53::i;:::-;-1:-1:-1;;;;;12569:17:0;;;;;;;:9;:17;;;;;;:73;;;;12676:20;;;;;;;:32;;12701:6;12676:24;:32::i;:::-;-1:-1:-1;;;;;12653:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12724:35;;;;;;-1:-1:-1;;;;;;;;;;;12724:35:0;;;12752:6;160:25:1;;148:2;133:18;;14:177;12724:35:0;;;;;;;;-1:-1:-1;12777:4:0;12459:330;;;;;:::o;12797:168::-;12894:12;;12884:6;:22;;:51;;;-1:-1:-1;;;;;;12910:25:0;;;;;;:17;:25;;;;;;;;12884:51;12876:81;;;;-1:-1:-1;;;12876:81:0;;9412:2:1;12876:81:0;;;9394:21:1;9451:2;9431:18;;;9424:30;-1:-1:-1;;;9470:18:1;;;9463:47;9527:18;;12876:81:0;9210:341:1;12876:81:0;12797:168;;:::o;14195:197::-;14282:4;;14244;;-1:-1:-1;;;;;14282:4:0;14268:10;:18;;;;:38;;-1:-1:-1;14300:6:0;;;;14299:7;14268:38;:62;;;;-1:-1:-1;14319:11:0;;-1:-1:-1;;;14319:11:0;;;;14268:62;:116;;;;-1:-1:-1;;14371:13:0;;14361:4;14343:24;;;;:9;:24;;;;;;:41;;;14195:197::o;15140:1854::-;7622:6;:13;;-1:-1:-1;;7622:13:0;7631:4;7622:13;;;15230:8:::1;::::0;15240:19:::1;::::0;7622:6;;15219:41:::1;::::0;:10:::1;:41::i;:::-;:60;;15267:12;;15219:60;;;15263:1;15219:60;15189:90;;15290:23;15316:59;15373:1;15316:52;15359:8;;15316:38;15334:19;15316:13;;:17;;:38;;;;:::i;:59::-;15290:85;;15386:20;15409:34;15427:15;15409:13;;:17;;:34;;;;:::i;:::-;15480:16;::::0;;15494:1:::1;15480:16:::0;;;;;::::1;::::0;;15386:57;;-1:-1:-1;15456:21:0::1;::::0;15480:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15480:16:0::1;15456:40;;15525:4;15507;15512:1;15507:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15507:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;15551:4:::1;::::0;15541:7;;15551:4;::::1;::::0;15541;;15551;;15541:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;15541:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;15626:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;15626:188:0;;15592:21:::1;::::0;15626:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;15698:12;;15568:21:::1;::::0;15741:4;;15768::::1;::::0;15788:15:::1;::::0;15626:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15827:17;15847:40;15873:13;15847:21;:25;;:40;;;;:::i;:::-;15827:60:::0;-1:-1:-1;15900:19:0::1;15922:40;15935:26;:19:::0;15959:1:::1;15935:23;:26::i;:::-;15922:8;::::0;;:12:::1;:40::i;:::-;15900:62:::0;-1:-1:-1;15983:26:0::1;16012:58;16068:1;16012:51;15900:62:::0;16012:51;:9;16026:19;16012:13:::1;:34::i;:58::-;15983:87;;16081:26;16110:44;16142:11;16110:27;16124:12;;16110:9;:13;;:27;;;;:::i;:44::-;16081:73;;16165:24;16192:42;16222:11;16192:25;16206:10;;16192:9;:13;;:25;;;;:::i;:42::-;16165:69;;16245:20;16268:38;16294:11;16268:21;16282:6;;16268:9;:13;;:21;;;;:::i;:38::-;16348:20;::::0;16340:65:::1;::::0;16245:61;;-1:-1:-1;16320:15:0::1;::::0;-1:-1:-1;;;;;16348:20:0;;::::1;::::0;16382:18;;16320:15;16340:65;16320:15;16340:65;16382:18;16348:20;16340:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16440:14:0::1;::::0;16432:53:::1;::::0;16319:86;;-1:-1:-1;;;;;;16440:14:0::1;::::0;16468:12;;16432:53:::1;::::0;;;16468:12;16440:14;16432:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16520:18:0::1;::::0;16512:61:::1;::::0;16416:69;;-1:-1:-1;;;;;;16520:18:0::1;::::0;16552:16;;16512:61:::1;::::0;;;16552:16;16520:18;16512:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;16607:5:0::1;::::0;-1:-1:-1;;16628:19:0;;;-1:-1:-1;16625:362:0::1;;16663:6;;;;;;;;;-1:-1:-1::0;;;;;16663:6:0::1;-1:-1:-1::0;;;;;16663:22:0::1;;16693:18;16739:4;16763:15;16797:1;16817::::0;16837:21:::1;;;;;;;;;-1:-1:-1::0;;;;;16837:21:0::1;16877:15;16663:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16927:48:0::1;::::0;;11189:25:1;;;11245:2;11230:18;;11223:34;;;16927:48:0::1;::::0;-1:-1:-1;11162:18:1;16927:48:0::1;;;;;;;16625:362;-1:-1:-1::0;;7640:6:0;:14;;-1:-1:-1;;7640:14:0;;;-1:-1:-1;;;;;;;;;;15140:1854:0:o;13100:1087::-;13234:15;;13276:4;;13186:7;;13234:15;-1:-1:-1;;;;;13276:4:0;;;13263:17;;;;13260:142;;-1:-1:-1;13307:11:0;;13260:142;;;13349:4;;-1:-1:-1;;;;;13349:4:0;;;13339:14;;;;13336:66;;-1:-1:-1;13380:10:0;;13336:66;13414:17;13434:59;13472:14;;13489:3;13472:20;;;;:::i;:::-;13434:33;13459:7;13434:20;13445:8;;13434:6;:10;;:20;;;;:::i;:59::-;13542:4;;13414:79;;-1:-1:-1;13504:22:0;;-1:-1:-1;;;;;13529:17:0;;;13542:4;;13529:17;:52;;13566:15;5326:42;13566:9;:15::i;:::-;13529:52;;;13548:15;5253:42;13548:9;:15::i;:::-;13504:77;;13592:18;13652:14;13613:36;13640:8;;13613:22;13627:7;;13613:9;:13;;:22;;;;:::i;:36::-;:53;;;;:::i;:::-;13592:74;-1:-1:-1;13677:22:0;13702:25;:9;13592:74;13702:13;:25::i;:::-;13783:4;13765:24;;;;:9;:24;;;;;;13677:50;;-1:-1:-1;13765:44:0;;13677:50;13765:28;:44::i;:::-;13756:4;13738:24;;;;:9;:24;;;;;;:71;;;;13859:15;;-1:-1:-1;;;;;13859:15:0;13849:26;;;;:42;;13880:10;13849:30;:42::i;:::-;13830:15;;-1:-1:-1;;;;;13830:15:0;;;13820:26;;;;:9;:26;;;;;;;;;:71;;;;13907:47;160:25:1;;;13932:4:0;;13907:47;;;;-1:-1:-1;;;;;;;;;;;13907:47:0;133:18:1;13907:47:0;;;;;;;13988:14;;13985:154;;14033:12;;:28;;14050:10;14033:16;:28::i;:::-;14018:12;:43;14081:34;;160:25:1;;;5326:42:0;;-1:-1:-1;;;;;14081:34:0;;;-1:-1:-1;;;;;;;;;;;14081:34:0;148:2:1;133:18;14081:34:0;;;;;;;13985:154;14158:21;:6;14169:9;14158:10;:21::i;:::-;14151:28;13100:1087;-1:-1:-1;;;;;;;;;13100:1087:0:o;4018:181::-;4076:7;;4108:5;4112:1;4108;:5;:::i;:::-;4096:17;;4137:1;4132;:6;;4124:46;;;;-1:-1:-1;;;4124:46:0;;11470:2:1;4124:46:0;;;11452:21:1;11509:2;11489:18;;;11482:30;11548:29;11528:18;;;11521:57;11595:18;;4124:46:0;11268:351:1;4939:189:0;5025:7;5060:12;5053:5;5045:28;;;;-1:-1:-1;;;5045:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5084:9:0;5096:5;5100:1;5096;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;941:131::-;-1:-1:-1;;;;;1016:31:1;;1006:42;;996:70;;1062:1;1059;1052:12;1077:315;1145:6;1153;1206:2;1194:9;1185:7;1181:23;1177:32;1174:52;;;1222:1;1219;1212:12;1174:52;1261:9;1248:23;1280:31;1305:5;1280:31;:::i;:::-;1330:5;1382:2;1367:18;;;;1354:32;;-1:-1:-1;;;1077:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;-1:-1:-1;2009:23:1;;1858:180;-1:-1:-1;1858:180:1:o;2232:247::-;2291:6;2344:2;2332:9;2323:7;2319:23;2315:32;2312:52;;;2360:1;2357;2350:12;2312:52;2399:9;2386:23;2418:31;2443:5;2418:31;:::i;2692:388::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2895:31;2920:5;2895:31;:::i;:::-;2945:5;-1:-1:-1;3002:2:1;2987:18;;2974:32;3015:33;2974:32;3015:33;:::i;:::-;3067:7;3057:17;;;2692:388;;;;;:::o;3085:248::-;3153:6;3161;3214:2;3202:9;3193:7;3189:23;3185:32;3182:52;;;3230:1;3227;3220:12;3182:52;-1:-1:-1;;3253:23:1;;;3323:2;3308:18;;;3295:32;;-1:-1:-1;3085:248:1:o;3338:118::-;3424:5;3417:13;3410:21;3403:5;3400:32;3390:60;;3446:1;3443;3436:12;3461:309;3526:6;3534;3587:2;3575:9;3566:7;3562:23;3558:32;3555:52;;;3603:1;3600;3593:12;3555:52;3642:9;3629:23;3661:28;3683:5;3661:28;:::i;4001:184::-;4071:6;4124:2;4112:9;4103:7;4099:23;4095:32;4092:52;;;4140:1;4137;4130:12;4092:52;-1:-1:-1;4163:16:1;;4001:184;-1:-1:-1;4001:184:1:o;4469:245::-;4536:6;4589:2;4577:9;4568:7;4564:23;4560:32;4557:52;;;4605:1;4602;4595:12;4557:52;4637:9;4631:16;4656:28;4678:5;4656:28;:::i;4719:356::-;4921:2;4903:21;;;4940:18;;;4933:30;4999:34;4994:2;4979:18;;4972:62;5066:2;5051:18;;4719:356::o;5080:127::-;5141:10;5136:3;5132:20;5129:1;5122:31;5172:4;5169:1;5162:15;5196:4;5193:1;5186:15;5212:168;5285:9;;;5316;;5333:15;;;5327:22;;5313:37;5303:71;;5354:18;;:::i;5385:217::-;5425:1;5451;5441:132;;5495:10;5490:3;5486:20;5483:1;5476:31;5530:4;5527:1;5520:15;5558:4;5555:1;5548:15;5441:132;-1:-1:-1;5587:9:1;;5385:217::o;5607:251::-;5677:6;5730:2;5718:9;5709:7;5705:23;5701:32;5698:52;;;5746:1;5743;5736:12;5698:52;5778:9;5772:16;5797:31;5822:5;5797:31;:::i;6172:607::-;-1:-1:-1;;;;;6531:15:1;;;6513:34;;6578:2;6563:18;;6556:34;;;;6621:2;6606:18;;6599:34;;;;6664:2;6649:18;;6642:34;;;;6713:15;;;6707:3;6692:19;;6685:44;6493:3;6745:19;;6738:35;;;;6462:3;6447:19;;6172:607::o;6784:306::-;6872:6;6880;6888;6941:2;6929:9;6920:7;6916:23;6912:32;6909:52;;;6957:1;6954;6947:12;6909:52;6986:9;6980:16;6970:26;;7036:2;7025:9;7021:18;7015:25;7005:35;;7080:2;7069:9;7065:18;7059:25;7049:35;;6784:306;;;;;:::o;7765:128::-;7832:9;;;7853:11;;;7850:37;;;7867:18;;:::i;8247:125::-;8312:9;;;8333:10;;;8330:36;;;8346:18;;:::i;9688:127::-;9749:10;9744:3;9740:20;9737:1;9730:31;9780:4;9777:1;9770:15;9804:4;9801:1;9794:15;9820:980;10082:4;10130:3;10119:9;10115:19;10161:6;10150:9;10143:25;10187:2;10225:6;10220:2;10209:9;10205:18;10198:34;10268:3;10263:2;10252:9;10248:18;10241:31;10292:6;10327;10321:13;10358:6;10350;10343:22;10396:3;10385:9;10381:19;10374:26;;10435:2;10427:6;10423:15;10409:29;;10456:1;10466:195;10480:6;10477:1;10474:13;10466:195;;;10545:13;;-1:-1:-1;;;;;10541:39:1;10529:52;;10636:15;;;;10601:12;;;;10577:1;10495:9;10466:195;;;-1:-1:-1;;;;;;;10717:32:1;;;;10712:2;10697:18;;10690:60;-1:-1:-1;;;10781:3:1;10766:19;10759:35;10678:3;9820:980;-1:-1:-1;;;9820:980:1:o
Swarm Source
ipfs://f1d86c8d3a864782445b90c9f71653e5883782d0e6cbcc3c59dd324fe76ae2ef
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.