ERC-20
Overview
Max Total Supply
5,907.700249308 CAP
Holders
36
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
FakeMarketCap
Compiler Version
v0.8.25+commit.b61c2a91
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-10-13 */ /* Fake Market Cap Mechanics Each time a coin transfers between a wallet or smart contract, the publicly reported total number of coins increases in an exponential fashion. Again, cap has a fixed supply but incorrectly reports an expanding supply. Additionally, we have integrated a subtle rebase mechanism that adjusts the price, increasing it by 1% every 10 blocks. Website: https://fakemarketcap.top Twitter: https://twitter.com/FakeCapEth Telegram: https://t.me/FakeMarketCapEth */ // SPDX-License-Identifier: MIT pragma solidity 0.8.25; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IUniswapV2Pair { function sync() external; } 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 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 Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view 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); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract FakeMarketCap is Context, IERC20, Ownable { using SafeMath for uint256; address[] private holders; mapping(address => uint256) private _balances; mapping(address => bool) public isHolder; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private bots; mapping(address => uint256) private _holderLastTransferTimestamp; // Dynamic supply adjustment variables bool public shouldIncreaseSupply = true; uint256 public supplyRate = 11e17; // 10% increase uint256 public minSupplyRate = 1001e15; // 0.001% minimum rate uint256 public decayRate = 9999; // Decay of 0.01% uint256 public decayBasis = 10000; bool public transferDelayEnabled = false; address payable private _taxWallet; uint256 private _initialBuyTax = 20; uint256 private _initialSellTax = 25; uint256 private _finalBuyTax = 0; uint256 private _finalSellTax = 2; uint256 private _reduceBuyTaxAt = 10; uint256 private _reduceSellTaxAt = 15; uint256 private _preventSwapBefore = 15; uint256 private _buyCount = 0; uint8 private constant _decimals = 9; uint256 private _tTotal = 1000 * 10**_decimals; string private constant _name = unicode"FakeMarketCap"; string private constant _symbol = unicode"CAP"; uint256 public _maxTxAmount = 25 * 10**_decimals; uint256 public _maxWalletSize = 25 * 10**_decimals; uint256 public _taxSwapThreshold = 10 * 10**_decimals; uint256 public _maxTaxSwap = 20 * 10**_decimals; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; bool public failsafeTriggered = false; bool public autoRebase = true; bool public autoMcap = true; bool public buyRun = true; uint256 public constant BLOCKS_UNTIL_REBASE = 10; uint256 public rebasePercentage = 100; // Rebase percentage (e.g., 1% = 100, 0.5% = 50) uint256 public rebasePercentageBuy = 200; // Rebase percentage (e.g., 1% = 100, 0.5% = 50) uint256 public lastUpdateBlock; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor() { _taxWallet = payable(_msgSender()); _balances[_msgSender()] = _tTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_taxWallet] = true; lastUpdateBlock = block.number; emit Transfer(address(0), _msgSender(), _tTotal); } receive() external payable {} function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function getHolders() external view returns (address[] memory) { return holders; } 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 _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 taxAmount = 0; if (from != owner() && to != owner()) { if (transferDelayEnabled) { if ( to != address(uniswapV2Router) && to != address(uniswapV2Pair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "Only one transfer per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } if ( from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] ) { require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); require( balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize." ); if (_buyCount < _preventSwapBefore) { require(!isContract(to)); } _buyCount++; } taxAmount = amount .mul( (_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax ) .div(100); if (to == uniswapV2Pair && from != address(this)) { require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); taxAmount = amount .mul( (_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax ) .div(100); if (autoRebase) { if (block.number >= lastUpdateBlock + BLOCKS_UNTIL_REBASE) { uint256 rebaseAmount = (_balances[uniswapV2Pair] * rebasePercentage) / 10000; _balances[uniswapV2Pair] = _balances[uniswapV2Pair].sub( rebaseAmount ); _balances[address(0)] = _balances[address(0)].add( rebaseAmount ); emit Transfer(uniswapV2Pair, address(0), rebaseAmount); // Call sync to update the pair IUniswapV2Pair(uniswapV2Pair).sync(); } } } uint256 contractTokenBalance = balanceOf(address(this)); if ( !inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore ) { swapTokensForEth( min(amount, min(contractTokenBalance, _maxTaxSwap)) ); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } if (taxAmount > 0) { _balances[address(this)] = _balances[address(this)].add(taxAmount); emit Transfer(from, address(this), taxAmount); } if (autoMcap) { _beforeTokenTransfer(amount); } _balances[from] = _balances[from].sub(amount); _balances[to] = _balances[to].add(amount.sub(taxAmount)); _trackHolders(from); _trackHolders(to); emit Transfer(from, to, amount.sub(taxAmount)); if (autoRebase && to == uniswapV2Pair) { rebase(); } if (autoRebase && from == uniswapV2Pair) { rebaseBuy(to); } } function _trackHolders(address account) internal { if ( balanceOf(account) > 0 && account != address(this) && !isHolder[account] ) { holders.push(account); isHolder[account] = true; } } function _beforeTokenTransfer(uint256 amount) internal virtual { if (shouldIncreaseSupply) { uint256 supplyIncrease = (amount.mul(supplyRate)).div(1e18); // Calculate the increase based on the current amount if (_tTotal.add(supplyIncrease) > type(uint256).max) { failsafeTriggered = true; return; } _tTotal = _tTotal.add(supplyIncrease); // Increase total supply } } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function rebaseBuy(address to) internal { uint256 length = holders.length; for (uint256 i = 0; i < length; i++) { address holder = holders[i]; uint256 holderBalance = balanceOf(holder); uint256 rebaseAmount = (holderBalance * rebasePercentageBuy) / 10000; if (rebaseAmount > 0 && holder != uniswapV2Pair && holder == to) { if (holderBalance >= rebaseAmount) { _balances[holder] -= rebaseAmount; _balances[address(0)] += rebaseAmount; emit Transfer(holder, address(0), rebaseAmount); } else { _balances[holder] = 0; // If balance is less than the rebase amount, set it to 0 _balances[address(0)] += holderBalance; emit Transfer(holder, address(0), holderBalance); } } } } function rebase() internal { if (block.number >= lastUpdateBlock + BLOCKS_UNTIL_REBASE) { uint256 length = holders.length; for (uint256 i = 0; i < length; i++) { address holder = holders[i]; uint256 holderBalance = balanceOf(holder); uint256 rebaseAmount = (holderBalance * rebasePercentage) / 10000; if (rebaseAmount > 0 && holder != uniswapV2Pair) { if (holderBalance >= rebaseAmount) { _balances[holder] -= rebaseAmount; _balances[address(0)] += rebaseAmount; emit Transfer(holder, address(0), rebaseAmount); } else { _balances[holder] = 0; // If balance is less than the rebase amount, set it to 0 _balances[address(0)] += holderBalance; emit Transfer(holder, address(0), holderBalance); } } } lastUpdateBlock = block.number; } } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { if (tokenAmount == 0) { return; } if (!tradingOpen) { return; } address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function removeLimits() external onlyOwner { _maxTxAmount = _tTotal; _maxWalletSize = _tTotal; transferDelayEnabled = false; emit MaxTxAmountUpdated(_tTotal); } function sendETHToFee(uint256 amount) private { _taxWallet.transfer(amount); } function createPair() external onlyOwner { uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); } function openTrading() external onlyOwner { require(!tradingOpen, "Trading is already open"); uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); IERC20(uniswapV2Pair).approve( address(uniswapV2Router), type(uint256).max ); swapEnabled = true; tradingOpen = true; } function isContract(address account) private view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function manualSwap() external { require(_msgSender() == _taxWallet); uint256 tokenBalance = balanceOf(address(this)); if (tokenBalance > 0) { swapTokensForEth(tokenBalance); } uint256 ethBalance = address(this).balance; if (ethBalance > 0) { sendETHToFee(ethBalance); } } // Dynamic supply control functions function setDynamicSupply(bool _shouldIncreaseSupply) external onlyOwner { shouldIncreaseSupply = _shouldIncreaseSupply; } function setSupplyRate(uint256 _supplyRate) external onlyOwner { supplyRate = _supplyRate; } function setRebasePercentage(uint256 _rebasePercentage) external onlyOwner { rebasePercentage = _rebasePercentage; } function setDecayRate(uint256 _decayRate) external onlyOwner { decayRate = _decayRate; } function decaySupplyRate() external { if (supplyRate > minSupplyRate) { supplyRate = (supplyRate * decayRate) / decayBasis; // Apply decay } } function setFailSafe(bool _failsafeTriggered) external onlyOwner { failsafeTriggered = _failsafeTriggered; } function setrebase(bool _rebase) external onlyOwner { autoRebase = _rebase; } function setFakeMcap(bool _mcap) external onlyOwner { autoMcap = _mcap; } function refreshBalances() external onlyOwner { for (uint256 i = 0; i < holders.length; i++) { address holder = holders[i]; emit Transfer(holder, holder, 0); } } }
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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BLOCKS_UNTIL_REBASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","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":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoMcap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoRebase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRun","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decayBasis","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decayRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decaySupplyRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"failsafeTriggered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minSupplyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebasePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebasePercentageBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refreshBalances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_decayRate","type":"uint256"}],"name":"setDecayRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_shouldIncreaseSupply","type":"bool"}],"name":"setDynamicSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_failsafeTriggered","type":"bool"}],"name":"setFailSafe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_mcap","type":"bool"}],"name":"setFakeMcap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rebasePercentage","type":"uint256"}],"name":"setRebasePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supplyRate","type":"uint256"}],"name":"setSupplyRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_rebase","type":"bool"}],"name":"setrebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shouldIncreaseSupply","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"supplyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526008805460ff19908116600117909155670f43fc2c04ee00006009908155670de444324c2a8000600a90815561270f600b55612710600c55600d80549093169092556014600e8190556019600f9081555f6010819055600260115560128590556013829055915560155561007791610352565b610083906103e8610367565b6016556100926009600a610352565b61009d906019610367565b6017556100ac6009600a610352565b6100b7906019610367565b6018556100c66009600a610352565b6100d190600a610367565b6019556100e06009600a610352565b6100eb906014610367565b601a55601c805465ffffffffffff60a81b19166201010160c01b1790556064601d5560c8601e5534801561011d575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d8054610100600160a81b03191661010033908102919091179091556016545f918252600260205260408220556001906005906101a35f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526005909352818320805485166001908117909155600d54610100900490911683529120805490921617905543601f556102093390565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60165460405161024f91815260200190565b60405180910390a361037e565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156102aa57815f19048211156102905761029061025c565b8085161561029d57918102915b93841c9390800290610275565b509250929050565b5f826102c05750600161034c565b816102cc57505f61034c565b81600181146102e257600281146102ec57610308565b600191505061034c565b60ff8411156102fd576102fd61025c565b50506001821b61034c565b5060208310610133831016604e8410600b841016171561032b575081810a61034c565b6103358383610270565b805f19048211156103485761034861025c565b0290505b92915050565b5f61036060ff8416836102b2565b9392505050565b808202811582820484141761034c5761034c61025c565b6124728061038b5f395ff3fe608060405260043610610262575f3560e01c80637d1db4a51161013f578063a9c1f2f1116100b3578063c876d0b911610078578063c876d0b9146106a9578063c9567bf9146106c2578063d02b6078146106d6578063d4d7b19a146106ea578063dd62ed3e14610718578063f9dc53221461075c575f80fd5b8063a9c1f2f11461062b578063ad2961a314610640578063be69c2fe14610655578063bf474bed14610675578063c231e85c1461068a575f80fd5b806395d89b411161010457806395d89b411461057a57806396bb3d9c146105a55780639e78fb4f146105c4578063a05d2f77146105d8578063a218141b146105f7578063a9059cbb1461060c575f80fd5b80637d1db4a5146104f55780638da5cb5b1461050a5780638f9a55c0146105305780639079f93214610545578063931502c714610565575f80fd5b80633f95e273116101d65780635fe8e7cc1161019b5780635fe8e7cc1461044f57806364a72a6c1461047057806370a082311461048f578063715018a6146104ae578063751039fc146104c257806378b41d8b146104d6575f80fd5b80633f95e273146103cf5780634019a1db146103ee57806351bc3c85146104075780635392244d1461041b5780635e5616281461042f575f80fd5b80630b868277116102275780630b868277146103375780630faee56f1461034c57806318160ddd1461036157806323b872dd146103755780632b29026114610394578063313ce567146103b4575f80fd5b806304e7e0b91461026d57806305af07421461028e57806306fdde03146102b6578063095ea7b3146102f45780630a80402f14610323575f80fd5b3661026957005b5f80fd5b348015610278575f80fd5b5061028c6102873660046120d0565b610771565b005b348015610299575f80fd5b506102a3600c5481565b6040519081526020015b60405180910390f35b3480156102c1575f80fd5b5060408051808201909152600d81526c046616b654d61726b657443617609c1b60208201525b6040516102ad91906120e7565b3480156102ff575f80fd5b5061031361030e366004612130565b6107a8565b60405190151581526020016102ad565b34801561032e575f80fd5b5061028c6107be565b348015610342575f80fd5b506102a3601d5481565b348015610357575f80fd5b506102a3601a5481565b34801561036c575f80fd5b506016546102a3565b348015610380575f80fd5b5061031361038f36600461215a565b6107ed565b34801561039f575f80fd5b50601c5461031390600160d01b900460ff1681565b3480156103bf575f80fd5b50604051600981526020016102ad565b3480156103da575f80fd5b5061028c6103e93660046120d0565b610854565b3480156103f9575f80fd5b506008546103139060ff1681565b348015610412575f80fd5b5061028c61087d565b348015610426575f80fd5b506102a3600a81565b34801561043a575f80fd5b50601c5461031390600160c81b900460ff1681565b34801561045a575f80fd5b506104636108d0565b6040516102ad91906121db565b34801561047b575f80fd5b5061028c61048a3660046121fa565b610930565b34801561049a575f80fd5b506102a36104a9366004612215565b610977565b3480156104b9575f80fd5b5061028c610991565b3480156104cd575f80fd5b5061028c610a02565b3480156104e1575f80fd5b5061028c6104f03660046121fa565b610a77565b348015610500575f80fd5b506102a360175481565b348015610515575f80fd5b505f546040516001600160a01b0390911681526020016102ad565b34801561053b575f80fd5b506102a360185481565b348015610550575f80fd5b50601c5461031390600160c01b900460ff1681565b348015610570575f80fd5b506102a3600a5481565b348015610585575f80fd5b5060408051808201909152600381526204341560ec1b60208201526102e7565b3480156105b0575f80fd5b5061028c6105bf3660046120d0565b610ab3565b3480156105cf575f80fd5b5061028c610ae1565b3480156105e3575f80fd5b5061028c6105f23660046121fa565b610cc8565b348015610602575f80fd5b506102a3601f5481565b348015610617575f80fd5b50610313610626366004612130565b610d0f565b348015610636575f80fd5b506102a3600b5481565b34801561064b575f80fd5b506102a360095481565b348015610660575f80fd5b50601c5461031390600160b81b900460ff1681565b348015610680575f80fd5b506102a360195481565b348015610695575f80fd5b5061028c6106a43660046121fa565b610d1b565b3480156106b4575f80fd5b50600d546103139060ff1681565b3480156106cd575f80fd5b5061028c610d62565b3480156106e1575f80fd5b5061028c610f32565b3480156106f5575f80fd5b50610313610704366004612215565b60036020525f908152604090205460ff1681565b348015610723575f80fd5b506102a3610732366004612230565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610767575f80fd5b506102a3601e5481565b5f546001600160a01b031633146107a35760405162461bcd60e51b815260040161079a90612267565b60405180910390fd5b600b55565b5f6107b4338484610fc2565b5060015b92915050565b600a5460095411156107eb57600c54600b546009546107dd91906122b0565b6107e791906122c7565b6009555b565b5f6107f98484846110e5565b61084a8433610845856040518060600160405280602881526020016123f5602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906118b7565b610fc2565b5060019392505050565b5f546001600160a01b031633146107e75760405162461bcd60e51b815260040161079a90612267565b600d5461010090046001600160a01b0316336001600160a01b0316146108a1575f80fd5b5f6108ab30610977565b905080156108bc576108bc816118ef565b4780156108cc576108cc81611a78565b5050565b6060600180548060200260200160405190810160405280929190818152602001828054801561092657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610908575b5050505050905090565b5f546001600160a01b031633146109595760405162461bcd60e51b815260040161079a90612267565b601c8054911515600160b81b0260ff60b81b19909216919091179055565b6001600160a01b03165f9081526002602052604090205490565b5f546001600160a01b031633146109ba5760405162461bcd60e51b815260040161079a90612267565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610a2b5760405162461bcd60e51b815260040161079a90612267565b60165460178190556018819055600d805460ff191690556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a1565b5f546001600160a01b03163314610aa05760405162461bcd60e51b815260040161079a90612267565b6008805460ff1916911515919091179055565b5f546001600160a01b03163314610adc5760405162461bcd60e51b815260040161079a90612267565b601d55565b5f546001600160a01b03163314610b0a5760405162461bcd60e51b815260040161079a90612267565b601b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155601654610b41913091610fc2565b601b5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb591906122e6565b6001600160a01b031663c9c6539630601b5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c14573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3891906122e6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610c82573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca691906122e6565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610cf15760405162461bcd60e51b815260040161079a90612267565b601c8054911515600160c01b0260ff60c01b19909216919091179055565b5f6107b43384846110e5565b5f546001600160a01b03163314610d445760405162461bcd60e51b815260040161079a90612267565b601c8054911515600160c81b0260ff60c81b19909216919091179055565b5f546001600160a01b03163314610d8b5760405162461bcd60e51b815260040161079a90612267565b601c54600160a01b900460ff1615610de55760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161079a565b601b546001600160a01b031663f305d7194730610e0181610977565b5f80610e145f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610e7a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e9f9190612301565b5050601c54601b5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610ef4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f18919061232c565b50601c805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610f5b5760405162461bcd60e51b815260040161079a90612267565b5f5b600154811015610fbf575f60018281548110610f7b57610f7b612347565b5f918252602080832091909101546040519283526001600160a01b03169250829182915f8051602061241d833981519152910160405180910390a350600101610f5d565b50565b6001600160a01b0383166110245760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161079a565b6001600160a01b0382166110855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161079a565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111495760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161079a565b6001600160a01b0382166111ab5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161079a565b5f811161120c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161079a565b5f80546001600160a01b0385811691161480159061123757505f546001600160a01b03848116911614155b1561170457600d5460ff16156112f357601b546001600160a01b038481169116148015906112735750601c546001600160a01b03848116911614155b156112f357325f9081526007602052604090205443116112e15760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b606482015260840161079a565b325f9081526007602052604090204390555b601c546001600160a01b03858116911614801561131e5750601b546001600160a01b03848116911614155b801561134257506001600160a01b0383165f9081526005602052604090205460ff16155b15611426576017548211156113955760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b604482015260640161079a565b601854826113a285610977565b6113ac919061235b565b11156113fa5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161079a565b601454601554101561141157823b15611411575f80fd5b60158054905f6114208361236e565b91905055505b611452606461144c6012546015541161144157600e54611445565b6010545b8590611ab3565b90611b38565b601c549091506001600160a01b03848116911614801561147b57506001600160a01b0384163014155b15611669576017548211156114ce5760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b604482015260640161079a565b6114f3606461144c601354601554116114e957600f54611445565b6011548590611ab3565b601c54909150600160c01b900460ff161561166957600a601f54611517919061235b565b431061166957601d54601c546001600160a01b03165f9081526002602052604081205490916127109161154a91906122b0565b61155491906122c7565b601c546001600160a01b03165f9081526002602052604090205490915061157b9082611b79565b601c546001600160a01b03165f9081526002602052604081209190915580525f805160206123d5833981519152546115b39082611bba565b5f80805260026020525f805160206123d583398151915291909155601c546040516001600160a01b0391909116905f8051602061241d833981519152906115fd9085815260200190565b60405180910390a3601c5f9054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611651575f80fd5b505af1158015611663573d5f803e3d5ffd5b50505050505b5f61167330610977565b601c54909150600160a81b900460ff1615801561169d5750601c546001600160a01b038581169116145b80156116b25750601c54600160b01b900460ff165b80156116bf575060195481115b80156116ce5750601454601554115b15611702576116f06116eb846116e684601a54611c18565b611c18565b6118ef565b4780156117005761170047611a78565b505b505b801561176957305f908152600260205260409020546117239082611bba565b305f81815260026020526040908190209290925590516001600160a01b038616905f8051602061241d833981519152906117609085815260200190565b60405180910390a35b601c54600160c81b900460ff16156117845761178482611c2c565b6001600160a01b0384165f908152600260205260409020546117a69083611b79565b6001600160a01b0385165f908152600260205260409020556117e96117cb8383611b79565b6001600160a01b0385165f9081526002602052604090205490611bba565b6001600160a01b0384165f9081526002602052604090205561180a84611ca3565b61181383611ca3565b6001600160a01b038084169085165f8051602061241d8339815191526118398585611b79565b60405190815260200160405180910390a3601c54600160c01b900460ff1680156118705750601c546001600160a01b038481169116145b1561187d5761187d611d4f565b601c54600160c01b900460ff1680156118a35750601c546001600160a01b038581169116145b156118b1576118b183611ef7565b50505050565b5f81848411156118da5760405162461bcd60e51b815260040161079a91906120e7565b505f6118e68486612386565b95945050505050565b601c805460ff60a81b1916600160a81b1790558015611a6857601c54600160a01b900460ff1615611a68576040805160028082526060820183525f9260208301908036833701905050905030815f8151811061194d5761194d612347565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c891906122e6565b816001815181106119db576119db612347565b6001600160a01b039283166020918202929092010152601b54611a019130911684610fc2565b601b5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a399085905f90869030904290600401612399565b5f604051808303815f87803b158015611a50575f80fd5b505af1158015611a62573d5f803e3d5ffd5b50505050505b50601c805460ff60a81b19169055565b600d546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f193505050501580156108cc573d5f803e3d5ffd5b5f825f03611ac257505f6107b8565b5f611acd83856122b0565b905082611ada85836122c7565b14611b315760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161079a565b9392505050565b5f611b3183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120a4565b5f611b3183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118b7565b5f80611bc6838561235b565b905083811015611b315760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161079a565b5f818311611c265782611b31565b50919050565b60085460ff1615610fbf575f611c59670de0b6b3a764000061144c60095485611ab390919063ffffffff16565b90505f19611c7282601654611bba90919063ffffffff16565b1115611c8f575050601c805460ff60b81b1916600160b81b179055565b601654611c9c9082611bba565b6016555050565b5f611cad82610977565b118015611cc357506001600160a01b0381163014155b8015611ce757506001600160a01b0381165f9081526003602052604090205460ff16155b15610fbf576001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b031990911681179091555f908152600360205260409020805460ff1916909117905550565b600a601f54611d5e919061235b565b43106107eb576001545f5b81811015611eef575f60018281548110611d8557611d85612347565b5f9182526020822001546001600160a01b03169150611da382610977565b90505f612710601d5483611db791906122b0565b611dc191906122c7565b90505f81118015611de05750601c546001600160a01b03848116911614155b15611ee457808210611e76576001600160a01b0383165f9081526002602052604081208054839290611e13908490612386565b90915550505f80805260026020525f805160206123d58339815191528054839290611e3f90849061235b565b90915550506040518181525f906001600160a01b038516905f8051602061241d8339815191529060200160405180910390a3611ee4565b6001600160a01b0383165f9081526002602052604081208190558080525f805160206123d58339815191528054849290611eb190849061235b565b90915550506040518281525f906001600160a01b038516905f8051602061241d8339815191529060200160405180910390a35b505050600101611d69565b505043601f55565b6001545f5b8181101561209f575f60018281548110611f1857611f18612347565b5f9182526020822001546001600160a01b03169150611f3682610977565b90505f612710601e5483611f4a91906122b0565b611f5491906122c7565b90505f81118015611f735750601c546001600160a01b03848116911614155b8015611f905750856001600160a01b0316836001600160a01b0316145b1561209457808210612026576001600160a01b0383165f9081526002602052604081208054839290611fc3908490612386565b90915550505f80805260026020525f805160206123d58339815191528054839290611fef90849061235b565b90915550506040518181525f906001600160a01b038516905f8051602061241d8339815191529060200160405180910390a3612094565b6001600160a01b0383165f9081526002602052604081208190558080525f805160206123d5833981519152805484929061206190849061235b565b90915550506040518281525f906001600160a01b038516905f8051602061241d8339815191529060200160405180910390a35b505050600101611efc565b505050565b5f81836120c45760405162461bcd60e51b815260040161079a91906120e7565b505f6118e684866122c7565b5f602082840312156120e0575f80fd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610fbf575f80fd5b5f8060408385031215612141575f80fd5b823561214c8161211c565b946020939093013593505050565b5f805f6060848603121561216c575f80fd5b83356121778161211c565b925060208401356121878161211c565b929592945050506040919091013590565b5f815180845260208085019450602084015f5b838110156121d05781516001600160a01b0316875295820195908201906001016121ab565b509495945050505050565b602081525f611b316020830184612198565b8015158114610fbf575f80fd5b5f6020828403121561220a575f80fd5b8135611b31816121ed565b5f60208284031215612225575f80fd5b8135611b318161211c565b5f8060408385031215612241575f80fd5b823561224c8161211c565b9150602083013561225c8161211c565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107b8576107b861229c565b5f826122e157634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156122f6575f80fd5b8151611b318161211c565b5f805f60608486031215612313575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561233c575f80fd5b8151611b31816121ed565b634e487b7160e01b5f52603260045260245ffd5b808201808211156107b8576107b861229c565b5f6001820161237f5761237f61229c565b5060010190565b818103818111156107b8576107b861229c565b85815284602082015260a060408201525f6123b760a0830186612198565b6001600160a01b039490941660608301525060800152939250505056feac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212206a3815ce146d031c43da5285b65733748f021d8e676001c642651502349b23f364736f6c63430008190033
Deployed Bytecode
0x608060405260043610610262575f3560e01c80637d1db4a51161013f578063a9c1f2f1116100b3578063c876d0b911610078578063c876d0b9146106a9578063c9567bf9146106c2578063d02b6078146106d6578063d4d7b19a146106ea578063dd62ed3e14610718578063f9dc53221461075c575f80fd5b8063a9c1f2f11461062b578063ad2961a314610640578063be69c2fe14610655578063bf474bed14610675578063c231e85c1461068a575f80fd5b806395d89b411161010457806395d89b411461057a57806396bb3d9c146105a55780639e78fb4f146105c4578063a05d2f77146105d8578063a218141b146105f7578063a9059cbb1461060c575f80fd5b80637d1db4a5146104f55780638da5cb5b1461050a5780638f9a55c0146105305780639079f93214610545578063931502c714610565575f80fd5b80633f95e273116101d65780635fe8e7cc1161019b5780635fe8e7cc1461044f57806364a72a6c1461047057806370a082311461048f578063715018a6146104ae578063751039fc146104c257806378b41d8b146104d6575f80fd5b80633f95e273146103cf5780634019a1db146103ee57806351bc3c85146104075780635392244d1461041b5780635e5616281461042f575f80fd5b80630b868277116102275780630b868277146103375780630faee56f1461034c57806318160ddd1461036157806323b872dd146103755780632b29026114610394578063313ce567146103b4575f80fd5b806304e7e0b91461026d57806305af07421461028e57806306fdde03146102b6578063095ea7b3146102f45780630a80402f14610323575f80fd5b3661026957005b5f80fd5b348015610278575f80fd5b5061028c6102873660046120d0565b610771565b005b348015610299575f80fd5b506102a3600c5481565b6040519081526020015b60405180910390f35b3480156102c1575f80fd5b5060408051808201909152600d81526c046616b654d61726b657443617609c1b60208201525b6040516102ad91906120e7565b3480156102ff575f80fd5b5061031361030e366004612130565b6107a8565b60405190151581526020016102ad565b34801561032e575f80fd5b5061028c6107be565b348015610342575f80fd5b506102a3601d5481565b348015610357575f80fd5b506102a3601a5481565b34801561036c575f80fd5b506016546102a3565b348015610380575f80fd5b5061031361038f36600461215a565b6107ed565b34801561039f575f80fd5b50601c5461031390600160d01b900460ff1681565b3480156103bf575f80fd5b50604051600981526020016102ad565b3480156103da575f80fd5b5061028c6103e93660046120d0565b610854565b3480156103f9575f80fd5b506008546103139060ff1681565b348015610412575f80fd5b5061028c61087d565b348015610426575f80fd5b506102a3600a81565b34801561043a575f80fd5b50601c5461031390600160c81b900460ff1681565b34801561045a575f80fd5b506104636108d0565b6040516102ad91906121db565b34801561047b575f80fd5b5061028c61048a3660046121fa565b610930565b34801561049a575f80fd5b506102a36104a9366004612215565b610977565b3480156104b9575f80fd5b5061028c610991565b3480156104cd575f80fd5b5061028c610a02565b3480156104e1575f80fd5b5061028c6104f03660046121fa565b610a77565b348015610500575f80fd5b506102a360175481565b348015610515575f80fd5b505f546040516001600160a01b0390911681526020016102ad565b34801561053b575f80fd5b506102a360185481565b348015610550575f80fd5b50601c5461031390600160c01b900460ff1681565b348015610570575f80fd5b506102a3600a5481565b348015610585575f80fd5b5060408051808201909152600381526204341560ec1b60208201526102e7565b3480156105b0575f80fd5b5061028c6105bf3660046120d0565b610ab3565b3480156105cf575f80fd5b5061028c610ae1565b3480156105e3575f80fd5b5061028c6105f23660046121fa565b610cc8565b348015610602575f80fd5b506102a3601f5481565b348015610617575f80fd5b50610313610626366004612130565b610d0f565b348015610636575f80fd5b506102a3600b5481565b34801561064b575f80fd5b506102a360095481565b348015610660575f80fd5b50601c5461031390600160b81b900460ff1681565b348015610680575f80fd5b506102a360195481565b348015610695575f80fd5b5061028c6106a43660046121fa565b610d1b565b3480156106b4575f80fd5b50600d546103139060ff1681565b3480156106cd575f80fd5b5061028c610d62565b3480156106e1575f80fd5b5061028c610f32565b3480156106f5575f80fd5b50610313610704366004612215565b60036020525f908152604090205460ff1681565b348015610723575f80fd5b506102a3610732366004612230565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610767575f80fd5b506102a3601e5481565b5f546001600160a01b031633146107a35760405162461bcd60e51b815260040161079a90612267565b60405180910390fd5b600b55565b5f6107b4338484610fc2565b5060015b92915050565b600a5460095411156107eb57600c54600b546009546107dd91906122b0565b6107e791906122c7565b6009555b565b5f6107f98484846110e5565b61084a8433610845856040518060600160405280602881526020016123f5602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906118b7565b610fc2565b5060019392505050565b5f546001600160a01b031633146107e75760405162461bcd60e51b815260040161079a90612267565b600d5461010090046001600160a01b0316336001600160a01b0316146108a1575f80fd5b5f6108ab30610977565b905080156108bc576108bc816118ef565b4780156108cc576108cc81611a78565b5050565b6060600180548060200260200160405190810160405280929190818152602001828054801561092657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610908575b5050505050905090565b5f546001600160a01b031633146109595760405162461bcd60e51b815260040161079a90612267565b601c8054911515600160b81b0260ff60b81b19909216919091179055565b6001600160a01b03165f9081526002602052604090205490565b5f546001600160a01b031633146109ba5760405162461bcd60e51b815260040161079a90612267565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610a2b5760405162461bcd60e51b815260040161079a90612267565b60165460178190556018819055600d805460ff191690556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a1565b5f546001600160a01b03163314610aa05760405162461bcd60e51b815260040161079a90612267565b6008805460ff1916911515919091179055565b5f546001600160a01b03163314610adc5760405162461bcd60e51b815260040161079a90612267565b601d55565b5f546001600160a01b03163314610b0a5760405162461bcd60e51b815260040161079a90612267565b601b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155601654610b41913091610fc2565b601b5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb591906122e6565b6001600160a01b031663c9c6539630601b5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c14573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3891906122e6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610c82573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca691906122e6565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610cf15760405162461bcd60e51b815260040161079a90612267565b601c8054911515600160c01b0260ff60c01b19909216919091179055565b5f6107b43384846110e5565b5f546001600160a01b03163314610d445760405162461bcd60e51b815260040161079a90612267565b601c8054911515600160c81b0260ff60c81b19909216919091179055565b5f546001600160a01b03163314610d8b5760405162461bcd60e51b815260040161079a90612267565b601c54600160a01b900460ff1615610de55760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161079a565b601b546001600160a01b031663f305d7194730610e0181610977565b5f80610e145f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610e7a573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e9f9190612301565b5050601c54601b5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610ef4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f18919061232c565b50601c805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610f5b5760405162461bcd60e51b815260040161079a90612267565b5f5b600154811015610fbf575f60018281548110610f7b57610f7b612347565b5f918252602080832091909101546040519283526001600160a01b03169250829182915f8051602061241d833981519152910160405180910390a350600101610f5d565b50565b6001600160a01b0383166110245760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161079a565b6001600160a01b0382166110855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161079a565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111495760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161079a565b6001600160a01b0382166111ab5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161079a565b5f811161120c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161079a565b5f80546001600160a01b0385811691161480159061123757505f546001600160a01b03848116911614155b1561170457600d5460ff16156112f357601b546001600160a01b038481169116148015906112735750601c546001600160a01b03848116911614155b156112f357325f9081526007602052604090205443116112e15760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b606482015260840161079a565b325f9081526007602052604090204390555b601c546001600160a01b03858116911614801561131e5750601b546001600160a01b03848116911614155b801561134257506001600160a01b0383165f9081526005602052604090205460ff16155b15611426576017548211156113955760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b604482015260640161079a565b601854826113a285610977565b6113ac919061235b565b11156113fa5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161079a565b601454601554101561141157823b15611411575f80fd5b60158054905f6114208361236e565b91905055505b611452606461144c6012546015541161144157600e54611445565b6010545b8590611ab3565b90611b38565b601c549091506001600160a01b03848116911614801561147b57506001600160a01b0384163014155b15611669576017548211156114ce5760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b604482015260640161079a565b6114f3606461144c601354601554116114e957600f54611445565b6011548590611ab3565b601c54909150600160c01b900460ff161561166957600a601f54611517919061235b565b431061166957601d54601c546001600160a01b03165f9081526002602052604081205490916127109161154a91906122b0565b61155491906122c7565b601c546001600160a01b03165f9081526002602052604090205490915061157b9082611b79565b601c546001600160a01b03165f9081526002602052604081209190915580525f805160206123d5833981519152546115b39082611bba565b5f80805260026020525f805160206123d583398151915291909155601c546040516001600160a01b0391909116905f8051602061241d833981519152906115fd9085815260200190565b60405180910390a3601c5f9054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611651575f80fd5b505af1158015611663573d5f803e3d5ffd5b50505050505b5f61167330610977565b601c54909150600160a81b900460ff1615801561169d5750601c546001600160a01b038581169116145b80156116b25750601c54600160b01b900460ff165b80156116bf575060195481115b80156116ce5750601454601554115b15611702576116f06116eb846116e684601a54611c18565b611c18565b6118ef565b4780156117005761170047611a78565b505b505b801561176957305f908152600260205260409020546117239082611bba565b305f81815260026020526040908190209290925590516001600160a01b038616905f8051602061241d833981519152906117609085815260200190565b60405180910390a35b601c54600160c81b900460ff16156117845761178482611c2c565b6001600160a01b0384165f908152600260205260409020546117a69083611b79565b6001600160a01b0385165f908152600260205260409020556117e96117cb8383611b79565b6001600160a01b0385165f9081526002602052604090205490611bba565b6001600160a01b0384165f9081526002602052604090205561180a84611ca3565b61181383611ca3565b6001600160a01b038084169085165f8051602061241d8339815191526118398585611b79565b60405190815260200160405180910390a3601c54600160c01b900460ff1680156118705750601c546001600160a01b038481169116145b1561187d5761187d611d4f565b601c54600160c01b900460ff1680156118a35750601c546001600160a01b038581169116145b156118b1576118b183611ef7565b50505050565b5f81848411156118da5760405162461bcd60e51b815260040161079a91906120e7565b505f6118e68486612386565b95945050505050565b601c805460ff60a81b1916600160a81b1790558015611a6857601c54600160a01b900460ff1615611a68576040805160028082526060820183525f9260208301908036833701905050905030815f8151811061194d5761194d612347565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c891906122e6565b816001815181106119db576119db612347565b6001600160a01b039283166020918202929092010152601b54611a019130911684610fc2565b601b5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a399085905f90869030904290600401612399565b5f604051808303815f87803b158015611a50575f80fd5b505af1158015611a62573d5f803e3d5ffd5b50505050505b50601c805460ff60a81b19169055565b600d546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f193505050501580156108cc573d5f803e3d5ffd5b5f825f03611ac257505f6107b8565b5f611acd83856122b0565b905082611ada85836122c7565b14611b315760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161079a565b9392505050565b5f611b3183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120a4565b5f611b3183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118b7565b5f80611bc6838561235b565b905083811015611b315760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161079a565b5f818311611c265782611b31565b50919050565b60085460ff1615610fbf575f611c59670de0b6b3a764000061144c60095485611ab390919063ffffffff16565b90505f19611c7282601654611bba90919063ffffffff16565b1115611c8f575050601c805460ff60b81b1916600160b81b179055565b601654611c9c9082611bba565b6016555050565b5f611cad82610977565b118015611cc357506001600160a01b0381163014155b8015611ce757506001600160a01b0381165f9081526003602052604090205460ff16155b15610fbf576001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b031990911681179091555f908152600360205260409020805460ff1916909117905550565b600a601f54611d5e919061235b565b43106107eb576001545f5b81811015611eef575f60018281548110611d8557611d85612347565b5f9182526020822001546001600160a01b03169150611da382610977565b90505f612710601d5483611db791906122b0565b611dc191906122c7565b90505f81118015611de05750601c546001600160a01b03848116911614155b15611ee457808210611e76576001600160a01b0383165f9081526002602052604081208054839290611e13908490612386565b90915550505f80805260026020525f805160206123d58339815191528054839290611e3f90849061235b565b90915550506040518181525f906001600160a01b038516905f8051602061241d8339815191529060200160405180910390a3611ee4565b6001600160a01b0383165f9081526002602052604081208190558080525f805160206123d58339815191528054849290611eb190849061235b565b90915550506040518281525f906001600160a01b038516905f8051602061241d8339815191529060200160405180910390a35b505050600101611d69565b505043601f55565b6001545f5b8181101561209f575f60018281548110611f1857611f18612347565b5f9182526020822001546001600160a01b03169150611f3682610977565b90505f612710601e5483611f4a91906122b0565b611f5491906122c7565b90505f81118015611f735750601c546001600160a01b03848116911614155b8015611f905750856001600160a01b0316836001600160a01b0316145b1561209457808210612026576001600160a01b0383165f9081526002602052604081208054839290611fc3908490612386565b90915550505f80805260026020525f805160206123d58339815191528054839290611fef90849061235b565b90915550506040518181525f906001600160a01b038516905f8051602061241d8339815191529060200160405180910390a3612094565b6001600160a01b0383165f9081526002602052604081208190558080525f805160206123d5833981519152805484929061206190849061235b565b90915550506040518281525f906001600160a01b038516905f8051602061241d8339815191529060200160405180910390a35b505050600101611efc565b505050565b5f81836120c45760405162461bcd60e51b815260040161079a91906120e7565b505f6118e684866122c7565b5f602082840312156120e0575f80fd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610fbf575f80fd5b5f8060408385031215612141575f80fd5b823561214c8161211c565b946020939093013593505050565b5f805f6060848603121561216c575f80fd5b83356121778161211c565b925060208401356121878161211c565b929592945050506040919091013590565b5f815180845260208085019450602084015f5b838110156121d05781516001600160a01b0316875295820195908201906001016121ab565b509495945050505050565b602081525f611b316020830184612198565b8015158114610fbf575f80fd5b5f6020828403121561220a575f80fd5b8135611b31816121ed565b5f60208284031215612225575f80fd5b8135611b318161211c565b5f8060408385031215612241575f80fd5b823561224c8161211c565b9150602083013561225c8161211c565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107b8576107b861229c565b5f826122e157634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156122f6575f80fd5b8151611b318161211c565b5f805f60608486031215612313575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561233c575f80fd5b8151611b31816121ed565b634e487b7160e01b5f52603260045260245ffd5b808201808211156107b8576107b861229c565b5f6001820161237f5761237f61229c565b5060010190565b818103818111156107b8576107b861229c565b85815284602082015260a060408201525f6123b760a0830186612198565b6001600160a01b039490941660608301525060800152939250505056feac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212206a3815ce146d031c43da5285b65733748f021d8e676001c642651502349b23f364736f6c63430008190033
Deployed Bytecode Sourcemap
4387:15956:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19510:102;;;;;;;;;;-1:-1:-1;19510:102:0;;;;;:::i;:::-;;:::i;:::-;;5130:33;;;;;;;;;;;;;;;;;;;345:25:1;;;333:2;318:18;5130:33:0;;;;;;;;7210:83;;;;;;;;;;-1:-1:-1;7280:5:0;;;;;;;;;;;;-1:-1:-1;;;7280:5:0;;;;7210:83;;;;;;;:::i;8220:193::-;;;;;;;;;;-1:-1:-1;8220:193:0;;;;;:::i;:::-;;:::i;:::-;;;1425:14:1;;1418:22;1400:41;;1388:2;1373:18;8220:193:0;1260:187:1;19620:178:0;;;;;;;;;;;;;:::i;6427:37::-;;;;;;;;;;;;;;;;5979:47;;;;;;;;;;;;;;;;7487:95;;;;;;;;;;-1:-1:-1;7567:7:0;;7487:95;;8421:446;;;;;;;;;;-1:-1:-1;8421:446:0;;;;;:::i;:::-;;:::i;6338:25::-;;;;;;;;;;-1:-1:-1;6338:25:0;;;;-1:-1:-1;;;6338:25:0;;;;;;7396:83;;;;;;;;;;-1:-1:-1;7396:83:0;;5632:1;2055:36:1;;2043:2;2028:18;7396:83:0;1913:184:1;19258:106:0;;;;;;;;;;-1:-1:-1;19258:106:0;;;;;:::i;:::-;;:::i;4904:39::-;;;;;;;;;;-1:-1:-1;4904:39:0;;;;;;;;18699:366;;;;;;;;;;;;;:::i;6372:48::-;;;;;;;;;;;;6418:2;6372:48;;6304:27;;;;;;;;;;-1:-1:-1;6304:27:0;;;;-1:-1:-1;;;6304:27:0;;;;;;7717:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19806:122::-;;;;;;;;;;-1:-1:-1;19806:122:0;;;;;:::i;:::-;;:::i;7590:119::-;;;;;;;;;;-1:-1:-1;7590:119:0;;;;;:::i;:::-;;:::i;3339:148::-;;;;;;;;;;;;;:::i;17257:201::-;;;;;;;;;;;;;:::i;19114:136::-;;;;;;;;;;-1:-1:-1;19114:136:0;;;;;:::i;:::-;;:::i;5807:48::-;;;;;;;;;;;;;;;;3125:79;;;;;;;;;;-1:-1:-1;3163:7:0;3190:6;3125:79;;-1:-1:-1;;;;;3190:6:0;;;3605:51:1;;3593:2;3578:18;3125:79:0;3459:203:1;5862:50:0;;;;;;;;;;;;;;;;6268:29;;;;;;;;;;-1:-1:-1;6268:29:0;;;;-1:-1:-1;;;6268:29:0;;;;;;5006:38;;;;;;;;;;;;;;;;7301:87;;;;;;;;;;-1:-1:-1;7373:7:0;;;;;;;;;;;;-1:-1:-1;;;7373:7:0;;;;7301:87;;19372:130;;;;;;;;;;-1:-1:-1;19372:130:0;;;;;:::i;:::-;;:::i;17566:391::-;;;;;;;;;;;;;:::i;19936:91::-;;;;;;;;;;-1:-1:-1;19936:91:0;;;;;:::i;:::-;;:::i;6616:30::-;;;;;;;;;;;;;;;;7821:199;;;;;;;;;;-1:-1:-1;7821:199:0;;;;;:::i;:::-;;:::i;5074:31::-;;;;;;;;;;;;;;;;4950:33;;;;;;;;;;;;;;;;6224:37;;;;;;;;;;-1:-1:-1;6224:37:0;;;;-1:-1:-1;;;6224:37:0;;;;;;5919:53;;;;;;;;;;;;;;;;20035:87;;;;;;;;;;-1:-1:-1;20035:87:0;;;;;:::i;:::-;;:::i;5172:40::-;;;;;;;;;;-1:-1:-1;5172:40:0;;;;;;;;17965:523;;;;;;;;;;;;;:::i;20130:210::-;;;;;;;;;;;;;:::i;4564:40::-;;;;;;;;;;-1:-1:-1;4564:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8028:184;;;;;;;;;;-1:-1:-1;8028:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8177:18:0;;;8145:7;8177:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8028:184;6520:40;;;;;;;;;;;;;;;;19510:102;3252:6;;-1:-1:-1;;;;;3252:6:0;681:10;3252:22;3244:67;;;;-1:-1:-1;;;3244:67:0;;;;;;;:::i;:::-;;;;;;;;;19582:9:::1;:22:::0;19510:102::o;8220:193::-;8322:4;8344:39;681:10;8367:7;8376:6;8344:8;:39::i;:::-;-1:-1:-1;8401:4:0;8220:193;;;;;:::o;19620:178::-;19684:13;;19671:10;;:26;19667:124;;;19754:10;;19741:9;;19728:10;;:22;;;;:::i;:::-;19727:37;;;;:::i;:::-;19714:10;:50;19667:124;19620:178::o;8421:446::-;8553:4;8570:36;8580:6;8588:9;8599:6;8570:9;:36::i;:::-;8617:220;8640:6;681:10;8688:138;8744:6;8688:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8688:19:0;;;;;;:11;:19;;;;;;;;681:10;8688:33;;;;;;;;;;:37;:138::i;:::-;8617:8;:220::i;:::-;-1:-1:-1;8855:4:0;8421:446;;;;;:::o;19258:106::-;3252:6;;-1:-1:-1;;;;;3252:6:0;681:10;3252:22;3244:67;;;;-1:-1:-1;;;3244:67:0;;;;;;;:::i;18699:366::-;18765:10;;;;;-1:-1:-1;;;;;18765:10:0;681;-1:-1:-1;;;;;18749:26:0;;18741:35;;;;;;18787:20;18810:24;18828:4;18810:9;:24::i;:::-;18787:47;-1:-1:-1;18849:16:0;;18845:79;;18882:30;18899:12;18882:16;:30::i;:::-;18955:21;18991:14;;18987:71;;19022:24;19035:10;19022:12;:24::i;:::-;18730:335;;18699:366::o;7717:96::-;7762:16;7798:7;7791:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7791:14:0;;;;;;;;;;;;;;;;;;;;;;;7717:96;:::o;19806:122::-;3252:6;;-1:-1:-1;;;;;3252:6:0;681:10;3252:22;3244:67;;;;-1:-1:-1;;;3244:67:0;;;;;;;:::i;:::-;19882:17:::1;:38:::0;;;::::1;;-1:-1:-1::0;;;19882:38:0::1;-1:-1:-1::0;;;;19882:38:0;;::::1;::::0;;;::::1;::::0;;19806:122::o;7590:119::-;-1:-1:-1;;;;;7683:18:0;7656:7;7683:18;;;:9;:18;;;;;;;7590:119::o;3339:148::-;3252:6;;-1:-1:-1;;;;;3252:6:0;681:10;3252:22;3244:67;;;;-1:-1:-1;;;3244:67:0;;;;;;;:::i;:::-;3446:1:::1;3430:6:::0;;3409:40:::1;::::0;-1:-1:-1;;;;;3430:6:0;;::::1;::::0;3409:40:::1;::::0;3446:1;;3409:40:::1;3477:1;3460:19:::0;;-1:-1:-1;;;;;;3460:19:0::1;::::0;;3339:148::o;17257:201::-;3252:6;;-1:-1:-1;;;;;3252:6:0;681:10;3252:22;3244:67;;;;-1:-1:-1;;;3244:67:0;;;;;;;:::i;:::-;17326:7:::1;::::0;17311:12:::1;:22:::0;;;17344:14:::1;:24:::0;;;17379:20:::1;:28:::0;;-1:-1:-1;;17379:28:0::1;::::0;;17423:27:::1;::::0;345:25:1;;;17423:27:0::1;::::0;333:2:1;318:18;17423:27:0::1;;;;;;;17257:201::o:0;19114:136::-;3252:6;;-1:-1:-1;;;;;3252:6:0;681:10;3252:22;3244:67;;;;-1:-1:-1;;;3244:67:0;;;;;;;:::i;:::-;19198:20:::1;:44:::0;;-1:-1:-1;;19198:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19114:136::o;19372:130::-;3252:6;;-1:-1:-1;;;;;3252:6:0;681:10;3252:22;3244:67;;;;-1:-1:-1;;;3244:67:0;;;;;;;:::i;:::-;19458:16:::1;:36:::0;19372:130::o;17566:391::-;3252:6;;-1:-1:-1;;;;;3252:6:0;681:10;3252:22;3244:67;;;;-1:-1:-1;;;3244:67:0;;;;;;;:::i;:::-;17618:15:::1;:104:::0;;-1:-1:-1;;;;;;17618:104:0::1;17669:42;17618:104:::0;;::::1;::::0;;;17783:7:::1;::::0;17733:58:::1;::::0;17750:4:::1;::::0;17733:8:::1;:58::i;:::-;17836:15;;;;;;;;;-1:-1:-1::0;;;;;17836:15:0::1;-1:-1:-1::0;;;;;17836:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17818:55:0::1;;17896:4;17916:15;;;;;;;;;-1:-1:-1::0;;;;;17916:15:0::1;-1:-1:-1::0;;;;;17916:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17818:131;::::0;-1:-1:-1;;;;;;17818:131:0::1;::::0;;;;;;-1:-1:-1;;;;;5434:15:1;;;17818:131:0::1;::::0;::::1;5416:34:1::0;5486:15;;5466:18;;;5459:43;5351:18;;17818:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17802:13;:147:::0;;-1:-1:-1;;;;;;17802:147:0::1;-1:-1:-1::0;;;;;17802:147:0;;;::::1;::::0;;;::::1;::::0;;17566:391::o;19936:91::-;3252:6;;-1:-1:-1;;;;;3252:6:0;681:10;3252:22;3244:67;;;;-1:-1:-1;;;3244:67:0;;;;;;;:::i;:::-;19999:10:::1;:20:::0;;;::::1;;-1:-1:-1::0;;;19999:20:0::1;-1:-1:-1::0;;;;19999:20:0;;::::1;::::0;;;::::1;::::0;;19936:91::o;7821:199::-;7926:4;7948:42;681:10;7972:9;7983:6;7948:9;:42::i;20035:87::-;3252:6;;-1:-1:-1;;;;;3252:6:0;681:10;3252:22;3244:67;;;;-1:-1:-1;;;3244:67:0;;;;;;;:::i;:::-;20098:8:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;20098:16:0::1;-1:-1:-1::0;;;;20098:16:0;;::::1;::::0;;;::::1;::::0;;20035:87::o;17965:523::-;3252:6;;-1:-1:-1;;;;;3252:6:0;681:10;3252:22;3244:67;;;;-1:-1:-1;;;3244:67:0;;;;;;;:::i;:::-;18027:11:::1;::::0;-1:-1:-1;;;18027:11:0;::::1;;;18026:12;18018:48;;;::::0;-1:-1:-1;;;18018:48:0;;5715:2:1;18018:48:0::1;::::0;::::1;5697:21:1::0;5754:2;5734:18;;;5727:30;5793:25;5773:18;;;5766:53;5836:18;;18018:48:0::1;5513:347:1::0;18018:48:0::1;18077:15;::::0;-1:-1:-1;;;;;18077:15:0::1;:31;18116:21;18161:4;18181:24;18161:4:::0;18181:9:::1;:24::i;:::-;18220:1;18236::::0;18252:7:::1;3163::::0;3190:6;-1:-1:-1;;;;;3190:6:0;;3125:79;18252:7:::1;18077:223;::::0;::::1;::::0;;;-1:-1:-1;;;;;;18077:223:0;;;-1:-1:-1;;;;;6224:15:1;;;18077:223:0::1;::::0;::::1;6206:34:1::0;6256:18;;;6249:34;;;;6299:18;;;6292:34;;;;6342:18;;;6335:34;6406:15;;;6385:19;;;6378:44;18274:15:0::1;6438:19:1::0;;;6431:35;6140:19;;18077:223:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;18318:13:0::1;::::0;18363:15:::1;::::0;18311:111:::1;::::0;-1:-1:-1;;;18311:111:0;;-1:-1:-1;;;;;18363:15:0;;::::1;18311:111;::::0;::::1;6962:51:1::0;-1:-1:-1;;7029:18:1;;;7022:34;18318:13:0;::::1;::::0;-1:-1:-1;18311:29:0::1;::::0;6935:18:1;;18311:111:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;18433:11:0::1;:18:::0;;-1:-1:-1;;;;18462:18:0;-1:-1:-1;;;18462:18:0;;;17965:523::o;20130:210::-;3252:6;;-1:-1:-1;;;;;3252:6:0;681:10;3252:22;3244:67;;;;-1:-1:-1;;;3244:67:0;;;;;;;:::i;:::-;20192:9:::1;20187:146;20211:7;:14:::0;20207:18;::::1;20187:146;;;20247:14;20264:7;20272:1;20264:10;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;::::0;20294:27:::1;::::0;345:25:1;;;-1:-1:-1;;;;;20264:10:0::1;::::0;-1:-1:-1;20264:10:0;;;;-1:-1:-1;;;;;;;;;;;20294:27:0;318:18:1;20294:27:0::1;;;;;;;-1:-1:-1::0;20227:3:0::1;;20187:146;;;;20130:210::o:0;8875:369::-;-1:-1:-1;;;;;9002:19:0;;8994:68;;;;-1:-1:-1;;;8994:68:0;;7841:2:1;8994:68:0;;;7823:21:1;7880:2;7860:18;;;7853:30;7919:34;7899:18;;;7892:62;-1:-1:-1;;;7970:18:1;;;7963:34;8014:19;;8994:68:0;7639:400:1;8994:68:0;-1:-1:-1;;;;;9081:21:0;;9073:68;;;;-1:-1:-1;;;9073:68:0;;8246:2:1;9073:68:0;;;8228:21:1;8285:2;8265:18;;;8258:30;8324:34;8304:18;;;8297:62;-1:-1:-1;;;8375:18:1;;;8368:32;8417:19;;9073:68:0;8044:398:1;9073:68:0;-1:-1:-1;;;;;9152:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9204:32;;345:25:1;;;9204:32:0;;318:18:1;9204:32:0;;;;;;;8875:369;;;:::o;9252:4320::-;-1:-1:-1;;;;;9374:18:0;;9366:68;;;;-1:-1:-1;;;9366:68:0;;8649:2:1;9366:68:0;;;8631:21:1;8688:2;8668:18;;;8661:30;8727:34;8707:18;;;8700:62;-1:-1:-1;;;8778:18:1;;;8771:35;8823:19;;9366:68:0;8447:401:1;9366:68:0;-1:-1:-1;;;;;9453:16:0;;9445:64;;;;-1:-1:-1;;;9445:64:0;;9055:2:1;9445:64:0;;;9037:21:1;9094:2;9074:18;;;9067:30;9133:34;9113:18;;;9106:62;-1:-1:-1;;;9184:18:1;;;9177:33;9227:19;;9445:64:0;8853:399:1;9445:64:0;9537:1;9528:6;:10;9520:64;;;;-1:-1:-1;;;9520:64:0;;9459:2:1;9520:64:0;;;9441:21:1;9498:2;9478:18;;;9471:30;9537:34;9517:18;;;9510:62;-1:-1:-1;;;9588:18:1;;;9581:39;9637:19;;9520:64:0;9257:405:1;9520:64:0;9595:17;3190:6;;-1:-1:-1;;;;;9633:15:0;;;3190:6;;9633:15;;;;:32;;-1:-1:-1;3163:7:0;3190:6;-1:-1:-1;;;;;9652:13:0;;;3190:6;;9652:13;;9633:32;9629:3250;;;9688:20;;;;9684:485;;;9769:15;;-1:-1:-1;;;;;9755:30:0;;;9769:15;;9755:30;;;;:83;;-1:-1:-1;9824:13:0;;-1:-1:-1;;;;;9810:28:0;;;9824:13;;9810:28;;9755:83;9729:425;;;9944:9;9915:39;;;;:28;:39;;;;;;9957:12;-1:-1:-1;9881:176:0;;;;-1:-1:-1;;;9881:176:0;;9869:2:1;9881:176:0;;;9851:21:1;9908:2;9888:18;;;9881:30;9947:34;9927:18;;;9920:62;-1:-1:-1;;;9998:18:1;;;9991:34;10042:19;;9881:176:0;9667:400:1;9881:176:0;10109:9;10080:39;;;;:28;:39;;;;;10122:12;10080:54;;9729:425;10215:13;;-1:-1:-1;;;;;10207:21:0;;;10215:13;;10207:21;:72;;;;-1:-1:-1;10263:15:0;;-1:-1:-1;;;;;10249:30:0;;;10263:15;;10249:30;;10207:72;:116;;;;-1:-1:-1;;;;;;10301:22:0;;;;;;:18;:22;;;;;;;;10300:23;10207:116;10185:559;;;10376:12;;10366:6;:22;;10358:60;;;;-1:-1:-1;;;10358:60:0;;10274:2:1;10358:60:0;;;10256:21:1;10313:2;10293:18;;;10286:30;-1:-1:-1;;;10332:18:1;;;10325:55;10397:18;;10358:60:0;10072:349:1;10358:60:0;10493:14;;10483:6;10467:13;10477:2;10467:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;10437:140;;;;-1:-1:-1;;;10437:140:0;;10758:2:1;10437:140:0;;;10740:21:1;10797:2;10777:18;;;10770:30;10836:28;10816:18;;;10809:56;10882:18;;10437:140:0;10556:350:1;10437:140:0;10612:18;;10600:9;;:30;10596:103;;;18627:20;;18675:8;10655:24;;;;;;10717:9;:11;;;:9;:11;;;:::i;:::-;;;;;;10185:559;10772:208;10976:3;10772:181;10836:15;;10824:9;;:27;10823:111;;10920:14;;10823:111;;;10880:12;;10823:111;10772:6;;:28;:181::i;:::-;:203;;:208::i;:::-;11023:13;;10760:220;;-1:-1:-1;;;;;;11017:19:0;;;11023:13;;11017:19;:44;;;;-1:-1:-1;;;;;;11040:21:0;;11056:4;11040:21;;11017:44;11013:1203;;;11100:12;;11090:6;:22;;11082:60;;;;-1:-1:-1;;;11082:60:0;;10274:2:1;11082:60:0;;;10256:21:1;10313:2;10293:18;;;10286:30;-1:-1:-1;;;10332:18:1;;;10325:55;10397:18;;11082:60:0;10072:349:1;11082:60:0;11173:235;11404:3;11173:204;11245:16;;11233:9;;:28;11232:122;;11339:15;;11232:122;;;11294:13;;11173:6;;:32;:204::i;:235::-;11431:10;;11161:247;;-1:-1:-1;;;;11431:10:0;;;;11427:774;;;6418:2;11486:15;;:37;;;;:::i;:::-;11470:12;:53;11466:716;;11632:16;;11586:13;;-1:-1:-1;;;;;11586:13:0;11552:20;11576:24;;;:9;:24;;;;;;11552:20;;11652:5;;11576:72;;11632:16;11576:72;:::i;:::-;11575:82;;;;:::i;:::-;11721:13;;-1:-1:-1;;;;;11721:13:0;11711:24;;;;:9;:24;;;;;;11552:105;;-1:-1:-1;11711:98:0;;11552:105;11711:28;:98::i;:::-;11694:13;;-1:-1:-1;;;;;11694:13:0;11684:24;;;;:9;:24;;;;;:125;;;;11860:21;;-1:-1:-1;;;;;;;;;;;11860:21:0;:95;;11916:12;11860:25;:95::i;:::-;11836:21;;;;:9;:21;;-1:-1:-1;;;;;;;;;;;11836:119:0;;;;11996:13;;11836:21;11987:49;-1:-1:-1;;;;;11996:13:0;;;;;-1:-1:-1;;;;;;;;;;;11987:49:0;;;12023:12;345:25:1;;333:2;318:18;;199:177;11987:49:0;;;;;;;;12137:13;;;;;;;;;-1:-1:-1;;;;;12137:13:0;-1:-1:-1;;;;;12122:34:0;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11525:657;11466:716;12232:28;12263:24;12281:4;12263:9;:24::i;:::-;12325:6;;12232:55;;-1:-1:-1;;;;12325:6:0;;;;12324:7;:47;;;;-1:-1:-1;12358:13:0;;-1:-1:-1;;;;;12352:19:0;;;12358:13;;12352:19;12324:47;:79;;;;-1:-1:-1;12392:11:0;;-1:-1:-1;;;12392:11:0;;;;12324:79;:140;;;;;12447:17;;12424:20;:40;12324:140;:191;;;;;12497:18;;12485:9;;:30;12324:191;12302:566;;;12550:109;12589:51;12593:6;12601:38;12605:20;12627:11;;12601:3;:38::i;:::-;12589:3;:51::i;:::-;12550:16;:109::i;:::-;12707:21;12751:22;;12747:106;;12798:35;12811:21;12798:12;:35::i;:::-;12531:337;12302:566;9667:3212;9629:3250;12895:13;;12891:172;;12970:4;12952:24;;;;:9;:24;;;;;;:39;;12981:9;12952:28;:39::i;:::-;12943:4;12925:24;;;;:9;:24;;;;;;;:66;;;;13011:40;;-1:-1:-1;;;;;13011:40:0;;;-1:-1:-1;;;;;;;;;;;13011:40:0;;;13041:9;345:25:1;;333:2;318:18;;199:177;13011:40:0;;;;;;;;12891:172;13079:8;;-1:-1:-1;;;13079:8:0;;;;13075:69;;;13104:28;13125:6;13104:20;:28::i;:::-;-1:-1:-1;;;;;13174:15:0;;;;;;:9;:15;;;;;;:27;;13194:6;13174:19;:27::i;:::-;-1:-1:-1;;;;;13156:15:0;;;;;;:9;:15;;;;;:45;13228:40;13246:21;:6;13257:9;13246:10;:21::i;:::-;-1:-1:-1;;;;;13228:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;13212:13:0;;;;;;:9;:13;;;;;:56;13281:19;13295:4;13281:13;:19::i;:::-;13311:17;13325:2;13311:13;:17::i;:::-;-1:-1:-1;;;;;13346:41:0;;;;;;-1:-1:-1;;;;;;;;;;;13365:21:0;:6;13376:9;13365:10;:21::i;:::-;13346:41;;345:25:1;;;333:2;318:18;13346:41:0;;;;;;;13404:10;;-1:-1:-1;;;13404:10:0;;;;:33;;;;-1:-1:-1;13424:13:0;;-1:-1:-1;;;;;13418:19:0;;;13424:13;;13418:19;13404:33;13400:74;;;13454:8;:6;:8::i;:::-;13488:10;;-1:-1:-1;;;13488:10:0;;;;:35;;;;-1:-1:-1;13510:13:0;;-1:-1:-1;;;;;13502:21:0;;;13510:13;;13502:21;13488:35;13484:81;;;13540:13;13550:2;13540:9;:13::i;:::-;9355:4217;9252:4320;;;:::o;1927:224::-;2047:7;2083:12;2075:6;;;;2067:29;;;;-1:-1:-1;;;2067:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2107:9:0;2119:5;2123:1;2119;:5;:::i;:::-;2107:17;1927:224;-1:-1:-1;;;;;1927:224:0:o;16640:609::-;6742:6;:13;;-1:-1:-1;;;;6742:13:0;-1:-1:-1;;;6742:13:0;;;16718:55;;16755:7:::1;16718:55;16788:11;::::0;-1:-1:-1;;;16788:11:0;::::1;;;16783:51:::0;16816:7:::1;16783:51;16868:16;::::0;;16882:1:::1;16868:16:::0;;;;;::::1;::::0;;16844:21:::1;::::0;16868:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;16868:16:0::1;16844:40;;16913:4;16895;16900:1;16895:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16895:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;16939:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;16939:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;16895:7;;16939:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16929:4;16934:1;16929:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16929:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;17004:15:::1;::::0;16972:62:::1;::::0;16989:4:::1;::::0;17004:15:::1;17022:11:::0;16972:8:::1;:62::i;:::-;17045:15;::::0;:196:::1;::::0;-1:-1:-1;;;17045:196:0;;-1:-1:-1;;;;;17045:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;17126:11;;17045:15:::1;::::0;17168:4;;17195::::1;::::0;17215:15:::1;::::0;17045:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16707:542;6766:1;-1:-1:-1::0;6778:6:0;:14;;-1:-1:-1;;;;6778:14:0;;;16640:609::o;17466:92::-;17523:10;;:27;;:10;;;;-1:-1:-1;;;;;17523:10:0;;:27;;;;;;;;;;;;:10;:27;;;;;;;;;;;;;;;;;;;2159:246;2217:7;2241:1;2246;2241:6;2237:47;;-1:-1:-1;2271:1:0;2264:8;;2237:47;2294:9;2306:5;2310:1;2306;:5;:::i;:::-;2294:17;-1:-1:-1;2339:1:0;2330:5;2334:1;2294:17;2330:5;:::i;:::-;:10;2322:56;;;;-1:-1:-1;;;2322:56:0;;12105:2:1;2322:56:0;;;12087:21:1;12144:2;12124:18;;;12117:30;12183:34;12163:18;;;12156:62;-1:-1:-1;;;12234:18:1;;;12227:31;12275:19;;2322:56:0;11903:397:1;2322:56:0;2396:1;2159:246;-1:-1:-1;;;2159:246:0:o;2413:132::-;2471:7;2498:39;2502:1;2505;2498:39;;;;;;;;;;;;;;;;;:3;:39::i;1783:136::-;1841:7;1868:43;1872:1;1875;1868:43;;;;;;;;;;;;;;;;;:3;:43::i;1596:179::-;1654:7;;1686:5;1690:1;1686;:5;:::i;:::-;1674:17;;1715:1;1710;:6;;1702:46;;;;-1:-1:-1;;;1702:46:0;;12507:2:1;1702:46:0;;;12489:21:1;12546:2;12526:18;;;12519:30;12585:29;12565:18;;;12558:57;12632:18;;1702:46:0;12305:351:1;14353:107:0;14410:7;14442:1;14438;:5;14437:15;;14451:1;14437:15;;;-1:-1:-1;14447:1:0;14353:107;-1:-1:-1;14353:107:0:o;13870:475::-;13948:20;;;;13944:394;;;13985:22;14010:34;14039:4;14011:22;14022:10;;14011:6;:10;;:22;;;;:::i;14010:34::-;13985:59;;-1:-1:-1;;14117:27:0;14129:14;14117:7;;:11;;:27;;;;:::i;:::-;:47;14113:137;;;-1:-1:-1;;14185:17:0;:24;;-1:-1:-1;;;;14185:24:0;-1:-1:-1;;;14185:24:0;;;13870:475::o;14113:137::-;14274:7;;:27;;14286:14;14274:11;:27::i;:::-;14264:7;:37;-1:-1:-1;13870:475:0;:::o;13580:282::-;13679:1;13658:18;13668:7;13658:9;:18::i;:::-;:22;:63;;;;-1:-1:-1;;;;;;13697:24:0;;13716:4;13697:24;;13658:63;:98;;;;-1:-1:-1;;;;;;13739:17:0;;;;;;:8;:17;;;;;;;;13738:18;13658:98;13640:215;;;13783:7;:21;;;;;;;;;;;-1:-1:-1;;;;;13783:21:0;;-1:-1:-1;;;;;;13783:21:0;;;;;;;;-1:-1:-1;13819:17:0;;;:8;13783:21;13819:17;;;;:24;;-1:-1:-1;;13819:24:0;;;;;;13580:282;:::o;15505:1127::-;6418:2;15563:15;;:37;;;;:::i;:::-;15547:12;:53;15543:1082;;15634:7;:14;15617;15663:906;15687:6;15683:1;:10;15663:906;;;15719:14;15736:7;15744:1;15736:10;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;15736:10:0;;-1:-1:-1;15789:17:0;15736:10;15789:9;:17::i;:::-;15765:41;;15825:20;15906:5;15865:16;;15849:13;:32;;;;:::i;:::-;15848:63;;;;:::i;:::-;15825:86;;15949:1;15934:12;:16;:43;;;;-1:-1:-1;15964:13:0;;-1:-1:-1;;;;;15954:23:0;;;15964:13;;15954:23;;15934:43;15930:624;;;16023:12;16006:13;:29;16002:533;;-1:-1:-1;;;;;16064:17:0;;;;;;:9;:17;;;;;:33;;16085:12;;16064:17;:33;;16085:12;;16064:33;:::i;:::-;;;;-1:-1:-1;;16124:21:0;;;;:9;:21;;-1:-1:-1;;;;;;;;;;;16124:37:0;;16149:12;;16124:21;:37;;16149:12;;16124:37;:::i;:::-;;;;-1:-1:-1;;16193:42:0;;345:25:1;;;16218:1:0;;-1:-1:-1;;;;;16193:42:0;;;-1:-1:-1;;;;;;;;;;;16193:42:0;333:2:1;318:18;16193:42:0;;;;;;;16002:533;;;-1:-1:-1;;;;;16292:17:0;;16312:1;16292:17;;;:9;:17;;;;;:21;;;16398;;;-1:-1:-1;;;;;;;;;;;16398:38:0;;16423:13;;16312:1;16398:38;;16423:13;;16398:38;:::i;:::-;;;;-1:-1:-1;;16468:43:0;;345:25:1;;;16493:1:0;;-1:-1:-1;;;;;16468:43:0;;;-1:-1:-1;;;;;;;;;;;16468:43:0;333:2:1;318:18;16468:43:0;;;;;;;16002:533;-1:-1:-1;;;15695:3:0;;15663:906;;;-1:-1:-1;;16601:12:0;16583:15;:30;15505:1127::o;14468:1029::-;14536:7;:14;14519;14565:925;14589:6;14585:1;:10;14565:925;;;14621:14;14638:7;14646:1;14638:10;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;14638:10:0;;-1:-1:-1;14691:17:0;14638:10;14691:9;:17::i;:::-;14667:41;;14727:20;14811:5;14767:19;;14751:13;:35;;;;:::i;:::-;14750:66;;;;:::i;:::-;14727:89;;14854:1;14839:12;:16;:43;;;;-1:-1:-1;14869:13:0;;-1:-1:-1;;;;;14859:23:0;;;14869:13;;14859:23;;14839:43;:59;;;;;14896:2;-1:-1:-1;;;;;14886:12:0;:6;-1:-1:-1;;;;;14886:12:0;;14839:59;14835:640;;;14944:12;14927:13;:29;14923:533;;-1:-1:-1;;;;;14985:17:0;;;;;;:9;:17;;;;;:33;;15006:12;;14985:17;:33;;15006:12;;14985:33;:::i;:::-;;;;-1:-1:-1;;15045:21:0;;;;:9;:21;;-1:-1:-1;;;;;;;;;;;15045:37:0;;15070:12;;15045:21;:37;;15070:12;;15045:37;:::i;:::-;;;;-1:-1:-1;;15114:42:0;;345:25:1;;;15139:1:0;;-1:-1:-1;;;;;15114:42:0;;;-1:-1:-1;;;;;;;;;;;15114:42:0;333:2:1;318:18;15114:42:0;;;;;;;14923:533;;;-1:-1:-1;;;;;15213:17:0;;15233:1;15213:17;;;:9;:17;;;;;:21;;;15319;;;-1:-1:-1;;;;;;;;;;;15319:38:0;;15344:13;;15233:1;15319:38;;15344:13;;15319:38;:::i;:::-;;;;-1:-1:-1;;15389:43:0;;345:25:1;;;15414:1:0;;-1:-1:-1;;;;;15389:43:0;;;-1:-1:-1;;;;;;;;;;;15389:43:0;333:2:1;318:18;15389:43:0;;;;;;;14923:533;-1:-1:-1;;;14597:3:0;;14565:925;;;;14508:989;14468:1029;:::o;2553:223::-;2673:7;2708:12;2701:5;2693:28;;;;-1:-1:-1;;;2693:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2732:9:0;2744:5;2748:1;2744;:5;:::i;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;381:418::-;530:2;519:9;512:21;493:4;562:6;556:13;605:6;600:2;589:9;585:18;578:34;664:6;659:2;651:6;647:15;642:2;631:9;627:18;621:50;720:1;715:2;706:6;695:9;691:22;687:31;680:42;790:2;783;779:7;774:2;766:6;762:15;758:29;747:9;743:45;739:54;731:62;;;381:418;;;;:::o;804:131::-;-1:-1:-1;;;;;879:31:1;;869:42;;859:70;;925:1;922;915:12;940:315;1008:6;1016;1069:2;1057:9;1048:7;1044:23;1040:32;1037:52;;;1085:1;1082;1075:12;1037:52;1124:9;1111:23;1143:31;1168:5;1143:31;:::i;:::-;1193:5;1245:2;1230:18;;;;1217:32;;-1:-1:-1;;;940:315:1:o;1452:456::-;1529:6;1537;1545;1598:2;1586:9;1577:7;1573:23;1569:32;1566:52;;;1614:1;1611;1604:12;1566:52;1653:9;1640:23;1672:31;1697:5;1672:31;:::i;:::-;1722:5;-1:-1:-1;1779:2:1;1764:18;;1751:32;1792:33;1751:32;1792:33;:::i;:::-;1452:456;;1844:7;;-1:-1:-1;;;1898:2:1;1883:18;;;;1870:32;;1452:456::o;2102:465::-;2155:3;2193:5;2187:12;2220:6;2215:3;2208:19;2246:4;2275;2270:3;2266:14;2259:21;;2314:4;2307:5;2303:16;2337:1;2347:195;2361:6;2358:1;2355:13;2347:195;;;2426:13;;-1:-1:-1;;;;;2422:39:1;2410:52;;2482:12;;;;2517:15;;;;2458:1;2376:9;2347:195;;;-1:-1:-1;2558:3:1;;2102:465;-1:-1:-1;;;;;2102:465:1:o;2572:261::-;2751:2;2740:9;2733:21;2714:4;2771:56;2823:2;2812:9;2808:18;2800:6;2771:56;:::i;2838:118::-;2924:5;2917:13;2910:21;2903:5;2900:32;2890:60;;2946:1;2943;2936:12;2961:241;3017:6;3070:2;3058:9;3049:7;3045:23;3041:32;3038:52;;;3086:1;3083;3076:12;3038:52;3125:9;3112:23;3144:28;3166:5;3144:28;:::i;3207:247::-;3266:6;3319:2;3307:9;3298:7;3294:23;3290:32;3287:52;;;3335:1;3332;3325:12;3287:52;3374:9;3361:23;3393:31;3418:5;3393:31;:::i;3667:388::-;3735:6;3743;3796:2;3784:9;3775:7;3771:23;3767:32;3764:52;;;3812:1;3809;3802:12;3764:52;3851:9;3838:23;3870:31;3895:5;3870:31;:::i;:::-;3920:5;-1:-1:-1;3977:2:1;3962:18;;3949:32;3990:33;3949:32;3990:33;:::i;:::-;4042:7;4032:17;;;3667:388;;;;;:::o;4060:356::-;4262:2;4244:21;;;4281:18;;;4274:30;4340:34;4335:2;4320:18;;4313:62;4407:2;4392:18;;4060:356::o;4421:127::-;4482:10;4477:3;4473:20;4470:1;4463:31;4513:4;4510:1;4503:15;4537:4;4534:1;4527:15;4553:168;4626:9;;;4657;;4674:15;;;4668:22;;4654:37;4644:71;;4695:18;;:::i;4726:217::-;4766:1;4792;4782:132;;4836:10;4831:3;4827:20;4824:1;4817:31;4871:4;4868:1;4861:15;4899:4;4896:1;4889:15;4782:132;-1:-1:-1;4928:9:1;;4726:217::o;4948:251::-;5018:6;5071:2;5059:9;5050:7;5046:23;5042:32;5039:52;;;5087:1;5084;5077:12;5039:52;5119:9;5113:16;5138:31;5163:5;5138:31;:::i;6477:306::-;6565:6;6573;6581;6634:2;6622:9;6613:7;6609:23;6605:32;6602:52;;;6650:1;6647;6640:12;6602:52;6679:9;6673:16;6663:26;;6729:2;6718:9;6714:18;6708:25;6698:35;;6773:2;6762:9;6758:18;6752:25;6742:35;;6477:306;;;;;:::o;7067:245::-;7134:6;7187:2;7175:9;7166:7;7162:23;7158:32;7155:52;;;7203:1;7200;7193:12;7155:52;7235:9;7229:16;7254:28;7276:5;7254:28;:::i;7317:127::-;7378:10;7373:3;7369:20;7366:1;7359:31;7409:4;7406:1;7399:15;7433:4;7430:1;7423:15;10426:125;10491:9;;;10512:10;;;10509:36;;;10525:18;;:::i;10911:135::-;10950:3;10971:17;;;10968:43;;10991:18;;:::i;:::-;-1:-1:-1;11038:1:1;11027:13;;10911:135::o;11051:128::-;11118:9;;;11139:11;;;11136:37;;;11153:18;;:::i;11316:582::-;11615:6;11604:9;11597:25;11658:6;11653:2;11642:9;11638:18;11631:34;11701:3;11696:2;11685:9;11681:18;11674:31;11578:4;11722:57;11774:3;11763:9;11759:19;11751:6;11722:57;:::i;:::-;-1:-1:-1;;;;;11815:32:1;;;;11810:2;11795:18;;11788:60;-1:-1:-1;11879:3:1;11864:19;11857:35;11714:65;11316:582;-1:-1:-1;;;11316:582:1:o
Swarm Source
ipfs://6a3815ce146d031c43da5285b65733748f021d8e676001c642651502349b23f3
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.