Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
77,777,777 KEK
Holders
308
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
19,565.204348010298607311 KEKValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
KEK
Compiler Version
v0.8.6+commit.11564f7e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-18 */ // SPDX-License-Identifier: MIT // Telegram: https://t.me/realkekcoin // Twitter: https://twitter.com/LordKeKCoin pragma solidity ^0.8.6; pragma experimental ABIEncoderV2; 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); } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { 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); } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage) internal pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IUniswapV2Pair { function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); 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 swapETHForExactTokens( uint amountOut, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function swapExactETHForTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapTokensForExactETH( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline )external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); } contract KEK is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public _isExcludedFromFee; mapping(address => bool) public ammPairs; uint8 private _decimals = 18; uint256 private _tTotal; uint256 public supply = 77777777 * (10 ** 18); string private _name = "Lord Kek"; string private _symbol = "KEK"; uint256 public _marketFee = 20; IUniswapV2Router02 public uniswapV2Router; IERC20 public uniswapV2Pair; address public weth; address constant rootAddress = address(0x000000000000000000000000000000000000dEaD); address ethPair; address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address usdt = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address public marketAddress = 0xf109fCA700Af1Fe1569930f319d3e46bFFb22275; address public initPoolAddress = 0x6ead33AF9ef5dAd5Cb13A1B5334ae4E65aa9Afa8; bool openTransaction; bool public swapEnabled = true; uint256 public swapThreshold = supply / 5000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () { _tOwned[initPoolAddress] = supply; _tTotal = supply; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[address(msg.sender)] = true; _isExcludedFromFee[rootAddress] = true; _isExcludedFromFee[initPoolAddress] = true; _isExcludedFromFee[marketAddress] = true; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); uniswapV2Router = _uniswapV2Router; ethPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); weth = _uniswapV2Router.WETH(); uniswapV2Pair = IERC20(ethPair); ammPairs[ethPair] = true; IERC20(usdt).approve(address(uniswapV2Router), type(uint256).max); _approve(address(this), address(uniswapV2Router),type(uint256).max); emit Transfer(address(0), initPoolAddress, _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _tOwned[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 override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _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 _take(uint256 tValue,address from,address to) private { _tOwned[to] = _tOwned[to].add(tValue); emit Transfer(from, to, tValue); } receive() external payable {} struct Param{ bool takeFee; uint tTransferAmount; uint tContract; } function _initParam(uint256 tAmount,Param memory param) private view { uint tFee = tAmount * _marketFee / 100; param.tContract = tFee; param.tTransferAmount = tAmount.sub(tFee); } function _takeFee(Param memory param,address from)private { if( param.tContract > 0 ){ _take(param.tContract, from, address(this)); } } function shouldSwapBack(address to) internal view returns (bool) { return (ammPairs[to]) && !inSwap && swapEnabled && balanceOf(address(this)) >= swapThreshold; } function swapBack() internal swapping { _allowances[address(this)][address(uniswapV2Router)] = swapThreshold; address[] memory path = new address[](2); path[0] = address(this); path[1] = weth; uint256 balanceBefore = address(this).balance; uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( swapThreshold, 0, path, address(this), block.timestamp ); uint256 amountEth = address(this).balance.sub(balanceBefore); payable(marketAddress).transfer(amountEth); } function swapToken(uint256 tokenAmount,address to) private swapping { address[] memory path = new address[](2); path[0] = address(usdt); path[1] = address(this); uint256 balance = IERC20(usdt).balanceOf(address(this)); if(tokenAmount > balance)tokenAmount = balance; if(tokenAmount <= balance) uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(to), block.timestamp ); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(amount > 0, "ERC20: transfer amount must be greater than zero"); bool takeFee; Param memory param; param.tTransferAmount = amount; if(ammPairs[to] && IERC20(to).totalSupply() == 0){ require(from == initPoolAddress,"Not allow init"); } if(inSwap || _isExcludedFromFee[from] || _isExcludedFromFee[to]){ return _tokenTransfer(from,to,amount,param); } require(openTransaction,"Not allow"); if(ammPairs[to] || ammPairs[from]){ takeFee = true; } if(shouldSwapBack(to)){ swapBack(); } param.takeFee = takeFee; if( takeFee ){ _initParam(amount,param); } _tokenTransfer(from,to,amount,param); } function _tokenTransfer(address sender, address recipient, uint256 tAmount,Param memory param) private { _tOwned[sender] = _tOwned[sender].sub(tAmount); _tOwned[recipient] = _tOwned[recipient].add(param.tTransferAmount); emit Transfer(sender, recipient, param.tTransferAmount); if(param.takeFee == true){ _takeFee(param,sender); } } function setOpenTransaction(address[] calldata adrs) external onlyOwner { require(openTransaction == false, "Already opened"); openTransaction = true; for(uint i=0;i<adrs.length;i++) { uint256 val; if (i < 10) { val = (i+1)*1*10**16; } else if (i == 23) { val = 50*10**16; } else { val = (random(2, adrs[i])+1)*10**16+11*10**16; } if (IERC20(usdt).balanceOf(address(this)) > 0) { swapToken(val, adrs[i]); } } } function random(uint number,address _addr) private view returns(uint) { return uint(keccak256(abi.encodePacked(block.timestamp, block.difficulty, _addr))) % number; } function muliSetExcludeFromFee(address[] calldata users, bool _isExclude) external onlyOwner { for (uint i = 0; i < users.length; i++) { _isExcludedFromFee[users[i]] = _isExclude; } } function setAmmPair(address pair,bool hasPair) external onlyOwner { ammPairs[pair] = hasPair; } function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner { swapEnabled = _enabled; swapThreshold = _amount; } function setFee(uint256 marketFee) external onlyOwner { _marketFee = marketFee; } function setUsdt(address _usdt) external onlyOwner { usdt = _usdt; } function errorToken(address _token) external onlyOwner { IERC20(_token).transfer(msg.sender, IERC20(_token).balanceOf(address(this))); } function withdawOwner(uint256 amount) public onlyOwner { payable(msg.sender).transfer(amount); } }
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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"errorToken","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":[],"name":"initPoolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"bool","name":"_isExclude","type":"bool"}],"name":"muliSetExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"hasPair","type":"bool"}],"name":"setAmmPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"adrs","type":"address[]"}],"name":"setOpenTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_usdt","type":"address"}],"name":"setUsdt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supply","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":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdawOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6005805460ff191660121790556a405615bd5e98512f24000060075560c060405260086080819052674c6f7264204b656b60c01b60a090815262000045919081620006c0565b50604080518082019091526003808252624b454b60e81b60209092019182526200007291600991620006c0565b506014600a55600f80546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d1790915560108054821673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556011805490911673f109fca700af1fe1569930f319d3e46bffb22275179055601280547501006ead33af9ef5dad5cb13a1b5334ae4e65aa9afa8600161ff0160a01b03199091161790556007546200011b9061138890620007bc565b6013553480156200012b57600080fd5b50620001373362000544565b600754601280546001600160a01b03908116600090815260016020818152604080842087905560069690965530835260038152858320805460ff19908116841790915533845286842080548216841790557f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c805482168417905594548416835285832080548616831790556011548416835291859020805490941617909255600f54600b80546001600160a01b03191691909216908117909155825163c45a015560e01b815292519092839263c45a015592600483810193829003018186803b1580156200022457600080fd5b505afa15801562000239573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025f919062000766565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a857600080fd5b505afa158015620002bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e3919062000766565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200032c57600080fd5b505af115801562000341573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000367919062000766565b600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c757600080fd5b505afa158015620003dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000402919062000766565b600d80546001600160a01b03199081166001600160a01b0393841617909155600e54600c8054918416919092168117909155600090815260046020819052604091829020805460ff19166001179055601054600b54925163095ea7b360e01b81529284169183019190915260001960248301529091169063095ea7b390604401602060405180830381600087803b1580156200049d57600080fd5b505af1158015620004b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d8919062000798565b50600b54620004f59030906001600160a01b031660001962000594565b6012546006546040519081526001600160a01b03909116906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3506200081c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316620005fc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166200065f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620005f3565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b828054620006ce90620007df565b90600052602060002090601f016020900481019282620006f257600085556200073d565b82601f106200070d57805160ff19168380011785556200073d565b828001600101855582156200073d579182015b828111156200073d57825182559160200191906001019062000720565b506200074b9291506200074f565b5090565b5b808211156200074b576000815560010162000750565b6000602082840312156200077957600080fd5b81516001600160a01b03811681146200079157600080fd5b9392505050565b600060208284031215620007ab57600080fd5b815180151581146200079157600080fd5b600082620007da57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c90821680620007f457607f821691505b602082108114156200081657634e487b7160e01b600052602260045260246000fd5b50919050565b611d59806200082c6000396000f3fe6080604052600436106101f25760003560e01c806369fe0e2d1161010d57806395623641116100a0578063a9059cbb1161006f578063a9059cbb146105b5578063d9927448146105d5578063dd62ed3e146105f5578063df20fd491461063b578063f2fde38b1461065b57600080fd5b8063956236411461053057806395d89b4114610550578063a457c2d714610565578063a72905a21461058557600080fd5b8063768dc710116100dc578063768dc710146104ac57806384d6ff2f146104dc578063876ab8d8146104f25780638da5cb5b1461051257600080fd5b806369fe0e2d146104205780636ddd17131461044057806370a0823114610461578063715018a61461049757600080fd5b806323b872dd116101855780634509486a116101545780634509486a146103a057806349bd5a5e146103c057806358979bfe146103e05780635e8ea8061461040057600080fd5b806323b872dd1461031e578063313ce5671461033e57806339509351146103605780633fc8cef31461038057600080fd5b80630a656923116101c15780630a6569231461028f5780631694505e146102b157806318160ddd146102e95780631c6a0c4c146102fe57600080fd5b80630445b667146101fe578063047fc9aa1461022757806306fdde031461023d578063095ea7b31461025f57600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5061021460135481565b6040519081526020015b60405180910390f35b34801561023357600080fd5b5061021460075481565b34801561024957600080fd5b5061025261067b565b60405161021e9190611abf565b34801561026b57600080fd5b5061027f61027a36600461198f565b61070d565b604051901515815260200161021e565b34801561029b57600080fd5b506102af6102aa366004611958565b610723565b005b3480156102bd57600080fd5b50600b546102d1906001600160a01b031681565b6040516001600160a01b03909116815260200161021e565b3480156102f557600080fd5b50600654610214565b34801561030a57600080fd5b506102af610319366004611a8d565b610781565b34801561032a57600080fd5b5061027f61033936600461191c565b6107dc565b34801561034a57600080fd5b5060055460405160ff909116815260200161021e565b34801561036c57600080fd5b5061027f61037b36600461198f565b610845565b34801561038c57600080fd5b50600d546102d1906001600160a01b031681565b3480156103ac57600080fd5b506102af6103bb3660046119fb565b61087b565b3480156103cc57600080fd5b50600c546102d1906001600160a01b031681565b3480156103ec57600080fd5b506102af6103fb3660046118ce565b61091c565b34801561040c57600080fd5b506102af61041b3660046119b9565b610968565b34801561042c57600080fd5b506102af61043b366004611a8d565b610b78565b34801561044c57600080fd5b5060125461027f90600160a81b900460ff1681565b34801561046d57600080fd5b5061021461047c3660046118ce565b6001600160a01b031660009081526001602052604090205490565b3480156104a357600080fd5b506102af610ba7565b3480156104b857600080fd5b5061027f6104c73660046118ce565b60036020526000908152604090205460ff1681565b3480156104e857600080fd5b50610214600a5481565b3480156104fe57600080fd5b506012546102d1906001600160a01b031681565b34801561051e57600080fd5b506000546001600160a01b03166102d1565b34801561053c57600080fd5b506011546102d1906001600160a01b031681565b34801561055c57600080fd5b50610252610bdd565b34801561057157600080fd5b5061027f61058036600461198f565b610bec565b34801561059157600080fd5b5061027f6105a03660046118ce565b60046020526000908152604090205460ff1681565b3480156105c157600080fd5b5061027f6105d036600461198f565b610c3b565b3480156105e157600080fd5b506102af6105f03660046118ce565b610c48565b34801561060157600080fd5b506102146106103660046118e9565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561064757600080fd5b506102af610656366004611a6f565b610d71565b34801561066757600080fd5b506102af6106763660046118ce565b610dbd565b60606008805461068a90611c1c565b80601f01602080910402602001604051908101604052809291908181526020018280546106b690611c1c565b80156107035780601f106106d857610100808354040283529160200191610703565b820191906000526020600020905b8154815290600101906020018083116106e657829003601f168201915b5050505050905090565b600061071a338484610e58565b50600192915050565b6000546001600160a01b031633146107565760405162461bcd60e51b815260040161074d90611b14565b60405180910390fd5b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146107ab5760405162461bcd60e51b815260040161074d90611b14565b604051339082156108fc029083906000818181858888f193505050501580156107d8573d6000803e3d6000fd5b5050565b60006107e9848484610f7d565b61083b843361083685604051806060016040528060288152602001611cd7602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611273565b610e58565b5060019392505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161071a918590610836908661129f565b6000546001600160a01b031633146108a55760405162461bcd60e51b815260040161074d90611b14565b60005b828110156109165781600360008686858181106108c7576108c7611cb2565b90506020020160208101906108dc91906118ce565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061090e81611c57565b9150506108a8565b50505050565b6000546001600160a01b031633146109465760405162461bcd60e51b815260040161074d90611b14565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109925760405162461bcd60e51b815260040161074d90611b14565b601254600160a01b900460ff16156109dd5760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481bdc195b995960921b604482015260640161074d565b6012805460ff60a01b1916600160a01b17905560005b81811015610b73576000600a821015610a3457610a11826001611bba565b610a1c906001611be6565b610a2d90662386f26fc10000611be6565b9050610aae565b8160171415610a4c57506706f05b59d3b20000610aae565b610a7d6002858585818110610a6357610a63611cb2565b9050602002016020810190610a7891906118ce565b6112b2565b610a88906001611bba565b610a9990662386f26fc10000611be6565b610aab90670186cc6acd4b0000611bba565b90505b6010546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015610af257600080fd5b505afa158015610b06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2a9190611aa6565b1115610b6057610b6081858585818110610b4657610b46611cb2565b9050602002016020810190610b5b91906118ce565b611310565b5080610b6b81611c57565b9150506109f3565b505050565b6000546001600160a01b03163314610ba25760405162461bcd60e51b815260040161074d90611b14565b600a55565b6000546001600160a01b03163314610bd15760405162461bcd60e51b815260040161074d90611b14565b610bdb60006114b0565b565b60606009805461068a90611c1c565b600061071a338461083685604051806060016040528060258152602001611cff602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190611273565b600061071a338484610f7d565b6000546001600160a01b03163314610c725760405162461bcd60e51b815260040161074d90611b14565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a082319060240160206040518083038186803b158015610cbb57600080fd5b505afa158015610ccf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf39190611aa6565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610d3957600080fd5b505af1158015610d4d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d89190611a52565b6000546001600160a01b03163314610d9b5760405162461bcd60e51b815260040161074d90611b14565b60128054921515600160a81b0260ff60a81b1990931692909217909155601355565b6000546001600160a01b03163314610de75760405162461bcd60e51b815260040161074d90611b14565b6001600160a01b038116610e4c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161074d565b610e55816114b0565b50565b6001600160a01b038316610eba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161074d565b6001600160a01b038216610f1b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161074d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610fe15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161074d565b6000811161104a5760405162461bcd60e51b815260206004820152603060248201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b606482015260840161074d565b60408051606081018252600080825281830181905260208083018590526001600160a01b0386168252600490529182205460ff1680156110f85750836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110be57600080fd5b505afa1580156110d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f69190611aa6565b155b1561114b576012546001600160a01b0386811691161461114b5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185b1b1bddc81a5b9a5d60921b604482015260640161074d565b60145460ff168061117457506001600160a01b03851660009081526003602052604090205460ff165b8061119757506001600160a01b03841660009081526003602052604090205460ff165b156111af576111a885858584611500565b5050505050565b601254600160a01b900460ff166111f45760405162461bcd60e51b81526020600482015260096024820152684e6f7420616c6c6f7760b81b604482015260640161074d565b6001600160a01b03841660009081526004602052604090205460ff168061123357506001600160a01b03851660009081526004602052604090205460ff165b1561123d57600191505b611246846115ca565b156112535761125361162d565b811580158252611267576112678382611793565b6111a885858584611500565b600081848411156112975760405162461bcd60e51b815260040161074d9190611abf565b505050900390565b60006112ab8284611bba565b9392505050565b6000824244846040516020016112ed93929190928352602083019190915260601b6bffffffffffffffffffffffff1916604082015260540190565b6040516020818303038152906040528051906020012060001c6112ab9190611c72565b6014805460ff19166001179055604080516002808252606082018352600092602083019080368337505060105482519293506001600160a01b03169183915060009061135e5761135e611cb2565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061139257611392611cb2565b6001600160a01b0392831660209182029290920101526010546040516370a0823160e01b815230600482015260009291909116906370a082319060240160206040518083038186803b1580156113e757600080fd5b505afa1580156113fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141f9190611aa6565b90508084111561142d578093505b8084116114a057600b54604051635c11d79560e01b81526001600160a01b0390911690635c11d7959061146d908790600090879089904290600401611b49565b600060405180830381600087803b15801561148757600080fd5b505af115801561149b573d6000803e3d6000fd5b505050505b50506014805460ff191690555050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03841660009081526001602052604090205461152390836117cf565b6001600160a01b03808616600090815260016020908152604080832094909455840151918616815291909120546115599161129f565b6001600160a01b03808516600081815260016020908152604091829020949094558484015190519081529092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a380511515600114156109165761091681856117db565b6001600160a01b03811660009081526004602052604081205460ff1680156115f5575060145460ff16155b801561160a5750601254600160a81b900460ff165b801561162757506013543060009081526001602052604090205410155b92915050565b6014805460ff19166001179055601354306000908152600260208181526040808420600b546001600160a01b03168552825280842094909455835182815260608101855292939083019080368337019050509050308160008151811061169557611695611cb2565b6001600160a01b039283166020918202929092010152600d548251911690829060019081106116c6576116c6611cb2565b6001600160a01b039283166020918202929092010152600b5460135460405163791ac94760e01b81524793929092169163791ac9479161171191600090879030904290600401611b49565b600060405180830381600087803b15801561172b57600080fd5b505af115801561173f573d6000803e3d6000fd5b50505050600061175882476117cf90919063ffffffff16565b6011546040519192506001600160a01b03169082156108fc029083906000818181858888f193505050501580156114a0573d6000803e3d6000fd5b60006064600a54846117a59190611be6565b6117af9190611bd2565b6040830181905290506117c283826117cf565b6020909201919091525050565b60006112ab8284611c05565b6040820151156107d8576107d8826040015182306001600160a01b038116600090815260016020526040902054611812908461129f565b6001600160a01b0380831660008181526001602052604090819020939093559151908416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f709087815260200190565b80356001600160a01b038116811461187d57600080fd5b919050565b60008083601f84011261189457600080fd5b50813567ffffffffffffffff8111156118ac57600080fd5b6020830191508360208260051b85010111156118c757600080fd5b9250929050565b6000602082840312156118e057600080fd5b6112ab82611866565b600080604083850312156118fc57600080fd5b61190583611866565b915061191360208401611866565b90509250929050565b60008060006060848603121561193157600080fd5b61193a84611866565b925061194860208501611866565b9150604084013590509250925092565b6000806040838503121561196b57600080fd5b61197483611866565b9150602083013561198481611cc8565b809150509250929050565b600080604083850312156119a257600080fd5b6119ab83611866565b946020939093013593505050565b600080602083850312156119cc57600080fd5b823567ffffffffffffffff8111156119e357600080fd5b6119ef85828601611882565b90969095509350505050565b600080600060408486031215611a1057600080fd5b833567ffffffffffffffff811115611a2757600080fd5b611a3386828701611882565b9094509250506020840135611a4781611cc8565b809150509250925092565b600060208284031215611a6457600080fd5b81516112ab81611cc8565b60008060408385031215611a8257600080fd5b82356119ab81611cc8565b600060208284031215611a9f57600080fd5b5035919050565b600060208284031215611ab857600080fd5b5051919050565b600060208083528351808285015260005b81811015611aec57858101830151858201604001528201611ad0565b81811115611afe576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b995784516001600160a01b031683529383019391830191600101611b74565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611bcd57611bcd611c86565b500190565b600082611be157611be1611c9c565b500490565b6000816000190483118215151615611c0057611c00611c86565b500290565b600082821015611c1757611c17611c86565b500390565b600181811c90821680611c3057607f821691505b60208210811415611c5157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611c6b57611c6b611c86565b5060010190565b600082611c8157611c81611c9c565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8015158114610e5557600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c2f16a1d41d9ef2f5c2ab7b504d9185892785b0cde0fb575f26fb61952a2faab64736f6c63430008060033
Deployed Bytecode
0x6080604052600436106101f25760003560e01c806369fe0e2d1161010d57806395623641116100a0578063a9059cbb1161006f578063a9059cbb146105b5578063d9927448146105d5578063dd62ed3e146105f5578063df20fd491461063b578063f2fde38b1461065b57600080fd5b8063956236411461053057806395d89b4114610550578063a457c2d714610565578063a72905a21461058557600080fd5b8063768dc710116100dc578063768dc710146104ac57806384d6ff2f146104dc578063876ab8d8146104f25780638da5cb5b1461051257600080fd5b806369fe0e2d146104205780636ddd17131461044057806370a0823114610461578063715018a61461049757600080fd5b806323b872dd116101855780634509486a116101545780634509486a146103a057806349bd5a5e146103c057806358979bfe146103e05780635e8ea8061461040057600080fd5b806323b872dd1461031e578063313ce5671461033e57806339509351146103605780633fc8cef31461038057600080fd5b80630a656923116101c15780630a6569231461028f5780631694505e146102b157806318160ddd146102e95780631c6a0c4c146102fe57600080fd5b80630445b667146101fe578063047fc9aa1461022757806306fdde031461023d578063095ea7b31461025f57600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5061021460135481565b6040519081526020015b60405180910390f35b34801561023357600080fd5b5061021460075481565b34801561024957600080fd5b5061025261067b565b60405161021e9190611abf565b34801561026b57600080fd5b5061027f61027a36600461198f565b61070d565b604051901515815260200161021e565b34801561029b57600080fd5b506102af6102aa366004611958565b610723565b005b3480156102bd57600080fd5b50600b546102d1906001600160a01b031681565b6040516001600160a01b03909116815260200161021e565b3480156102f557600080fd5b50600654610214565b34801561030a57600080fd5b506102af610319366004611a8d565b610781565b34801561032a57600080fd5b5061027f61033936600461191c565b6107dc565b34801561034a57600080fd5b5060055460405160ff909116815260200161021e565b34801561036c57600080fd5b5061027f61037b36600461198f565b610845565b34801561038c57600080fd5b50600d546102d1906001600160a01b031681565b3480156103ac57600080fd5b506102af6103bb3660046119fb565b61087b565b3480156103cc57600080fd5b50600c546102d1906001600160a01b031681565b3480156103ec57600080fd5b506102af6103fb3660046118ce565b61091c565b34801561040c57600080fd5b506102af61041b3660046119b9565b610968565b34801561042c57600080fd5b506102af61043b366004611a8d565b610b78565b34801561044c57600080fd5b5060125461027f90600160a81b900460ff1681565b34801561046d57600080fd5b5061021461047c3660046118ce565b6001600160a01b031660009081526001602052604090205490565b3480156104a357600080fd5b506102af610ba7565b3480156104b857600080fd5b5061027f6104c73660046118ce565b60036020526000908152604090205460ff1681565b3480156104e857600080fd5b50610214600a5481565b3480156104fe57600080fd5b506012546102d1906001600160a01b031681565b34801561051e57600080fd5b506000546001600160a01b03166102d1565b34801561053c57600080fd5b506011546102d1906001600160a01b031681565b34801561055c57600080fd5b50610252610bdd565b34801561057157600080fd5b5061027f61058036600461198f565b610bec565b34801561059157600080fd5b5061027f6105a03660046118ce565b60046020526000908152604090205460ff1681565b3480156105c157600080fd5b5061027f6105d036600461198f565b610c3b565b3480156105e157600080fd5b506102af6105f03660046118ce565b610c48565b34801561060157600080fd5b506102146106103660046118e9565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561064757600080fd5b506102af610656366004611a6f565b610d71565b34801561066757600080fd5b506102af6106763660046118ce565b610dbd565b60606008805461068a90611c1c565b80601f01602080910402602001604051908101604052809291908181526020018280546106b690611c1c565b80156107035780601f106106d857610100808354040283529160200191610703565b820191906000526020600020905b8154815290600101906020018083116106e657829003601f168201915b5050505050905090565b600061071a338484610e58565b50600192915050565b6000546001600160a01b031633146107565760405162461bcd60e51b815260040161074d90611b14565b60405180910390fd5b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146107ab5760405162461bcd60e51b815260040161074d90611b14565b604051339082156108fc029083906000818181858888f193505050501580156107d8573d6000803e3d6000fd5b5050565b60006107e9848484610f7d565b61083b843361083685604051806060016040528060288152602001611cd7602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611273565b610e58565b5060019392505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161071a918590610836908661129f565b6000546001600160a01b031633146108a55760405162461bcd60e51b815260040161074d90611b14565b60005b828110156109165781600360008686858181106108c7576108c7611cb2565b90506020020160208101906108dc91906118ce565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061090e81611c57565b9150506108a8565b50505050565b6000546001600160a01b031633146109465760405162461bcd60e51b815260040161074d90611b14565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109925760405162461bcd60e51b815260040161074d90611b14565b601254600160a01b900460ff16156109dd5760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481bdc195b995960921b604482015260640161074d565b6012805460ff60a01b1916600160a01b17905560005b81811015610b73576000600a821015610a3457610a11826001611bba565b610a1c906001611be6565b610a2d90662386f26fc10000611be6565b9050610aae565b8160171415610a4c57506706f05b59d3b20000610aae565b610a7d6002858585818110610a6357610a63611cb2565b9050602002016020810190610a7891906118ce565b6112b2565b610a88906001611bba565b610a9990662386f26fc10000611be6565b610aab90670186cc6acd4b0000611bba565b90505b6010546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015610af257600080fd5b505afa158015610b06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2a9190611aa6565b1115610b6057610b6081858585818110610b4657610b46611cb2565b9050602002016020810190610b5b91906118ce565b611310565b5080610b6b81611c57565b9150506109f3565b505050565b6000546001600160a01b03163314610ba25760405162461bcd60e51b815260040161074d90611b14565b600a55565b6000546001600160a01b03163314610bd15760405162461bcd60e51b815260040161074d90611b14565b610bdb60006114b0565b565b60606009805461068a90611c1c565b600061071a338461083685604051806060016040528060258152602001611cff602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190611273565b600061071a338484610f7d565b6000546001600160a01b03163314610c725760405162461bcd60e51b815260040161074d90611b14565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a082319060240160206040518083038186803b158015610cbb57600080fd5b505afa158015610ccf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf39190611aa6565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610d3957600080fd5b505af1158015610d4d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d89190611a52565b6000546001600160a01b03163314610d9b5760405162461bcd60e51b815260040161074d90611b14565b60128054921515600160a81b0260ff60a81b1990931692909217909155601355565b6000546001600160a01b03163314610de75760405162461bcd60e51b815260040161074d90611b14565b6001600160a01b038116610e4c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161074d565b610e55816114b0565b50565b6001600160a01b038316610eba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161074d565b6001600160a01b038216610f1b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161074d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610fe15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161074d565b6000811161104a5760405162461bcd60e51b815260206004820152603060248201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b606482015260840161074d565b60408051606081018252600080825281830181905260208083018590526001600160a01b0386168252600490529182205460ff1680156110f85750836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110be57600080fd5b505afa1580156110d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f69190611aa6565b155b1561114b576012546001600160a01b0386811691161461114b5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185b1b1bddc81a5b9a5d60921b604482015260640161074d565b60145460ff168061117457506001600160a01b03851660009081526003602052604090205460ff165b8061119757506001600160a01b03841660009081526003602052604090205460ff165b156111af576111a885858584611500565b5050505050565b601254600160a01b900460ff166111f45760405162461bcd60e51b81526020600482015260096024820152684e6f7420616c6c6f7760b81b604482015260640161074d565b6001600160a01b03841660009081526004602052604090205460ff168061123357506001600160a01b03851660009081526004602052604090205460ff165b1561123d57600191505b611246846115ca565b156112535761125361162d565b811580158252611267576112678382611793565b6111a885858584611500565b600081848411156112975760405162461bcd60e51b815260040161074d9190611abf565b505050900390565b60006112ab8284611bba565b9392505050565b6000824244846040516020016112ed93929190928352602083019190915260601b6bffffffffffffffffffffffff1916604082015260540190565b6040516020818303038152906040528051906020012060001c6112ab9190611c72565b6014805460ff19166001179055604080516002808252606082018352600092602083019080368337505060105482519293506001600160a01b03169183915060009061135e5761135e611cb2565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061139257611392611cb2565b6001600160a01b0392831660209182029290920101526010546040516370a0823160e01b815230600482015260009291909116906370a082319060240160206040518083038186803b1580156113e757600080fd5b505afa1580156113fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141f9190611aa6565b90508084111561142d578093505b8084116114a057600b54604051635c11d79560e01b81526001600160a01b0390911690635c11d7959061146d908790600090879089904290600401611b49565b600060405180830381600087803b15801561148757600080fd5b505af115801561149b573d6000803e3d6000fd5b505050505b50506014805460ff191690555050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03841660009081526001602052604090205461152390836117cf565b6001600160a01b03808616600090815260016020908152604080832094909455840151918616815291909120546115599161129f565b6001600160a01b03808516600081815260016020908152604091829020949094558484015190519081529092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a380511515600114156109165761091681856117db565b6001600160a01b03811660009081526004602052604081205460ff1680156115f5575060145460ff16155b801561160a5750601254600160a81b900460ff165b801561162757506013543060009081526001602052604090205410155b92915050565b6014805460ff19166001179055601354306000908152600260208181526040808420600b546001600160a01b03168552825280842094909455835182815260608101855292939083019080368337019050509050308160008151811061169557611695611cb2565b6001600160a01b039283166020918202929092010152600d548251911690829060019081106116c6576116c6611cb2565b6001600160a01b039283166020918202929092010152600b5460135460405163791ac94760e01b81524793929092169163791ac9479161171191600090879030904290600401611b49565b600060405180830381600087803b15801561172b57600080fd5b505af115801561173f573d6000803e3d6000fd5b50505050600061175882476117cf90919063ffffffff16565b6011546040519192506001600160a01b03169082156108fc029083906000818181858888f193505050501580156114a0573d6000803e3d6000fd5b60006064600a54846117a59190611be6565b6117af9190611bd2565b6040830181905290506117c283826117cf565b6020909201919091525050565b60006112ab8284611c05565b6040820151156107d8576107d8826040015182306001600160a01b038116600090815260016020526040902054611812908461129f565b6001600160a01b0380831660008181526001602052604090819020939093559151908416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f709087815260200190565b80356001600160a01b038116811461187d57600080fd5b919050565b60008083601f84011261189457600080fd5b50813567ffffffffffffffff8111156118ac57600080fd5b6020830191508360208260051b85010111156118c757600080fd5b9250929050565b6000602082840312156118e057600080fd5b6112ab82611866565b600080604083850312156118fc57600080fd5b61190583611866565b915061191360208401611866565b90509250929050565b60008060006060848603121561193157600080fd5b61193a84611866565b925061194860208501611866565b9150604084013590509250925092565b6000806040838503121561196b57600080fd5b61197483611866565b9150602083013561198481611cc8565b809150509250929050565b600080604083850312156119a257600080fd5b6119ab83611866565b946020939093013593505050565b600080602083850312156119cc57600080fd5b823567ffffffffffffffff8111156119e357600080fd5b6119ef85828601611882565b90969095509350505050565b600080600060408486031215611a1057600080fd5b833567ffffffffffffffff811115611a2757600080fd5b611a3386828701611882565b9094509250506020840135611a4781611cc8565b809150509250925092565b600060208284031215611a6457600080fd5b81516112ab81611cc8565b60008060408385031215611a8257600080fd5b82356119ab81611cc8565b600060208284031215611a9f57600080fd5b5035919050565b600060208284031215611ab857600080fd5b5051919050565b600060208083528351808285015260005b81811015611aec57858101830151858201604001528201611ad0565b81811115611afe576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b995784516001600160a01b031683529383019391830191600101611b74565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611bcd57611bcd611c86565b500190565b600082611be157611be1611c9c565b500490565b6000816000190483118215151615611c0057611c00611c86565b500290565b600082821015611c1757611c17611c86565b500390565b600181811c90821680611c3057607f821691505b60208210811415611c5157634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611c6b57611c6b611c86565b5060010190565b600082611c8157611c81611c9c565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8015158114610e5557600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c2f16a1d41d9ef2f5c2ab7b504d9185892785b0cde0fb575f26fb61952a2faab64736f6c63430008060033
Deployed Bytecode Sourcemap
11027:9809:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12209:44;;;;;;;;;;;;;;;;;;;9551:25:1;;;9539:2;9524:18;12209:44:0;;;;;;;;11446:45;;;;;;;;;;;;;;;;13315:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14146:161::-;;;;;;;;;;-1:-1:-1;14146:161:0;;;;;:::i;:::-;;:::i;:::-;;;4899:14:1;;4892:22;4874:41;;4862:2;4847:18;14146:161:0;4829:92:1;20086:109:0;;;;;;;;;;-1:-1:-1;20086:109:0;;;;;:::i;:::-;;:::i;:::-;;11618:41;;;;;;;;;;-1:-1:-1;11618:41:0;;;;-1:-1:-1;;;;;11618:41:0;;;;;;-1:-1:-1;;;;;4411:32:1;;;4393:51;;4381:2;4366:18;11618:41:0;4348:102:1;13592:95:0;;;;;;;;;;-1:-1:-1;13672:7:0;;13592:95;;20721:110;;;;;;;;;;-1:-1:-1;20721:110:0;;;;;:::i;:::-;;:::i;14315:313::-;;;;;;;;;;-1:-1:-1;14315:313:0;;;;;:::i;:::-;;:::i;13501:83::-;;;;;;;;;;-1:-1:-1;13567:9:0;;13501:83;;13567:9;;;;10714:36:1;;10702:2;10687:18;13501:83:0;10669:87:1;14636:218:0;;;;;;;;;;-1:-1:-1;14636:218:0;;;;;:::i;:::-;;:::i;11702:19::-;;;;;;;;;;-1:-1:-1;11702:19:0;;;;-1:-1:-1;;;;;11702:19:0;;;19859:219;;;;;;;;;;-1:-1:-1;19859:219:0;;;;;:::i;:::-;;:::i;11668:27::-;;;;;;;;;;-1:-1:-1;11668:27:0;;;;-1:-1:-1;;;;;11668:27:0;;;20469:82;;;;;;;;;;-1:-1:-1;20469:82:0;;;;;:::i;:::-;;:::i;19046:616::-;;;;;;;;;;-1:-1:-1;19046:616:0;;;;;:::i;:::-;;:::i;20366:95::-;;;;;;;;;;-1:-1:-1;20366:95:0;;;;;:::i;:::-;;:::i;12172:30::-;;;;;;;;;;-1:-1:-1;12172:30:0;;;;-1:-1:-1;;;12172:30:0;;;;;;13695:117;;;;;;;;;;-1:-1:-1;13695:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;13788:16:0;13761:7;13788:16;;;:7;:16;;;;;;;13695:117;3876:94;;;;;;;;;;;;;:::i;11271:51::-;;;;;;;;;;-1:-1:-1;11271:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11579:30;;;;;;;;;;;;;;;;12059:75;;;;;;;;;;-1:-1:-1;12059:75:0;;;;-1:-1:-1;;;;;12059:75:0;;;3653:87;;;;;;;;;;-1:-1:-1;3699:7:0;3726:6;-1:-1:-1;;;;;3726:6:0;3653:87;;11979:73;;;;;;;;;;-1:-1:-1;11979:73:0;;;;-1:-1:-1;;;;;11979:73:0;;;13406:87;;;;;;;;;;;;;:::i;14862:269::-;;;;;;;;;;-1:-1:-1;14862:269:0;;;;;:::i;:::-;;:::i;11329:40::-;;;;;;;;;;-1:-1:-1;11329:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13820:167;;;;;;;;;;-1:-1:-1;13820:167:0;;;;;:::i;:::-;;:::i;20559:150::-;;;;;;;;;;-1:-1:-1;20559:150:0;;;;;:::i;:::-;;:::i;13995:143::-;;;;;;;;;;-1:-1:-1;13995:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;14103:18:0;;;14076:7;14103:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13995:143;20203:155;;;;;;;;;;-1:-1:-1;20203:155:0;;;;;:::i;:::-;;:::i;3978:192::-;;;;;;;;;;-1:-1:-1;3978:192:0;;;;;:::i;:::-;;:::i;13315:83::-;13352:13;13385:5;13378:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13315:83;:::o;14146:161::-;14221:4;14238:39;3290:10;14261:7;14270:6;14238:8;:39::i;:::-;-1:-1:-1;14295:4:0;14146:161;;;;:::o;20086:109::-;3699:7;3726:6;-1:-1:-1;;;;;3726:6:0;3290:10;3788:23;3780:68;;;;-1:-1:-1;;;3780:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;20163:14:0;;;::::1;;::::0;;;:8:::1;:14;::::0;;;;:24;;-1:-1:-1;;20163:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20086:109::o;20721:110::-;3699:7;3726:6;-1:-1:-1;;;;;3726:6:0;3290:10;3788:23;3780:68;;;;-1:-1:-1;;;3780:68:0;;;;;;;:::i;:::-;20787:36:::1;::::0;20795:10:::1;::::0;20787:36;::::1;;;::::0;20816:6;;20787:36:::1;::::0;;;20816:6;20795:10;20787:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20721:110:::0;:::o;14315:313::-;14413:4;14430:36;14440:6;14448:9;14459:6;14430:9;:36::i;:::-;14477:121;14486:6;3290:10;14508:89;14546:6;14508:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14508:19:0;;;;;;:11;:19;;;;;;;;3290:10;14508:33;;;;;;;;;;:37;:89::i;:::-;14477:8;:121::i;:::-;-1:-1:-1;14616:4:0;14315:313;;;;;:::o;14636:218::-;3290:10;14724:4;14773:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14773:34:0;;;;;;;;;;14724:4;;14741:83;;14764:7;;14773:50;;14812:10;14773:38;:50::i;19859:219::-;3699:7;3726:6;-1:-1:-1;;;;;3726:6:0;3290:10;3788:23;3780:68;;;;-1:-1:-1;;;3780:68:0;;;;;;;:::i;:::-;19968:6:::1;19963:108;19980:16:::0;;::::1;19963:108;;;20049:10;20018:18;:28;20037:5;;20043:1;20037:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20018:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20018:28:0;:41;;-1:-1:-1;;20018:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19998:3;::::1;::::0;::::1;:::i;:::-;;;;19963:108;;;;19859:219:::0;;;:::o;20469:82::-;3699:7;3726:6;-1:-1:-1;;;;;3726:6:0;3290:10;3788:23;3780:68;;;;-1:-1:-1;;;3780:68:0;;;;;;;:::i;:::-;20531:4:::1;:12:::0;;-1:-1:-1;;;;;;20531:12:0::1;-1:-1:-1::0;;;;;20531:12:0;;;::::1;::::0;;;::::1;::::0;;20469:82::o;19046:616::-;3699:7;3726:6;-1:-1:-1;;;;;3726:6:0;3290:10;3788:23;3780:68;;;;-1:-1:-1;;;3780:68:0;;;;;;;:::i;:::-;19137:15:::1;::::0;-1:-1:-1;;;19137:15:0;::::1;;;:24;19129:51;;;::::0;-1:-1:-1;;;19129:51:0;;7773:2:1;19129:51:0::1;::::0;::::1;7755:21:1::0;7812:2;7792:18;;;7785:30;-1:-1:-1;;;7831:18:1;;;7824:44;7885:18;;19129:51:0::1;7745:164:1::0;19129:51:0::1;19191:15;:22:::0;;-1:-1:-1;;;;19191:22:0::1;-1:-1:-1::0;;;19191:22:0::1;::::0;;;19226:429:::1;19239:13:::0;;::::1;19226:429;;;19273:11;19309:2;19305:1;:6;19301:222;;;19339:3;:1:::0;19341::::1;19339:3;:::i;:::-;19338:7;::::0;19344:1:::1;19338:7;:::i;:::-;:14;::::0;19346:6:::1;19338:14;:::i;:::-;19332:20;;19301:222;;;19378:1;19383:2;19378:7;19374:149;;;-1:-1:-1::0;19412:9:0::1;19374:149;;;19469:18;19476:1;19479:4;;19484:1;19479:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;19469:6;:18::i;:::-;:20;::::0;19488:1:::1;19469:20;:::i;:::-;19468:29;::::0;19491:6:::1;19468:29;:::i;:::-;:39;::::0;19498:9:::1;19468:39;:::i;:::-;19462:45;;19374:149;19550:4;::::0;19543:37:::1;::::0;-1:-1:-1;;;19543:37:0;;19574:4:::1;19543:37;::::0;::::1;4393:51:1::0;19583:1:0::1;::::0;-1:-1:-1;;;;;19550:4:0::1;::::0;19543:22:::1;::::0;4366:18:1;;19543:37:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;19539:105;;;19605:23;19615:3;19620:4;;19625:1;19620:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;19605:9;:23::i;:::-;-1:-1:-1::0;19253:3:0;::::1;::::0;::::1;:::i;:::-;;;;19226:429;;;;19046:616:::0;;:::o;20366:95::-;3699:7;3726:6;-1:-1:-1;;;;;3726:6:0;3290:10;3788:23;3780:68;;;;-1:-1:-1;;;3780:68:0;;;;;;;:::i;:::-;20431:10:::1;:22:::0;20366:95::o;3876:94::-;3699:7;3726:6;-1:-1:-1;;;;;3726:6:0;3290:10;3788:23;3780:68;;;;-1:-1:-1;;;3780:68:0;;;;;;;:::i;:::-;3941:21:::1;3959:1;3941:9;:21::i;:::-;3876:94::o:0;13406:87::-;13445:13;13478:7;13471:14;;;;;:::i;14862:269::-;14955:4;14972:129;3290:10;14995:7;15004:96;15043:15;15004:96;;;;;;;;;;;;;;;;;3290:10;15004:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15004:34:0;;;;;;;;;;;;:38;:96::i;13820:167::-;13898:4;13915:42;3290:10;13939:9;13950:6;13915:9;:42::i;20559:150::-;3699:7;3726:6;-1:-1:-1;;;;;3726:6:0;3290:10;3788:23;3780:68;;;;-1:-1:-1;;;3780:68:0;;;;;;;:::i;:::-;20661:39:::1;::::0;-1:-1:-1;;;20661:39:0;;20694:4:::1;20661:39;::::0;::::1;4393:51:1::0;-1:-1:-1;;;;;20625:23:0;::::1;::::0;::::1;::::0;20649:10:::1;::::0;20625:23;;20661:24:::1;::::0;4366:18:1;;20661:39:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20625:76;::::0;-1:-1:-1;;;;;;20625:76:0::1;::::0;;;;;;-1:-1:-1;;;;;4647:32:1;;;20625:76:0::1;::::0;::::1;4629:51:1::0;4696:18;;;4689:34;4602:18;;20625:76:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20203:155::-:0;3699:7;3726:6;-1:-1:-1;;;;;3726:6:0;3290:10;3788:23;3780:68;;;;-1:-1:-1;;;3780:68:0;;;;;;;:::i;:::-;20294:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;20294:22:0::1;-1:-1:-1::0;;;;20294:22:0;;::::1;::::0;;;::::1;::::0;;;20327:13:::1;:23:::0;20203:155::o;3978:192::-;3699:7;3726:6;-1:-1:-1;;;;;3726:6:0;3290:10;3788:23;3780:68;;;;-1:-1:-1;;;3780:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4067:22:0;::::1;4059:73;;;::::0;-1:-1:-1;;;4059:73:0;;6185:2:1;4059:73:0::1;::::0;::::1;6167:21:1::0;6224:2;6204:18;;;6197:30;6263:34;6243:18;;;6236:62;-1:-1:-1;;;6314:18:1;;;6307:36;6360:19;;4059:73:0::1;6157:228:1::0;4059:73:0::1;4143:19;4153:8;4143:9;:19::i;:::-;3978:192:::0;:::o;15139:337::-;-1:-1:-1;;;;;15232:19:0;;15224:68;;;;-1:-1:-1;;;15224:68:0;;8865:2:1;15224:68:0;;;8847:21:1;8904:2;8884:18;;;8877:30;8943:34;8923:18;;;8916:62;-1:-1:-1;;;8994:18:1;;;8987:34;9038:19;;15224:68:0;8837:226:1;15224:68:0;-1:-1:-1;;;;;15311:21:0;;15303:68;;;;-1:-1:-1;;;15303:68:0;;6592:2:1;15303:68:0;;;6574:21:1;6631:2;6611:18;;;6604:30;6670:34;6650:18;;;6643:62;-1:-1:-1;;;6721:18:1;;;6714:32;6763:19;;15303:68:0;6564:224:1;15303:68:0;-1:-1:-1;;;;;15384:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15436:32;;9551:25:1;;;15436:32:0;;9524:18:1;15436:32:0;;;;;;;;15139:337;;;:::o;17628:1003::-;-1:-1:-1;;;;;17750:18:0;;17742:68;;;;-1:-1:-1;;;17742:68:0;;8459:2:1;17742:68:0;;;8441:21:1;8498:2;8478:18;;;8471:30;8537:34;8517:18;;;8510:62;-1:-1:-1;;;8588:18:1;;;8581:35;8633:19;;17742:68:0;8431:227:1;17742:68:0;17838:1;17829:6;:10;17821:71;;;;-1:-1:-1;;;17821:71:0;;6995:2:1;17821:71:0;;;6977:21:1;7034:2;7014:18;;;7007:30;7073:34;7053:18;;;7046:62;-1:-1:-1;;;7124:18:1;;;7117:46;7180:19;;17821:71:0;6967:238:1;17821:71:0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;17957:30:0;;;-1:-1:-1;;;;;18003:12:0;;;;:8;:12;;;;;;;;:45;;;;;18026:2;-1:-1:-1;;;;;18019:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:29;18003:45;18000:125;;;18080:15;;-1:-1:-1;;;;;18072:23:0;;;18080:15;;18072:23;18064:49;;;;-1:-1:-1;;;18064:49:0;;8116:2:1;18064:49:0;;;8098:21:1;8155:2;8135:18;;;8128:30;-1:-1:-1;;;8174:18:1;;;8167:44;8228:18;;18064:49:0;8088:164:1;18064:49:0;18140:6;;;;;:34;;-1:-1:-1;;;;;;18150:24:0;;;;;;:18;:24;;;;;;;;18140:34;:60;;;-1:-1:-1;;;;;;18178:22:0;;;;;;:18;:22;;;;;;;;18140:60;18137:135;;;18223:36;18238:4;18243:2;18246:6;18253:5;18223:14;:36::i;:::-;18216:43;;17628:1003;;;:::o;18137:135::-;18292:15;;-1:-1:-1;;;18292:15:0;;;;18284:36;;;;-1:-1:-1;;;18284:36:0;;9270:2:1;18284:36:0;;;9252:21:1;9309:1;9289:18;;;9282:29;-1:-1:-1;;;9327:18:1;;;9320:39;9376:18;;18284:36:0;9242:158:1;18284:36:0;-1:-1:-1;;;;;18336:12:0;;;;;;:8;:12;;;;;;;;;:30;;-1:-1:-1;;;;;;18352:14:0;;;;;;:8;:14;;;;;;;;18336:30;18333:75;;;18392:4;18382:14;;18333:75;18423:18;18438:2;18423:14;:18::i;:::-;18420:37;;;18444:10;:8;:10::i;:::-;18469:23;;;;;;18503:64;;18531:24;18542:6;18549:5;18531:10;:24::i;:::-;18587:36;18602:4;18607:2;18610:6;18617:5;18587:14;:36::i;2538:206::-;2624:7;2685:12;2677:6;;;;2669:29;;;;-1:-1:-1;;;2669:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2720:5:0;;;2538:206::o;2008:98::-;2066:7;2093:5;2097:1;2093;:5;:::i;:::-;2086:12;2008:98;-1:-1:-1;;;2008:98:0:o;19670:181::-;19734:4;19837:6;19790:15;19807:16;19826:5;19773:59;;;;;;;;;4068:19:1;;;4112:2;4103:12;;4096:28;;;;4162:2;4158:15;-1:-1:-1;;4154:53:1;4149:2;4140:12;;4133:75;4233:2;4224:12;;4058:184;19773:59:0;;;;;;;;;;;;;19763:70;;;;;;19758:76;;:85;;;;:::i;17058:562::-;12300:6;:13;;-1:-1:-1;;12300:13:0;12309:4;12300:13;;;17161:16:::1;::::0;;17175:1:::1;17161:16:::0;;;;;::::1;::::0;;-1:-1:-1;;17161:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;17206:4:0::1;::::0;17188:7;;;;-1:-1:-1;;;;;;17206:4:0::1;::::0;17188:7;;-1:-1:-1;17206:4:0::1;::::0;17188:7:::1;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;17188:23:0::1;;;-1:-1:-1::0;;;;;17188:23:0::1;;;::::0;::::1;17240:4;17222;17227:1;17222:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17222:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;17281:4:::1;::::0;17274:37:::1;::::0;-1:-1:-1;;;17274:37:0;;17305:4:::1;17274:37;::::0;::::1;4393:51:1::0;17256:15:0::1;::::0;17281:4;;;::::1;::::0;17274:22:::1;::::0;4366:18:1;;17274:37:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17256:55;;17339:7;17325:11;:21;17322:46;;;17361:7;17347:21;;17322:46;17397:7;17382:11;:22;17379:233;;17415:15;::::0;:197:::1;::::0;-1:-1:-1;;;17415:197:0;;-1:-1:-1;;;;;17415:15:0;;::::1;::::0;:69:::1;::::0;:197:::1;::::0;17499:11;;17415:15:::1;::::0;17541:4;;17568:2;;17586:15:::1;::::0;17415:197:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17379:233;-1:-1:-1::0;;12318:6:0;:14;;-1:-1:-1;;12318:14:0;;;-1:-1:-1;;17058:562:0:o;4178:173::-;4234:16;4253:6;;-1:-1:-1;;;;;4270:17:0;;;-1:-1:-1;;;;;;4270:17:0;;;;;;4303:40;;4253:6;;;;;;;4303:40;;4234:16;4303:40;4223:128;4178:173;:::o;18639:399::-;-1:-1:-1;;;;;18771:15:0;;;;;;:7;:15;;;;;;:28;;18791:7;18771:19;:28::i;:::-;-1:-1:-1;;;;;18753:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;18854:21;;;18831:18;;;;;;;;;;:45;;:22;:45::i;:::-;-1:-1:-1;;;;;18810:18:0;;;;;;;:7;:18;;;;;;;;;:66;;;;18922:21;;;;18894:50;;9551:25:1;;;18810:18:0;;18894:50;;;;;;9524:18:1;18894:50:0;;;;;;;18960:13;;:21;;18977:4;18960:21;18957:74;;;18997:22;19006:5;19012:6;18997:8;:22::i;16197:204::-;-1:-1:-1;;;;;16281:12:0;;16256:4;16281:12;;;:8;:12;;;;;;;;16280:35;;;;-1:-1:-1;16309:6:0;;;;16308:7;16280:35;:59;;;;-1:-1:-1;16328:11:0;;-1:-1:-1;;;16328:11:0;;;;16280:59;:113;;;;-1:-1:-1;16380:13:0;;16370:4;13761:7;13788:16;;;:7;:16;;;;;;16352:41;;16280:113;16273:120;16197:204;-1:-1:-1;;16197:204:0:o;16409:641::-;12300:6;:13;;-1:-1:-1;;12300:13:0;12309:4;12300:13;;;16513::::1;::::0;16478:4:::1;-1:-1:-1::0;16458:26:0;;;:11:::1;:26;::::0;;;;;;;16493:15:::1;::::0;-1:-1:-1;;;;;16493:15:0::1;16458:52:::0;;;;;;;:68;;;;16571:16;;;;;;;::::1;::::0;;-1:-1:-1;;16571:16:0;;::::1;::::0;16458:26;16571:16:::1;::::0;::::1;;::::0;-1:-1:-1;16571:16:0::1;16547:40;;16616:4;16598;16603:1;16598:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16598:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;16642:4:::1;::::0;16632:7;;16642:4;::::1;::::0;16632;;16642;;16632:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;16632:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;16715:15:::1;::::0;16796:13:::1;::::0;16715:198:::1;::::0;-1:-1:-1;;;16715:198:0;;16681:21:::1;::::0;16715:15;;;::::1;::::0;:66:::1;::::0;:198:::1;::::0;16657:21:::1;::::0;16840:4;;16867::::1;::::0;16887:15:::1;::::0;16715:198:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16926:17;16946:40;16972:13;16946:21;:25;;:40;;;;:::i;:::-;17007:13;::::0;16999:42:::1;::::0;16926:60;;-1:-1:-1;;;;;;17007:13:0::1;::::0;16999:42;::::1;;;::::0;16926:60;;17007:13:::1;16999:42:::0;17007:13;16999:42;16926:60;17007:13;16999:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;15797:213:::0;15879:9;15914:3;15901:10;;15891:7;:20;;;;:::i;:::-;:26;;;;:::i;:::-;15928:15;;;:22;;;15879:38;-1:-1:-1;15985:17:0;:7;15879:38;15985:11;:17::i;:::-;15961:21;;;;:41;;;;-1:-1:-1;;15797:213:0:o;2114:98::-;2172:7;2199:5;2203:1;2199;:5;:::i;16018:171::-;16091:15;;;;:19;16087:95;;16127:43;16133:5;:15;;;16150:4;16164;-1:-1:-1;;;;;15572:11:0;;;;;;:7;:11;;;;;;:23;;15588:6;15572:15;:23::i;:::-;-1:-1:-1;;;;;15558:11:0;;;;;;;:7;:11;;;;;;;:37;;;;15611:26;;;;;;;;;;15630:6;9551:25:1;;9539:2;9524:18;;9506:76;14:173;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:367::-;255:8;265:6;319:3;312:4;304:6;300:17;296:27;286:2;;337:1;334;327:12;286:2;-1:-1:-1;360:20:1;;403:18;392:30;;389:2;;;435:1;432;425:12;389:2;472:4;464:6;460:17;448:29;;532:3;525:4;515:6;512:1;508:14;500:6;496:27;492:38;489:47;486:2;;;549:1;546;539:12;486:2;276:283;;;;;:::o;564:186::-;623:6;676:2;664:9;655:7;651:23;647:32;644:2;;;692:1;689;682:12;644:2;715:29;734:9;715:29;:::i;755:260::-;823:6;831;884:2;872:9;863:7;859:23;855:32;852:2;;;900:1;897;890:12;852:2;923:29;942:9;923:29;:::i;:::-;913:39;;971:38;1005:2;994:9;990:18;971:38;:::i;:::-;961:48;;842:173;;;;;:::o;1020:328::-;1097:6;1105;1113;1166:2;1154:9;1145:7;1141:23;1137:32;1134:2;;;1182:1;1179;1172:12;1134:2;1205:29;1224:9;1205:29;:::i;:::-;1195:39;;1253:38;1287:2;1276:9;1272:18;1253:38;:::i;:::-;1243:48;;1338:2;1327:9;1323:18;1310:32;1300:42;;1124:224;;;;;:::o;1353:315::-;1418:6;1426;1479:2;1467:9;1458:7;1454:23;1450:32;1447:2;;;1495:1;1492;1485:12;1447:2;1518:29;1537:9;1518:29;:::i;:::-;1508:39;;1597:2;1586:9;1582:18;1569:32;1610:28;1632:5;1610:28;:::i;:::-;1657:5;1647:15;;;1437:231;;;;;:::o;1673:254::-;1741:6;1749;1802:2;1790:9;1781:7;1777:23;1773:32;1770:2;;;1818:1;1815;1808:12;1770:2;1841:29;1860:9;1841:29;:::i;:::-;1831:39;1917:2;1902:18;;;;1889:32;;-1:-1:-1;;;1760:167:1:o;1932:437::-;2018:6;2026;2079:2;2067:9;2058:7;2054:23;2050:32;2047:2;;;2095:1;2092;2085:12;2047:2;2135:9;2122:23;2168:18;2160:6;2157:30;2154:2;;;2200:1;2197;2190:12;2154:2;2239:70;2301:7;2292:6;2281:9;2277:22;2239:70;:::i;:::-;2328:8;;2213:96;;-1:-1:-1;2037:332:1;-1:-1:-1;;;;2037:332:1:o;2374:566::-;2466:6;2474;2482;2535:2;2523:9;2514:7;2510:23;2506:32;2503:2;;;2551:1;2548;2541:12;2503:2;2591:9;2578:23;2624:18;2616:6;2613:30;2610:2;;;2656:1;2653;2646:12;2610:2;2695:70;2757:7;2748:6;2737:9;2733:22;2695:70;:::i;:::-;2784:8;;-1:-1:-1;2669:96:1;-1:-1:-1;;2869:2:1;2854:18;;2841:32;2882:28;2841:32;2882:28;:::i;:::-;2929:5;2919:15;;;2493:447;;;;;:::o;2945:245::-;3012:6;3065:2;3053:9;3044:7;3040:23;3036:32;3033:2;;;3081:1;3078;3071:12;3033:2;3113:9;3107:16;3132:28;3154:5;3132:28;:::i;3195:309::-;3260:6;3268;3321:2;3309:9;3300:7;3296:23;3292:32;3289:2;;;3337:1;3334;3327:12;3289:2;3376:9;3363:23;3395:28;3417:5;3395:28;:::i;3509:180::-;3568:6;3621:2;3609:9;3600:7;3596:23;3592:32;3589:2;;;3637:1;3634;3627:12;3589:2;-1:-1:-1;3660:23:1;;3579:110;-1:-1:-1;3579:110:1:o;3694:184::-;3764:6;3817:2;3805:9;3796:7;3792:23;3788:32;3785:2;;;3833:1;3830;3823:12;3785:2;-1:-1:-1;3856:16:1;;3775:103;-1:-1:-1;3775:103:1:o;5381:597::-;5493:4;5522:2;5551;5540:9;5533:21;5583:6;5577:13;5626:6;5621:2;5610:9;5606:18;5599:34;5651:1;5661:140;5675:6;5672:1;5669:13;5661:140;;;5770:14;;;5766:23;;5760:30;5736:17;;;5755:2;5732:26;5725:66;5690:10;;5661:140;;;5819:6;5816:1;5813:13;5810:2;;;5889:1;5884:2;5875:6;5864:9;5860:22;5856:31;5849:42;5810:2;-1:-1:-1;5962:2:1;5941:15;-1:-1:-1;;5937:29:1;5922:45;;;;5969:2;5918:54;;5502:476;-1:-1:-1;;;5502:476:1:o;7210:356::-;7412:2;7394:21;;;7431:18;;;7424:30;7490:34;7485:2;7470:18;;7463:62;7557:2;7542:18;;7384:182::o;9587:980::-;9849:4;9897:3;9886:9;9882:19;9928:6;9917:9;9910:25;9954:2;9992:6;9987:2;9976:9;9972:18;9965:34;10035:3;10030:2;10019:9;10015:18;10008:31;10059:6;10094;10088:13;10125:6;10117;10110:22;10163:3;10152:9;10148:19;10141:26;;10202:2;10194:6;10190:15;10176:29;;10223:1;10233:195;10247:6;10244:1;10241:13;10233:195;;;10312:13;;-1:-1:-1;;;;;10308:39:1;10296:52;;10403:15;;;;10368:12;;;;10344:1;10262:9;10233:195;;;-1:-1:-1;;;;;;;10484:32:1;;;;10479:2;10464:18;;10457:60;-1:-1:-1;;;10548:3:1;10533:19;10526:35;10445:3;9858:709;-1:-1:-1;;;9858:709:1:o;10761:128::-;10801:3;10832:1;10828:6;10825:1;10822:13;10819:2;;;10838:18;;:::i;:::-;-1:-1:-1;10874:9:1;;10809:80::o;10894:120::-;10934:1;10960;10950:2;;10965:18;;:::i;:::-;-1:-1:-1;10999:9:1;;10940:74::o;11019:168::-;11059:7;11125:1;11121;11117:6;11113:14;11110:1;11107:21;11102:1;11095:9;11088:17;11084:45;11081:2;;;11132:18;;:::i;:::-;-1:-1:-1;11172:9:1;;11071:116::o;11192:125::-;11232:4;11260:1;11257;11254:8;11251:2;;;11265:18;;:::i;:::-;-1:-1:-1;11302:9:1;;11241:76::o;11322:380::-;11401:1;11397:12;;;;11444;;;11465:2;;11519:4;11511:6;11507:17;11497:27;;11465:2;11572;11564:6;11561:14;11541:18;11538:38;11535:2;;;11618:10;11613:3;11609:20;11606:1;11599:31;11653:4;11650:1;11643:15;11681:4;11678:1;11671:15;11535:2;;11377:325;;;:::o;11707:135::-;11746:3;-1:-1:-1;;11767:17:1;;11764:2;;;11787:18;;:::i;:::-;-1:-1:-1;11834:1:1;11823:13;;11754:88::o;11847:112::-;11879:1;11905;11895:2;;11910:18;;:::i;:::-;-1:-1:-1;11944:9:1;;11885:74::o;11964:127::-;12025:10;12020:3;12016:20;12013:1;12006:31;12056:4;12053:1;12046:15;12080:4;12077:1;12070:15;12096:127;12157:10;12152:3;12148:20;12145:1;12138:31;12188:4;12185:1;12178:15;12212:4;12209:1;12202:15;12228:127;12289:10;12284:3;12280:20;12277:1;12270:31;12320:4;12317:1;12310:15;12344:4;12341:1;12334:15;12492:118;12578:5;12571:13;12564:21;12557:5;12554:32;12544:2;;12600:1;12597;12590:12
Swarm Source
ipfs://c2f16a1d41d9ef2f5c2ab7b504d9185892785b0cde0fb575f26fb61952a2faab
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.