ERC-20
Overview
Max Total Supply
100,000,000 WAVE
Holders
162
Market
Price
$0.00 @ 0.000000 S
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
200,000 WAVEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
SonicWave
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-03-01 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.26; library SafeMath { 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 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 sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { function totalSupply() external view returns (uint256); function circulatingSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract Ownable { address internal owner; constructor(address _owner) { owner = _owner; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } function isOwner(address account) public view returns (bool) { return account == owner; } function transferOwnership(address payable adr) public onlyOwner { owner = adr; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IRouter { 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); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract SonicWave is IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Sonic Wave"; string private constant _symbol = "WAVE"; uint8 private constant _decimals = 9; uint256 private _totalSupply = 100000000 * (10 ** _decimals); uint256 private _maxTxAmount = _totalSupply / 50; // to be changed, 100 = 1% uint256 private _maxSellAmount = _totalSupply / 50; // to be changed, 100 = 1% uint256 private _maxWalletToken = _totalSupply / 50; // to be changed, 100 = 1% mapping(address => uint256) _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) public isFeeExempt; mapping(address => bool) public isDividendExempt; mapping(address => bool) public isContractDividendAllowed; IRouter router; address public pair; bool private tradingAllowed = false; uint256 private liquidityFee = 0; uint256 private marketingFee = 0; uint256 private rewardsFee = 500; // 5% uint256 private developmentFee = 0; uint256 private burnFee = 0; uint256 private totalFee = 500; uint256 private sellFee = 500; uint256 private transferFee = 0; uint256 private denominator = 10000; bool private swapEnabled = true; uint256 private swapTimes; bool private swapping; uint256 public excessDividends; uint256 private launchTime; uint256 private swapThreshold = (_totalSupply * 345) / 100000; // swaps every 0.345 % of supply accrued or 3.45M tokens uint256 private _minTokenAmount = (_totalSupply * 10) / 100000; // only swap back when tx is larger than 0.01% of supply or 1M tokens modifier lockTheSwap() { swapping = true; _; swapping = false; } bool public autoRewards = true; uint256 public totalShares; uint256 public totalDividends; uint256 public currentDividends; uint256 public totalDistributed; uint256 internal dividendsPerShare; uint256 internal dividendsPerShareAccuracyFactor = 10 ** 36; address[] shareholders; mapping(address => uint256) shareholderIndexes; mapping(address => uint256) shareholderClaims; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } mapping(address => Share) public shares; uint256 internal currentIndex; uint256 public minPeriod = 5 minutes; uint256 public minDistribution = 1 * (10 ** 9); uint256 public distributorGas = 400000; address internal constant DEAD = 0x000000000000000000000000000000000000dEaD; address internal constant development_receiver = 0xa046ca23De9BbaAA323fEcDe393939744E5AbA9a; address internal constant marketing_receiver = 0x87367dB3645745F10265808ADba5B7b778724e73; address internal constant liquidity_receiver = 0x87367dB3645745F10265808ADba5B7b778724e73; constructor() Ownable(msg.sender) { IRouter _router = IRouter(0x95a7e403d7cF20F675fF9273D66e94d35ba49fA3); address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH()); router = _router; pair = _pair; isFeeExempt[address(this)] = true; isFeeExempt[liquidity_receiver] = true; isFeeExempt[marketing_receiver] = true; isFeeExempt[development_receiver] = true; isFeeExempt[msg.sender] = true; isDividendExempt[address(pair)] = true; isDividendExempt[address(msg.sender)] = true; isDividendExempt[address(this)] = true; isDividendExempt[address(DEAD)] = true; isDividendExempt[address(0)] = true; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } 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 getOwner() external view override returns (address) { return owner; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function isContract(address addr) internal view returns (bool) { uint256 size; assembly { size := extcodesize(addr) } return size > 0; } function setisExempt(address _address, bool _enabled) external onlyOwner { isFeeExempt[_address] = _enabled; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(msg.sender, spender, amount); return true; } function circulatingSupply() public view override returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0))); } function preTxCheck(address sender, address recipient, uint256 amount) internal view { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > uint256(0), "Transfer amount must be greater than zero"); require(amount <= balanceOf(sender), "You are trying to transfer more than your balance"); } function _transfer(address sender, address recipient, uint256 amount) private { preTxCheck(sender, recipient, amount); checkTradingAllowed(sender, recipient); checkMaxWallet(sender, recipient, amount); swapbackCounters(sender, recipient); checkTxLimit(sender, recipient, amount); swapBack(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); processShares(sender, recipient); } function setStructure( uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _rewards, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans ) external onlyOwner { liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; rewardsFee = _rewards; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans; require( totalFee <= denominator.div(10) && sellFee <= denominator.div(10) && transferFee <= denominator.div(10), "totalFee and sellFee cannot be more than 20%" ); } function processShares(address sender, address recipient) internal { if (shares[recipient].amount > 0 && autoRewards) distributeDividend(recipient); if (recipient == pair && shares[sender].amount > 0) { excessDividends = excessDividends.add(getUnpaidEarnings(sender)); } if (!isDividendExempt[sender]) setShare(sender, balanceOf(sender)); if (!isDividendExempt[recipient]) setShare(recipient, balanceOf(recipient)); if (isContract(sender) && !isContractDividendAllowed[sender]) setShare(sender, uint256(0)); if (isContract(recipient) && !isContractDividendAllowed[recipient]) setShare(recipient, uint256(0)); if (autoRewards) process(distributorGas); } function manuallyProcessReward() external { require(msg.sender == development_receiver, "Not authorized"); process(distributorGas.mul(uint256(10))); } function startTrading() external onlyOwner { require(!tradingAllowed, "trading is already open"); tradingAllowed = true; } function removeLimits() external onlyOwner { uint256 newTx = totalSupply(); uint256 newTransfer = totalSupply(); uint256 newWallet = totalSupply(); _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet; } function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner { uint256 newTx = (totalSupply() * _buy) / 10000; uint256 newTransfer = (totalSupply() * _trans) / 10000; uint256 newWallet = (totalSupply() * _wallet) / 10000; _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet; uint256 limit = totalSupply().mul(5).div(1000); require( newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%" ); } function checkTradingAllowed(address sender, address recipient) internal view { if (!isFeeExempt[sender] && !isFeeExempt[recipient]) require(tradingAllowed, "tradingAllowed"); } function checkMaxWallet(address sender, address recipient, uint256 amount) internal view { if (!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)) { require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount."); } } function swapbackCounters(address sender, address recipient) internal { if (recipient == pair && !isFeeExempt[sender]) swapTimes += uint256(1); } function checkTxLimit(address sender, address recipient, uint256 amount) internal view { if (sender != pair) { require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); } require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); } function swapAndLiquify(uint256 tokens) private lockTheSwap { uint256 _denominator = (liquidityFee.add(marketingFee).add(developmentFee).add(rewardsFee)).mul(2); uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator); uint256 toSwap = tokens.sub(tokensToAddLiquidityWith); uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance.sub(initialBalance); uint256 unitBalance = deltaBalance.div(_denominator.sub(liquidityFee)); uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee); if (ETHToAddLiquidityWith > uint256(0)) addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); uint256 rewardsAmount = unitBalance.mul(uint256(2)).mul(rewardsFee); if (rewardsAmount > uint256(0)) deposit(rewardsAmount); uint256 marketingAmount = unitBalance.mul(uint256(2)).mul(marketingFee); if (marketingAmount > uint256(0)) payable(marketing_receiver).transfer(marketingAmount); uint256 aBalance = address(this).balance.sub(currentDividends); if (aBalance > uint256(0)) payable(development_receiver).transfer(aBalance); } function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private { _approve(address(this), address(router), tokenAmount); router.addLiquidityETH{ value: ETHAmount }( address(this), tokenAmount, 0, 0, liquidity_receiver, block.timestamp ); } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp); } function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) { bool aboveMin = amount >= _minTokenAmount; bool aboveThreshold = balanceOf(address(this)) >= swapThreshold; return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= uint256(0) && aboveThreshold; } function swapBack(address sender, address recipient, uint256 amount) internal { if (shouldSwapBack(sender, recipient, amount)) { swapAndLiquify(swapThreshold); swapTimes = uint256(0); } } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { return !isFeeExempt[sender] && !isFeeExempt[recipient]; } function getTotalFee(address sender, address recipient) internal view returns (uint256) { if (recipient == pair) return sellFee; if (sender == pair) return totalFee; return transferFee; } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { if (getTotalFee(sender, recipient) > 0) { uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient)); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); if (burnFee > uint256(0)) _transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee)); return amount.sub(feeAmount); } return amount; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, msg.sender, _allowances[sender][msg.sender].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 setExcess() external { payable(development_receiver).transfer(excessDividends); currentDividends = currentDividends.sub(excessDividends); excessDividends = uint256(0); } function setisDividendExempt(address holder, bool exempt) external onlyOwner { isDividendExempt[holder] = exempt; if (exempt) setShare(holder, 0); else setShare(holder, balanceOf(holder)); } function setisContractDividendAllowed(address holder, bool allowed) external onlyOwner { isContractDividendAllowed[holder] = allowed; if (!allowed) setShare(holder, 0); else setShare(holder, balanceOf(holder)); } function setShare(address shareholder, uint256 amount) internal { if (amount > 0 && shares[shareholder].amount == 0) addShareholder(shareholder); else if (amount == 0 && shares[shareholder].amount > 0) removeShareholder(shareholder); totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit(uint256 amountETH) internal { currentDividends += amountETH; totalDividends += amountETH; dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amountETH).div(totalShares)); } function process(uint256 gas) internal { uint256 shareholderCount = shareholders.length; if (shareholderCount == 0) return; uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while (gasUsed < gas && iterations < shareholderCount) { if (currentIndex >= shareholderCount) currentIndex = 0; if (shouldDistribute(shareholders[currentIndex])) { distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function rescueERC20(address _address, uint256 _amount) external { require(msg.sender == development_receiver, "Not authorized"); IERC20(_address).transfer(development_receiver, _amount); } function rescueETH() external onlyOwner { payable(msg.sender).transfer(address(this).balance); } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function totalRewardsDistributed(address _wallet) external view returns (uint256) { address shareholder = _wallet; return uint256(shares[shareholder].totalRealised); } function distributeDividend(address shareholder) internal { if (shares[shareholder].amount == 0) return; uint256 amount = getUnpaidEarnings(shareholder); if (amount > 0) { totalDistributed = totalDistributed.add(amount); payable(shareholder).transfer(amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); currentDividends -= amount; } } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if (shares[shareholder].amount == 0) return 0; uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if (shareholderTotalDividends <= shareholderTotalExcluded) return 0; return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length - 1]; shareholderIndexes[shareholders[shareholders.length - 1]] = shareholderIndexes[shareholder]; shareholders.pop(); } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external onlyOwner { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setDistributionGas(uint256 _distributorGas) external onlyOwner { distributorGas = _distributorGas; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":"address","name":"owner","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":"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":"autoRewards","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":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"excessDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isContractDividendAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manuallyProcessReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"setDistributionGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setExcess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_rewards","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"setisContractDividendAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"totalRewardsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526100106009600a610501565b61001e906305f5e100610516565b6001556032600154610030919061052d565b6002556032600154610042919061052d565b6003556032600154610054919061052d565b600455600b805460ff60a01b191690555f600c819055600d8190556101f4600e819055600f829055601082905560118190556012556013556127106014556015805460ff1916600190811790915554620186a0906100b490610159610516565b6100be919061052d565b601a55620186a0600154600a6100d49190610516565b6100de919061052d565b601b55601c805460ff191660011790556ec097ce7bc90715b34b9f100000000060225561012c602855633b9aca0060295562061a80602a55348015610121575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b815290517395a7e403d7cf20f675ff9273d66e94d35ba49fa39291839163c45a0155916004808201926020929091908290030181865afa158015610185573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a9919061054c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101f4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610218919061054c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610262573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610286919061054c565b600a80546001600160a01b038581166001600160a01b031992831617909255600b80548484169216919091178155305f818152600760209081526040808320805460ff1990811660019081179092557fea5152fc555fd9a4716a218ea95562fbdaa66df5d7d56e94c1036e100982423f80548216831790557fee6540ddac3e49e64ad28ba1d634aa64b86b5d94c646f493ad3d27b41eafc827805482168317905533808652838620805483168417905596549097168452600883528184208054881682179055858452818420805488168217905593835280832080548716851790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548716851790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054909616841790955591548382526005835284822081905593519384529394509092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050610572565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156104575780850481111561043b5761043b610408565b600184161561044957908102905b60019390931c928002610420565b935093915050565b5f8261046d575060016104fb565b8161047957505f6104fb565b816001811461048f5760028114610499576104b5565b60019150506104fb565b60ff8411156104aa576104aa610408565b50506001821b6104fb565b5060208310610133831016604e8410600b84101617156104d8575081810a6104fb565b6104e45f19848461041c565b805f19048211156104f7576104f7610408565b0290505b92915050565b5f61050f60ff84168361045f565b9392505050565b80820281158282048414176104fb576104fb610408565b5f8261054757634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561055c575f80fd5b81516001600160a01b038116811461050f575f80fd5b6127dc8061057f5f395ff3fe60806040526004361061024c575f3560e01c806360e7196211610134578063a9059cbb116100b3578063dd62ed3e11610078578063dd62ed3e1461070c578063e2d6f94c14610750578063ef43b02b1461076f578063efca2eed1461078e578063f2fde38b146107a3578063ffd49c84146107c2575f80fd5b8063a9059cbb14610638578063ac3f0b8c14610657578063c0c493941461066b578063ca89b89914610680578063ce7c2ac2146106b7575f80fd5b80638cd4426d116100f95780638cd4426d146105a55780639358928b146105c457806395d89b41146105d8578063997664d714610604578063a8aa1b3114610619575f80fd5b806360e719621461051457806369d814681461052957806370a0823114610542578063751039fc14610561578063893d20e814610575575f80fd5b8063293230b8116101cb5780633773eafb116101905780633773eafb1461045b5780633a98ef391461046f5780633f4218e0146104845780634355855a146104b257806348ff2b8b146104e05780634fab0ae8146104ff575f80fd5b8063293230b8146103c15780632d48e896146103d55780632f54bf6e146103f4578063313ce5671461042157806334c5d2ce1461043c575f80fd5b80631de3585c116102115780631de3585c1461032257806320800a001461034157806323b872dd1461035557806325e30cc91461037457806328fd3198146103a2575f80fd5b80630655fcff1461025757806306fdde031461027857806308e20e1f146102bc578063095ea7b3146102df57806318160ddd1461030e575f80fd5b3661025357005b5f80fd5b348015610262575f80fd5b506102766102713660046123f1565b6107d7565b005b348015610283575f80fd5b5060408051808201909152600a815269536f6e6963205761766560b01b60208201525b6040516102b39190612408565b60405180910390f35b3480156102c7575f80fd5b506102d1601f5481565b6040519081526020016102b3565b3480156102ea575f80fd5b506102fe6102f9366004612451565b61080e565b60405190151581526020016102b3565b348015610319575f80fd5b506001546102d1565b34801561032d575f80fd5b5061027661033c366004612488565b610824565b34801561034c575f80fd5b50610276610895565b348015610360575f80fd5b506102fe61036f3660046124bf565b6108ea565b34801561037f575f80fd5b506102fe61038e3660046124fd565b60096020525f908152604090205460ff1681565b3480156103ad575f80fd5b506102d16103bc3660046124fd565b610952565b3480156103cc575f80fd5b506102766109d8565b3480156103e0575f80fd5b506102766103ef366004612518565b610a70565b3480156103ff575f80fd5b506102fe61040e3660046124fd565b5f546001600160a01b0391821691161490565b34801561042c575f80fd5b50604051600981526020016102b3565b348015610447575f80fd5b50610276610456366004612538565b610aa4565b348015610466575f80fd5b50610276610bf3565b34801561047a575f80fd5b506102d1601d5481565b34801561048f575f80fd5b506102fe61049e3660046124fd565b60076020525f908152604090205460ff1681565b3480156104bd575f80fd5b506102fe6104cc3660046124fd565b60086020525f908152604090205460ff1681565b3480156104eb575f80fd5b506102766104fa366004612488565b610c4b565b34801561050a575f80fd5b506102d160295481565b34801561051f575f80fd5b506102d1602a5481565b348015610534575f80fd5b50601c546102fe9060ff1681565b34801561054d575f80fd5b506102d161055c3660046124fd565b610c9e565b34801561056c575f80fd5b50610276610cb8565b348015610580575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102b3565b3480156105b0575f80fd5b506102766105bf366004612451565b610d12565b3480156105cf575f80fd5b506102d1610ded565b3480156105e3575f80fd5b506040805180820190915260048152635741564560e01b60208201526102a6565b34801561060f575f80fd5b506102d1601e5481565b348015610624575f80fd5b50600b5461058d906001600160a01b031681565b348015610643575f80fd5b506102fe610652366004612451565b610e1c565b348015610662575f80fd5b50610276610e28565b348015610676575f80fd5b506102d160185481565b34801561068b575f80fd5b506102d161069a3660046124fd565b6001600160a01b03165f9081526026602052604090206002015490565b3480156106c2575f80fd5b506106f16106d13660046124fd565b60266020525f908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102b3565b348015610717575f80fd5b506102d1610726366004612561565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b34801561075b575f80fd5b5061027661076a36600461258d565b610e95565b34801561077a575f80fd5b50610276610789366004612488565b610f9a565b348015610799575f80fd5b506102d160205481565b3480156107ae575f80fd5b506102766107bd3660046124fd565b610ff9565b3480156107cd575f80fd5b506102d160285481565b5f546001600160a01b031633146108095760405162461bcd60e51b8152600401610800906125dd565b60405180910390fd5b602a55565b5f61081a338484611075565b5060015b92915050565b5f546001600160a01b0316331461084d5760405162461bcd60e51b8152600401610800906125dd565b6001600160a01b0382165f908152600960205260409020805460ff1916821515179055806108835761087f825f611198565b5050565b61087f8261089084610c9e565b611198565b5f546001600160a01b031633146108be5760405162461bcd60e51b8152600401610800906125dd565b60405133904780156108fc02915f818181858888f193505050501580156108e7573d5f803e3d5ffd5b50565b5f6108f68484846112cb565b61094784336109428560405180606001604052806028815260200161277f602891396001600160a01b038a165f90815260066020908152604080832033845290915290205491906113f7565b611075565b5060015b9392505050565b6001600160a01b0381165f90815260266020526040812054810361097757505f919050565b6001600160a01b0382165f9081526026602052604081205461099890611422565b6001600160a01b0384165f908152602660205260409020600101549091508082116109c657505f9392505050565b6109d0828261143e565b949350505050565b5f546001600160a01b03163314610a015760405162461bcd60e51b8152600401610800906125dd565b600b54600160a01b900460ff1615610a5b5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610800565b600b805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610a995760405162461bcd60e51b8152600401610800906125dd565b602891909155602955565b5f546001600160a01b03163314610acd5760405162461bcd60e51b8152600401610800906125dd565b5f61271084610adb60015490565b610ae59190612611565b610aef9190612628565b90505f61271084610aff60015490565b610b099190612611565b610b139190612628565b90505f61271084610b2360015490565b610b2d9190612611565b610b379190612628565b60028490556003839055600481905590505f610b696103e8610b636005610b5d60015490565b90611449565b90611454565b9050808410158015610b7b5750808310155b8015610b875750808210155b610bea5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610800565b50505050505050565b60185460405173a046ca23de9bbaaa323fecde393939744e5aba9a9180156108fc02915f818181858888f19350505050158015610c32573d5f803e3d5ffd5b50601854601f54610c429161143e565b601f555f601855565b5f546001600160a01b03163314610c745760405162461bcd60e51b8152600401610800906125dd565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03165f9081526005602052604090205490565b5f546001600160a01b03163314610ce15760405162461bcd60e51b8152600401610800906125dd565b5f610ceb60015490565b90505f610cf760015490565b90505f610d0360015490565b60029390935550600355600455565b3373a046ca23de9bbaaa323fecde393939744e5aba9a14610d665760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610800565b60405163a9059cbb60e01b815273a046ca23de9bbaaa323fecde393939744e5aba9a6004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610dc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de89190612647565b505050565b5f610e17610dfa5f610c9e565b610e11610e0861dead610c9e565b6001549061143e565b9061143e565b905090565b5f61081a3384846112cb565b3373a046ca23de9bbaaa323fecde393939744e5aba9a14610e7c5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610800565b602a54610e9390610e8e90600a611449565b61145f565b565b5f546001600160a01b03163314610ebe5760405162461bcd60e51b8152600401610800906125dd565b600c889055600d8790556010869055600e859055600f849055601183905560128290556013819055601454610ef490600a611454565b60115411158015610f145750601454610f0e90600a611454565b60125411155b8015610f2f5750601454610f2990600a611454565b60135411155b610f905760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610800565b5050505050505050565b5f546001600160a01b03163314610fc35760405162461bcd60e51b8152600401610800906125dd565b6001600160a01b0382165f908152600860205260409020805460ff191682158015919091179091556108835761087f825f611198565b5f546001600160a01b031633146110225760405162461bcd60e51b8152600401610800906125dd565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166110d75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610800565b6001600160a01b0382166111385760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610800565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f811180156111bc57506001600160a01b0382165f90815260266020526040902054155b1561122157602380546001600160a01b0384165f818152602460205260408120839055600183018455929092527fd57b2b5166478fd4318d2acc6cc2c704584312bdd8781b32d5d06abda57f42300180546001600160a01b0319169091179055611253565b8015801561124557506001600160a01b0382165f9081526026602052604090205415155b156112535761125382611545565b6001600160a01b0382165f90815260266020526040902054601d5461128391839161127d9161143e565b90611655565b601d556001600160a01b0382165f9081526026602052604090208190556112a981611422565b6001600160a01b039092165f9081526026602052604090206001019190915550565b6112d6838383611660565b6112e083836117f9565b6112eb838383611888565b6112f58383611971565b6113008383836119c6565b61130b838383611aef565b6001600160a01b0383165f9081526005602052604090205461132d908261143e565b6001600160a01b0384165f908152600560205260408120919091556113528484611b13565b61135c5781611367565b611367848484611b57565b6001600160a01b0384165f9081526005602052604090205490915061138c9082611655565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113df9085815260200190565b60405180910390a36113f18484611c41565b50505050565b5f818484111561141a5760405162461bcd60e51b81526004016108009190612408565b505050900390565b5f61081e602254610b636021548561144990919063ffffffff16565b5f61094b8284612662565b5f61094b8284612611565b5f61094b8284612628565b6023545f81900361146e575050565b5f805a90505f5b848310801561148357508381105b1561153e578360275410611496575f6027555b6114c76023602754815481106114ae576114ae612675565b5f918252602090912001546001600160a01b0316611da4565b156114fd576114fd6023602754815481106114e4576114e4612675565b5f918252602090912001546001600160a01b0316611de8565b61151261150b5a849061143e565b8490611655565b92505a602780549193505f61152683612689565b9190505550808061153690612689565b915050611475565b5050505050565b6023805461155590600190612662565b8154811061156557611565612675565b5f9182526020808320909101546001600160a01b03848116845260249092526040909220546023805492909316929181106115a2576115a2612675565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602491829052604081205460238054919392916115ed90600190612662565b815481106115fd576115fd612675565b5f9182526020808320909101546001600160a01b031683528201929092526040019020556023805480611632576116326126a1565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b5f61094b82846126b5565b6001600160a01b0383166116c45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610800565b6001600160a01b0382166117265760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610800565b5f81116117875760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610800565b61179083610c9e565b811115610de85760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610800565b6001600160a01b0382165f9081526007602052604090205460ff1615801561183957506001600160a01b0381165f9081526007602052604090205460ff16155b1561087f57600b54600160a01b900460ff1661087f5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610800565b6001600160a01b0383165f9081526007602052604090205460ff161580156118c857506001600160a01b0382165f9081526007602052604090205460ff16155b80156118e25750600b546001600160a01b03838116911614155b80156118f957506001600160a01b03821661dead14155b15610de8576004546001600160a01b0383165f908152600560205260409020546119239083611655565b1115610de85760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610800565b600b546001600160a01b0382811691161480156119a657506001600160a01b0382165f9081526007602052604090205460ff16155b1561087f57600160165f8282546119bd91906126b5565b90915550505050565b600b546001600160a01b03848116911614611a655760035481111580611a0357506001600160a01b0383165f9081526007602052604090205460ff165b80611a2557506001600160a01b0382165f9081526007602052604090205460ff165b611a655760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610800565b60025481111580611a8d57506001600160a01b0383165f9081526007602052604090205460ff165b80611aaf57506001600160a01b0382165f9081526007602052604090205460ff165b610de85760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610800565b611afa838383611eea565b15610de857611b0a601a54611f93565b5f601655505050565b6001600160a01b0382165f9081526007602052604081205460ff1615801561094b5750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f80611b638585612148565b1115611c3a575f611b85611b778686612148565b601454610b5d908690611454565b305f90815260056020526040902054909150611ba19082611655565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611bf19085815260200190565b60405180910390a360105415611c2857611c283061dead611c23601054610b5d6014548961145490919063ffffffff16565b6112cb565b611c32838261143e565b91505061094b565b5092915050565b6001600160a01b0381165f9081526026602052604090205415801590611c695750601c5460ff165b15611c7757611c7781611de8565b600b546001600160a01b038281169116148015611caa57506001600160a01b0382165f9081526026602052604090205415155b15611cc857611cc4611cbb83610952565b60185490611655565b6018555b6001600160a01b0382165f9081526008602052604090205460ff16611cf457611cf48261089084610c9e565b6001600160a01b0381165f9081526008602052604090205460ff16611d2057611d208161089083610c9e565b813b15158015611d4857506001600160a01b0382165f9081526009602052604090205460ff16155b15611d5757611d57825f611198565b803b15158015611d7f57506001600160a01b0381165f9081526009602052604090205460ff16155b15611d8e57611d8e815f611198565b601c5460ff161561087f5761087f602a5461145f565b6028546001600160a01b0382165f9081526025602052604081205490914291611dcd91906126b5565b10801561081e5750602954611de183610952565b1192915050565b6001600160a01b0381165f908152602660205260408120549003611e095750565b5f611e1382610952565b9050801561087f57602054611e289082611655565b6020556040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015611e5e573d5f803e3d5ffd5b506001600160a01b0382165f9081526025602090815260408083204290556026909152902060020154611e919082611655565b6001600160a01b0383165f908152602660205260409020600281019190915554611eba90611422565b6001600160a01b0383165f90815260266020526040812060010191909155601f80548392906119bd908490612662565b5f80601b5483101590505f601a54611f0130610c9e565b601754911115915060ff16158015611f1b575060155460ff165b8015611f305750600b54600160a01b900460ff165b8015611f395750815b8015611f5d57506001600160a01b0386165f9081526007602052604090205460ff16155b8015611f765750600b546001600160a01b038681169116145b8015611f80575060015b8015611f895750805b9695505050505050565b6017805460ff19166001179055600e54600f54600d54600c545f93611fc693600293610b5d9361127d9291839190611655565b90505f611fe282610b63600c548661144990919063ffffffff16565b90505f611fef848361143e565b905047611ffb82612192565b5f612006478361143e565b90505f612028612021600c548861143e90919063ffffffff16565b8390611454565b90505f612040600c548361144990919063ffffffff16565b905080156120525761205286826122e2565b600e545f9061206690610b5d856002611449565b90508015612077576120778161239c565b600d545f9061208b90610b5d866002611449565b905080156120d3576040517387367db3645745f10265808adba5b7b778724e739082156108fc029083905f818181858888f193505050501580156120d1573d5f803e3d5ffd5b505b5f6120e9601f544761143e90919063ffffffff16565b905080156121315760405173a046ca23de9bbaaa323fecde393939744e5aba9a9082156108fc029083905f818181858888f1935050505015801561212f573d5f803e3d5ffd5b505b50506017805460ff19169055505050505050505050565b600b545f906001600160a01b0390811690831603612169575060125461081e565b600b546001600160a01b0390811690841603612188575060115461081e565b5060135492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106121c5576121c5612675565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561221c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061224091906126c8565b8160018151811061225357612253612675565b6001600160a01b039283166020918202929092010152600a546122799130911684611075565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906122b19085905f908690309042906004016126e3565b5f604051808303815f87803b1580156122c8575f80fd5b505af11580156122da573d5f803e3d5ffd5b505050505050565b600a546122fa9030906001600160a01b031684611075565b600a5460405163f305d71960e01b8152306004820152602481018490525f6044820181905260648201527387367db3645745f10265808adba5b7b778724e7360848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612377573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061153e9190612753565b80601f5f8282546123ad91906126b5565b9250508190555080601e5f8282546123c591906126b5565b9091555050601d546022546123eb916123e291610b639085611449565b60215490611655565b60215550565b5f60208284031215612401575f80fd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146108e7575f80fd5b5f8060408385031215612462575f80fd5b823561246d8161243d565b946020939093013593505050565b80151581146108e7575f80fd5b5f8060408385031215612499575f80fd5b82356124a48161243d565b915060208301356124b48161247b565b809150509250929050565b5f805f606084860312156124d1575f80fd5b83356124dc8161243d565b925060208401356124ec8161243d565b929592945050506040919091013590565b5f6020828403121561250d575f80fd5b813561094b8161243d565b5f8060408385031215612529575f80fd5b50508035926020909101359150565b5f805f6060848603121561254a575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215612572575f80fd5b823561257d8161243d565b915060208301356124b48161243d565b5f805f805f805f80610100898b0312156125a5575f80fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761081e5761081e6125fd565b5f8261264257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612657575f80fd5b815161094b8161247b565b8181038181111561081e5761081e6125fd565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161269a5761269a6125fd565b5060010190565b634e487b7160e01b5f52603160045260245ffd5b8082018082111561081e5761081e6125fd565b5f602082840312156126d8575f80fd5b815161094b8161243d565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156127335783516001600160a01b031683526020938401939092019160010161270c565b50506001600160a01b039590951660608401525050608001529392505050565b5f805f60608486031215612765575f80fd5b505081516020830151604090930151909492935091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fa17d5381a735568a5f7143e7b43d03b0d4d58a592d543125b01bd1ce6bb83d664736f6c634300081a0033
Deployed Bytecode
0x60806040526004361061024c575f3560e01c806360e7196211610134578063a9059cbb116100b3578063dd62ed3e11610078578063dd62ed3e1461070c578063e2d6f94c14610750578063ef43b02b1461076f578063efca2eed1461078e578063f2fde38b146107a3578063ffd49c84146107c2575f80fd5b8063a9059cbb14610638578063ac3f0b8c14610657578063c0c493941461066b578063ca89b89914610680578063ce7c2ac2146106b7575f80fd5b80638cd4426d116100f95780638cd4426d146105a55780639358928b146105c457806395d89b41146105d8578063997664d714610604578063a8aa1b3114610619575f80fd5b806360e719621461051457806369d814681461052957806370a0823114610542578063751039fc14610561578063893d20e814610575575f80fd5b8063293230b8116101cb5780633773eafb116101905780633773eafb1461045b5780633a98ef391461046f5780633f4218e0146104845780634355855a146104b257806348ff2b8b146104e05780634fab0ae8146104ff575f80fd5b8063293230b8146103c15780632d48e896146103d55780632f54bf6e146103f4578063313ce5671461042157806334c5d2ce1461043c575f80fd5b80631de3585c116102115780631de3585c1461032257806320800a001461034157806323b872dd1461035557806325e30cc91461037457806328fd3198146103a2575f80fd5b80630655fcff1461025757806306fdde031461027857806308e20e1f146102bc578063095ea7b3146102df57806318160ddd1461030e575f80fd5b3661025357005b5f80fd5b348015610262575f80fd5b506102766102713660046123f1565b6107d7565b005b348015610283575f80fd5b5060408051808201909152600a815269536f6e6963205761766560b01b60208201525b6040516102b39190612408565b60405180910390f35b3480156102c7575f80fd5b506102d1601f5481565b6040519081526020016102b3565b3480156102ea575f80fd5b506102fe6102f9366004612451565b61080e565b60405190151581526020016102b3565b348015610319575f80fd5b506001546102d1565b34801561032d575f80fd5b5061027661033c366004612488565b610824565b34801561034c575f80fd5b50610276610895565b348015610360575f80fd5b506102fe61036f3660046124bf565b6108ea565b34801561037f575f80fd5b506102fe61038e3660046124fd565b60096020525f908152604090205460ff1681565b3480156103ad575f80fd5b506102d16103bc3660046124fd565b610952565b3480156103cc575f80fd5b506102766109d8565b3480156103e0575f80fd5b506102766103ef366004612518565b610a70565b3480156103ff575f80fd5b506102fe61040e3660046124fd565b5f546001600160a01b0391821691161490565b34801561042c575f80fd5b50604051600981526020016102b3565b348015610447575f80fd5b50610276610456366004612538565b610aa4565b348015610466575f80fd5b50610276610bf3565b34801561047a575f80fd5b506102d1601d5481565b34801561048f575f80fd5b506102fe61049e3660046124fd565b60076020525f908152604090205460ff1681565b3480156104bd575f80fd5b506102fe6104cc3660046124fd565b60086020525f908152604090205460ff1681565b3480156104eb575f80fd5b506102766104fa366004612488565b610c4b565b34801561050a575f80fd5b506102d160295481565b34801561051f575f80fd5b506102d1602a5481565b348015610534575f80fd5b50601c546102fe9060ff1681565b34801561054d575f80fd5b506102d161055c3660046124fd565b610c9e565b34801561056c575f80fd5b50610276610cb8565b348015610580575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102b3565b3480156105b0575f80fd5b506102766105bf366004612451565b610d12565b3480156105cf575f80fd5b506102d1610ded565b3480156105e3575f80fd5b506040805180820190915260048152635741564560e01b60208201526102a6565b34801561060f575f80fd5b506102d1601e5481565b348015610624575f80fd5b50600b5461058d906001600160a01b031681565b348015610643575f80fd5b506102fe610652366004612451565b610e1c565b348015610662575f80fd5b50610276610e28565b348015610676575f80fd5b506102d160185481565b34801561068b575f80fd5b506102d161069a3660046124fd565b6001600160a01b03165f9081526026602052604090206002015490565b3480156106c2575f80fd5b506106f16106d13660046124fd565b60266020525f908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102b3565b348015610717575f80fd5b506102d1610726366004612561565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b34801561075b575f80fd5b5061027661076a36600461258d565b610e95565b34801561077a575f80fd5b50610276610789366004612488565b610f9a565b348015610799575f80fd5b506102d160205481565b3480156107ae575f80fd5b506102766107bd3660046124fd565b610ff9565b3480156107cd575f80fd5b506102d160285481565b5f546001600160a01b031633146108095760405162461bcd60e51b8152600401610800906125dd565b60405180910390fd5b602a55565b5f61081a338484611075565b5060015b92915050565b5f546001600160a01b0316331461084d5760405162461bcd60e51b8152600401610800906125dd565b6001600160a01b0382165f908152600960205260409020805460ff1916821515179055806108835761087f825f611198565b5050565b61087f8261089084610c9e565b611198565b5f546001600160a01b031633146108be5760405162461bcd60e51b8152600401610800906125dd565b60405133904780156108fc02915f818181858888f193505050501580156108e7573d5f803e3d5ffd5b50565b5f6108f68484846112cb565b61094784336109428560405180606001604052806028815260200161277f602891396001600160a01b038a165f90815260066020908152604080832033845290915290205491906113f7565b611075565b5060015b9392505050565b6001600160a01b0381165f90815260266020526040812054810361097757505f919050565b6001600160a01b0382165f9081526026602052604081205461099890611422565b6001600160a01b0384165f908152602660205260409020600101549091508082116109c657505f9392505050565b6109d0828261143e565b949350505050565b5f546001600160a01b03163314610a015760405162461bcd60e51b8152600401610800906125dd565b600b54600160a01b900460ff1615610a5b5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610800565b600b805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610a995760405162461bcd60e51b8152600401610800906125dd565b602891909155602955565b5f546001600160a01b03163314610acd5760405162461bcd60e51b8152600401610800906125dd565b5f61271084610adb60015490565b610ae59190612611565b610aef9190612628565b90505f61271084610aff60015490565b610b099190612611565b610b139190612628565b90505f61271084610b2360015490565b610b2d9190612611565b610b379190612628565b60028490556003839055600481905590505f610b696103e8610b636005610b5d60015490565b90611449565b90611454565b9050808410158015610b7b5750808310155b8015610b875750808210155b610bea5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610800565b50505050505050565b60185460405173a046ca23de9bbaaa323fecde393939744e5aba9a9180156108fc02915f818181858888f19350505050158015610c32573d5f803e3d5ffd5b50601854601f54610c429161143e565b601f555f601855565b5f546001600160a01b03163314610c745760405162461bcd60e51b8152600401610800906125dd565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03165f9081526005602052604090205490565b5f546001600160a01b03163314610ce15760405162461bcd60e51b8152600401610800906125dd565b5f610ceb60015490565b90505f610cf760015490565b90505f610d0360015490565b60029390935550600355600455565b3373a046ca23de9bbaaa323fecde393939744e5aba9a14610d665760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610800565b60405163a9059cbb60e01b815273a046ca23de9bbaaa323fecde393939744e5aba9a6004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610dc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de89190612647565b505050565b5f610e17610dfa5f610c9e565b610e11610e0861dead610c9e565b6001549061143e565b9061143e565b905090565b5f61081a3384846112cb565b3373a046ca23de9bbaaa323fecde393939744e5aba9a14610e7c5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610800565b602a54610e9390610e8e90600a611449565b61145f565b565b5f546001600160a01b03163314610ebe5760405162461bcd60e51b8152600401610800906125dd565b600c889055600d8790556010869055600e859055600f849055601183905560128290556013819055601454610ef490600a611454565b60115411158015610f145750601454610f0e90600a611454565b60125411155b8015610f2f5750601454610f2990600a611454565b60135411155b610f905760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610800565b5050505050505050565b5f546001600160a01b03163314610fc35760405162461bcd60e51b8152600401610800906125dd565b6001600160a01b0382165f908152600860205260409020805460ff191682158015919091179091556108835761087f825f611198565b5f546001600160a01b031633146110225760405162461bcd60e51b8152600401610800906125dd565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166110d75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610800565b6001600160a01b0382166111385760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610800565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f811180156111bc57506001600160a01b0382165f90815260266020526040902054155b1561122157602380546001600160a01b0384165f818152602460205260408120839055600183018455929092527fd57b2b5166478fd4318d2acc6cc2c704584312bdd8781b32d5d06abda57f42300180546001600160a01b0319169091179055611253565b8015801561124557506001600160a01b0382165f9081526026602052604090205415155b156112535761125382611545565b6001600160a01b0382165f90815260266020526040902054601d5461128391839161127d9161143e565b90611655565b601d556001600160a01b0382165f9081526026602052604090208190556112a981611422565b6001600160a01b039092165f9081526026602052604090206001019190915550565b6112d6838383611660565b6112e083836117f9565b6112eb838383611888565b6112f58383611971565b6113008383836119c6565b61130b838383611aef565b6001600160a01b0383165f9081526005602052604090205461132d908261143e565b6001600160a01b0384165f908152600560205260408120919091556113528484611b13565b61135c5781611367565b611367848484611b57565b6001600160a01b0384165f9081526005602052604090205490915061138c9082611655565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113df9085815260200190565b60405180910390a36113f18484611c41565b50505050565b5f818484111561141a5760405162461bcd60e51b81526004016108009190612408565b505050900390565b5f61081e602254610b636021548561144990919063ffffffff16565b5f61094b8284612662565b5f61094b8284612611565b5f61094b8284612628565b6023545f81900361146e575050565b5f805a90505f5b848310801561148357508381105b1561153e578360275410611496575f6027555b6114c76023602754815481106114ae576114ae612675565b5f918252602090912001546001600160a01b0316611da4565b156114fd576114fd6023602754815481106114e4576114e4612675565b5f918252602090912001546001600160a01b0316611de8565b61151261150b5a849061143e565b8490611655565b92505a602780549193505f61152683612689565b9190505550808061153690612689565b915050611475565b5050505050565b6023805461155590600190612662565b8154811061156557611565612675565b5f9182526020808320909101546001600160a01b03848116845260249092526040909220546023805492909316929181106115a2576115a2612675565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602491829052604081205460238054919392916115ed90600190612662565b815481106115fd576115fd612675565b5f9182526020808320909101546001600160a01b031683528201929092526040019020556023805480611632576116326126a1565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b5f61094b82846126b5565b6001600160a01b0383166116c45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610800565b6001600160a01b0382166117265760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610800565b5f81116117875760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610800565b61179083610c9e565b811115610de85760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610800565b6001600160a01b0382165f9081526007602052604090205460ff1615801561183957506001600160a01b0381165f9081526007602052604090205460ff16155b1561087f57600b54600160a01b900460ff1661087f5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610800565b6001600160a01b0383165f9081526007602052604090205460ff161580156118c857506001600160a01b0382165f9081526007602052604090205460ff16155b80156118e25750600b546001600160a01b03838116911614155b80156118f957506001600160a01b03821661dead14155b15610de8576004546001600160a01b0383165f908152600560205260409020546119239083611655565b1115610de85760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610800565b600b546001600160a01b0382811691161480156119a657506001600160a01b0382165f9081526007602052604090205460ff16155b1561087f57600160165f8282546119bd91906126b5565b90915550505050565b600b546001600160a01b03848116911614611a655760035481111580611a0357506001600160a01b0383165f9081526007602052604090205460ff165b80611a2557506001600160a01b0382165f9081526007602052604090205460ff165b611a655760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610800565b60025481111580611a8d57506001600160a01b0383165f9081526007602052604090205460ff165b80611aaf57506001600160a01b0382165f9081526007602052604090205460ff165b610de85760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610800565b611afa838383611eea565b15610de857611b0a601a54611f93565b5f601655505050565b6001600160a01b0382165f9081526007602052604081205460ff1615801561094b5750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f80611b638585612148565b1115611c3a575f611b85611b778686612148565b601454610b5d908690611454565b305f90815260056020526040902054909150611ba19082611655565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611bf19085815260200190565b60405180910390a360105415611c2857611c283061dead611c23601054610b5d6014548961145490919063ffffffff16565b6112cb565b611c32838261143e565b91505061094b565b5092915050565b6001600160a01b0381165f9081526026602052604090205415801590611c695750601c5460ff165b15611c7757611c7781611de8565b600b546001600160a01b038281169116148015611caa57506001600160a01b0382165f9081526026602052604090205415155b15611cc857611cc4611cbb83610952565b60185490611655565b6018555b6001600160a01b0382165f9081526008602052604090205460ff16611cf457611cf48261089084610c9e565b6001600160a01b0381165f9081526008602052604090205460ff16611d2057611d208161089083610c9e565b813b15158015611d4857506001600160a01b0382165f9081526009602052604090205460ff16155b15611d5757611d57825f611198565b803b15158015611d7f57506001600160a01b0381165f9081526009602052604090205460ff16155b15611d8e57611d8e815f611198565b601c5460ff161561087f5761087f602a5461145f565b6028546001600160a01b0382165f9081526025602052604081205490914291611dcd91906126b5565b10801561081e5750602954611de183610952565b1192915050565b6001600160a01b0381165f908152602660205260408120549003611e095750565b5f611e1382610952565b9050801561087f57602054611e289082611655565b6020556040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015611e5e573d5f803e3d5ffd5b506001600160a01b0382165f9081526025602090815260408083204290556026909152902060020154611e919082611655565b6001600160a01b0383165f908152602660205260409020600281019190915554611eba90611422565b6001600160a01b0383165f90815260266020526040812060010191909155601f80548392906119bd908490612662565b5f80601b5483101590505f601a54611f0130610c9e565b601754911115915060ff16158015611f1b575060155460ff165b8015611f305750600b54600160a01b900460ff165b8015611f395750815b8015611f5d57506001600160a01b0386165f9081526007602052604090205460ff16155b8015611f765750600b546001600160a01b038681169116145b8015611f80575060015b8015611f895750805b9695505050505050565b6017805460ff19166001179055600e54600f54600d54600c545f93611fc693600293610b5d9361127d9291839190611655565b90505f611fe282610b63600c548661144990919063ffffffff16565b90505f611fef848361143e565b905047611ffb82612192565b5f612006478361143e565b90505f612028612021600c548861143e90919063ffffffff16565b8390611454565b90505f612040600c548361144990919063ffffffff16565b905080156120525761205286826122e2565b600e545f9061206690610b5d856002611449565b90508015612077576120778161239c565b600d545f9061208b90610b5d866002611449565b905080156120d3576040517387367db3645745f10265808adba5b7b778724e739082156108fc029083905f818181858888f193505050501580156120d1573d5f803e3d5ffd5b505b5f6120e9601f544761143e90919063ffffffff16565b905080156121315760405173a046ca23de9bbaaa323fecde393939744e5aba9a9082156108fc029083905f818181858888f1935050505015801561212f573d5f803e3d5ffd5b505b50506017805460ff19169055505050505050505050565b600b545f906001600160a01b0390811690831603612169575060125461081e565b600b546001600160a01b0390811690841603612188575060115461081e565b5060135492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106121c5576121c5612675565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561221c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061224091906126c8565b8160018151811061225357612253612675565b6001600160a01b039283166020918202929092010152600a546122799130911684611075565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906122b19085905f908690309042906004016126e3565b5f604051808303815f87803b1580156122c8575f80fd5b505af11580156122da573d5f803e3d5ffd5b505050505050565b600a546122fa9030906001600160a01b031684611075565b600a5460405163f305d71960e01b8152306004820152602481018490525f6044820181905260648201527387367db3645745f10265808adba5b7b778724e7360848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612377573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061153e9190612753565b80601f5f8282546123ad91906126b5565b9250508190555080601e5f8282546123c591906126b5565b9091555050601d546022546123eb916123e291610b639085611449565b60215490611655565b60215550565b5f60208284031215612401575f80fd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146108e7575f80fd5b5f8060408385031215612462575f80fd5b823561246d8161243d565b946020939093013593505050565b80151581146108e7575f80fd5b5f8060408385031215612499575f80fd5b82356124a48161243d565b915060208301356124b48161247b565b809150509250929050565b5f805f606084860312156124d1575f80fd5b83356124dc8161243d565b925060208401356124ec8161243d565b929592945050506040919091013590565b5f6020828403121561250d575f80fd5b813561094b8161243d565b5f8060408385031215612529575f80fd5b50508035926020909101359150565b5f805f6060848603121561254a575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215612572575f80fd5b823561257d8161243d565b915060208301356124b48161243d565b5f805f805f805f80610100898b0312156125a5575f80fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761081e5761081e6125fd565b5f8261264257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612657575f80fd5b815161094b8161247b565b8181038181111561081e5761081e6125fd565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161269a5761269a6125fd565b5060010190565b634e487b7160e01b5f52603160045260245ffd5b8082018082111561081e5761081e6125fd565b5f602082840312156126d8575f80fd5b815161094b8161243d565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156127335783516001600160a01b031683526020938401939092019160010161270c565b50506001600160a01b039590951660608401525050608001529392505050565b5f805f60608486031215612765575f80fd5b505081516020830151604090930151909492935091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fa17d5381a735568a5f7143e7b43d03b0d4d58a592d543125b01bd1ce6bb83d664736f6c634300081a0033
Deployed Bytecode Sourcemap
5330:19742:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24946:123;;;;;;;;;;-1:-1:-1;24946:123:0;;;;;:::i;:::-;;:::i;:::-;;9183:83;;;;;;;;;;-1:-1:-1;9253:5:0;;;;;;;;;;;;-1:-1:-1;;;9253:5:0;;;;9183:83;;;;;;;:::i;:::-;;;;;;;;7242:31;;;;;;;;;;;;;;;;;;;814:25:1;;;802:2;787:18;7242:31:0;668:177:1;10449:159:0;;;;;;;;;;-1:-1:-1;10449:159:0;;;;;:::i;:::-;;:::i;:::-;;;1523:14:1;;1516:22;1498:41;;1486:2;1471:18;10449:159:0;1358:187:1;9560:100:0;;;;;;;;;;-1:-1:-1;9640:12:0;;9560:100;;20519:244;;;;;;;;;;-1:-1:-1;20519:244:0;;;;;:::i;:::-;;:::i;22434:110::-;;;;;;;;;;;;;:::i;19387:333::-;;;;;;;;;;-1:-1:-1;19387:333:0;;;;;:::i;:::-;;:::i;6092:57::-;;;;;;;;;;-1:-1:-1;6092:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23624:469;;;;;;;;;;-1:-1:-1;23624:469:0;;;;;:::i;:::-;;:::i;13633:145::-;;;;;;;;;;;;;:::i;24754:184::-;;;;;;;;;;-1:-1:-1;24754:184:0;;;;;:::i;:::-;;:::i;3585:103::-;;;;;;;;;;-1:-1:-1;3585:103:0;;;;;:::i;:::-;3640:4;3675:5;-1:-1:-1;;;;;3664:16:0;;;3675:5;;3664:16;;3585:103;9369:83;;;;;;;;;;-1:-1:-1;9369:83:0;;5543:1;3318:36:1;;3306:2;3291:18;9369:83:0;3176:184:1;14083:615:0;;;;;;;;;;-1:-1:-1;14083:615:0;;;;;:::i;:::-;;:::i;20071:210::-;;;;;;;;;;;;;:::i;7173:26::-;;;;;;;;;;;;;;;;5987:43;;;;;;;;;;-1:-1:-1;5987:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6037:48;;;;;;;;;;-1:-1:-1;6037:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10317:124;;;;;;;;;;-1:-1:-1;10317:124:0;;;;;:::i;:::-;;:::i;7804:46::-;;;;;;;;;;;;;;;;7857:38;;;;;;;;;;;;;;;;7136:30;;;;;;;;;;-1:-1:-1;7136:30:0;;;;;;;;9668:119;;;;;;;;;;-1:-1:-1;9668:119:0;;;;;:::i;:::-;;:::i;13786:289::-;;;;;;;;;;;;;:::i;9460:92::-;;;;;;;;;;-1:-1:-1;9512:7:0;9539:5;-1:-1:-1;;;;;9539:5:0;9460:92;;;-1:-1:-1;;;;;4000:32:1;;;3982:51;;3970:2;3955:18;9460:92:0;3836:203:1;22214:212:0;;;;;;;;;;-1:-1:-1;22214:212:0;;;;;:::i;:::-;;:::i;10616:154::-;;;;;;;;;;;;;:::i;9274:87::-;;;;;;;;;;-1:-1:-1;9346:7:0;;;;;;;;;;;;-1:-1:-1;;;9346:7:0;;;;9274:87;;7206:29;;;;;;;;;;;;;;;;6179:19;;;;;;;;;;-1:-1:-1;6179:19:0;;;;-1:-1:-1;;;;;6179:19:0;;;9795:165;;;;;;;;;;-1:-1:-1;9795:165:0;;;;;:::i;:::-;;:::i;13452:173::-;;;;;;;;;;;;;:::i;6696:30::-;;;;;;;;;;;;;;;;22787:190;;;;;;;;;;-1:-1:-1;22787:190:0;;;;;:::i;:::-;-1:-1:-1;;;;;22935:19:0;22860:7;22935:19;;;:6;:19;;;;;:33;;;;22787:190;7679:39;;;;;;;;;;-1:-1:-1;7679:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4246:25:1;;;4302:2;4287:18;;4280:34;;;;4330:18;;;4323:34;4234:2;4219:18;7679:39:0;4044:319:1;9968:143:0;;;;;;;;;;-1:-1:-1;9968:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;10076:18:0;;;10049:7;10076:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9968:143;11961:733;;;;;;;;;;-1:-1:-1;11961:733:0;;;;;:::i;:::-;;:::i;20289:222::-;;;;;;;;;;-1:-1:-1;20289:222:0;;;;;:::i;:::-;;:::i;7280:31::-;;;;;;;;;;;;;;;;3696:136;;;;;;;;;;-1:-1:-1;3696:136:0;;;;;:::i;:::-;;:::i;7761:36::-;;;;;;;;;;;;;;;;24946:123;3640:4;3675:5;-1:-1:-1;;;;;3675:5:0;3535:10;3664:16;3519:38;;;;-1:-1:-1;;;3519:38:0;;;;;;;:::i;:::-;;;;;;;;;25029:14:::1;:32:::0;24946:123::o;10449:159::-;10524:4;10541:37;10550:10;10562:7;10571:6;10541:8;:37::i;:::-;-1:-1:-1;10596:4:0;10449:159;;;;;:::o;20519:244::-;3640:4;3675:5;-1:-1:-1;;;;;3675:5:0;3535:10;3664:16;3519:38;;;;-1:-1:-1;;;3519:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20617:33:0;::::1;;::::0;;;:25:::1;:33;::::0;;;;:43;;-1:-1:-1;;20617:43:0::1;::::0;::::1;;;::::0;;;20671:84:::1;;20685:19;20694:6;20702:1;20685:8;:19::i;:::-;20519:244:::0;;:::o;20671:84::-:1;20720:35;20729:6;20737:17;20747:6;20737:9;:17::i;:::-;20720:8;:35::i;22434:110::-:0;3640:4;3675:5;-1:-1:-1;;;;;3675:5:0;3535:10;3664:16;3519:38;;;;-1:-1:-1;;;3519:38:0;;;;;;;:::i;:::-;22485:51:::1;::::0;22493:10:::1;::::0;22514:21:::1;22485:51:::0;::::1;;;::::0;::::1;::::0;;;22514:21;22493:10;22485:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22434:110::o:0;19387:333::-;19485:4;19502:36;19512:6;19520:9;19531:6;19502:9;:36::i;:::-;19549:141;19572:6;19580:10;19592:87;19628:6;19592:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19592:19:0;;;;;;:11;:19;;;;;;;;19612:10;19592:31;;;;;;;;;:87;:35;:87::i;:::-;19549:8;:141::i;:::-;-1:-1:-1;19708:4:0;19387:333;;;;;;:::o;23624:469::-;-1:-1:-1;;;;;23717:19:0;;23693:7;23717:19;;;:6;:19;;;;;:26;:31;;23713:45;;-1:-1:-1;23757:1:0;;23624:469;-1:-1:-1;23624:469:0:o;23713:45::-;-1:-1:-1;;;;;23828:19:0;;23769:33;23828:19;;;:6;:19;;;;;:26;23805:50;;:22;:50::i;:::-;-1:-1:-1;;;;;23901:19:0;;23866:32;23901:19;;;:6;:19;;;;;:33;;;23769:86;;-1:-1:-1;23949:53:0;;;23945:67;;-1:-1:-1;24011:1:0;;23624:469;-1:-1:-1;;;23624:469:0:o;23945:67::-;24030:55;:25;24060:24;24030:29;:55::i;:::-;24023:62;23624:469;-1:-1:-1;;;;23624:469:0:o;13633:145::-;3640:4;3675:5;-1:-1:-1;;;;;3675:5:0;3535:10;3664:16;3519:38;;;;-1:-1:-1;;;3519:38:0;;;;;;;:::i;:::-;13696:14:::1;::::0;-1:-1:-1;;;13696:14:0;::::1;;;13695:15;13687:51;;;::::0;-1:-1:-1;;;13687:51:0;;6633:2:1;13687:51:0::1;::::0;::::1;6615:21:1::0;6672:2;6652:18;;;6645:30;6711:25;6691:18;;;6684:53;6754:18;;13687:51:0::1;6431:347:1::0;13687:51:0::1;13749:14;:21:::0;;-1:-1:-1;;;;13749:21:0::1;-1:-1:-1::0;;;13749:21:0::1;::::0;;13633:145::o;24754:184::-;3640:4;3675:5;-1:-1:-1;;;;;3675:5:0;3535:10;3664:16;3519:38;;;;-1:-1:-1;;;3519:38:0;;;;;;;:::i;:::-;24863:9:::1;:22:::0;;;;24896:15:::1;:34:::0;24754:184::o;14083:615::-;3640:4;3675:5;-1:-1:-1;;;;;3675:5:0;3535:10;3664:16;3519:38;;;;-1:-1:-1;;;3519:38:0;;;;;;;:::i;:::-;14183:13:::1;14224:5;14216:4;14200:13;9640:12:::0;;;9560:100;14200:13:::1;:20;;;;:::i;:::-;14199:30;;;;:::i;:::-;14183:46;;14240:19;14289:5;14279:6;14263:13;9640:12:::0;;;9560:100;14263:13:::1;:22;;;;:::i;:::-;14262:32;;;;:::i;:::-;14240:54;;14305:17;14353:5;14342:7;14326:13;9640:12:::0;;;9560:100;14326:13:::1;:23;;;;:::i;:::-;14325:33;;;;:::i;:::-;14369:12;:20:::0;;;14400:14:::1;:28:::0;;;14439:15:::1;:27:::0;;;14305:53;-1:-1:-1;;14493:30:0::1;14518:4;14493:20;14511:1;14493:13;9640:12:::0;;;9560:100;14493:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;14477:46;;14565:5;14556;:14;;:38;;;;;14589:5;14574:11;:20;;14556:38;:60;;;;;14611:5;14598:9;:18;;14556:60;14534:156;;;::::0;-1:-1:-1;;;14534:156:0;;7512:2:1;14534:156:0::1;::::0;::::1;7494:21:1::0;7551:2;7531:18;;;7524:30;7590:34;7570:18;;;7563:62;-1:-1:-1;;;7641:18:1;;;7634:44;7695:19;;14534:156:0::1;7310:410:1::0;14534:156:0::1;14172:526;;;;14083:615:::0;;;:::o;20071:210::-;20151:15;;20112:55;;8035:42;;20112:55;;;;;;;;;20151:15;8035:42;20112:55;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20218:15:0;;20197:16;;:37;;:20;:37::i;:::-;20178:16;:56;20271:1;20245:15;:28;20071:210::o;10317:124::-;3640:4;3675:5;-1:-1:-1;;;;;3675:5:0;3535:10;3664:16;3519:38;;;;-1:-1:-1;;;3519:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10401:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;10401:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10317:124::o;9668:119::-;-1:-1:-1;;;;;9761:18:0;9734:7;9761:18;;;:9;:18;;;;;;;9668:119::o;13786:289::-;3640:4;3675:5;-1:-1:-1;;;;;3675:5:0;3535:10;3664:16;3519:38;;;;-1:-1:-1;;;3519:38:0;;;;;;;:::i;:::-;13840:13:::1;13856;9640:12:::0;;;9560:100;13856:13:::1;13840:29;;13880:19;13902:13;9640:12:::0;;;9560:100;13902:13:::1;13880:35;;13926:17;13946:13;9640:12:::0;;;9560:100;13946:13:::1;13970:12;:20:::0;;;;-1:-1:-1;14001:14:0::1;:28:::0;14040:15:::1;:27:::0;13786:289::o;22214:212::-;22298:10;8035:42;22298:34;22290:61;;;;-1:-1:-1;;;22290:61:0;;7927:2:1;22290:61:0;;;7909:21:1;7966:2;7946:18;;;7939:30;-1:-1:-1;;;7985:18:1;;;7978:44;8039:18;;22290:61:0;7725:338:1;22290:61:0;22362:56;;-1:-1:-1;;;22362:56:0;;8035:42;22362:56;;;8242:51:1;8309:18;;;8302:34;;;-1:-1:-1;;;;;22362:25:0;;;;;8215:18:1;;22362:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22214:212;;:::o;10616:154::-;10675:7;10702:60;10740:21;10758:1;10740:9;:21::i;:::-;10702:33;10719:15;7937:42;10719:9;:15::i;:::-;10702:12;;;:16;:33::i;:::-;:37;;:60::i;:::-;10695:67;;10616:154;:::o;9795:165::-;9873:4;9890:40;9900:10;9912:9;9923:6;9890:9;:40::i;13452:173::-;13513:10;8035:42;13513:34;13505:61;;;;-1:-1:-1;;;13505:61:0;;7927:2:1;13505:61:0;;;7909:21:1;7966:2;7946:18;;;7939:30;-1:-1:-1;;;7985:18:1;;;7978:44;8039:18;;13505:61:0;7725:338:1;13505:61:0;13585:14;;13577:40;;13585:31;;13612:2;13585:18;:31::i;:::-;13577:7;:40::i;:::-;13452:173::o;11961:733::-;3640:4;3675:5;-1:-1:-1;;;;;3675:5:0;3535:10;3664:16;3519:38;;;;-1:-1:-1;;;3519:38:0;;;;;;;:::i;:::-;12234:12:::1;:25:::0;;;12270:12:::1;:25:::0;;;12306:7:::1;:15:::0;;;12332:10:::1;:21:::0;;;12364:14:::1;:29:::0;;;12404:8:::1;:17:::0;;;12432:7:::1;:15:::0;;;12458:11:::1;:20:::0;;;12523:11:::1;::::0;:19:::1;::::0;12539:2:::1;12523:15;:19::i;:::-;12511:8;;:31;;:65;;;;-1:-1:-1::0;12557:11:0::1;::::0;:19:::1;::::0;12573:2:::1;12557:15;:19::i;:::-;12546:7;;:30;;12511:65;:103;;;;-1:-1:-1::0;12595:11:0::1;::::0;:19:::1;::::0;12611:2:::1;12595:15;:19::i;:::-;12580:11;;:34;;12511:103;12489:197;;;::::0;-1:-1:-1;;;12489:197:0;;8799:2:1;12489:197:0::1;::::0;::::1;8781:21:1::0;8838:2;8818:18;;;8811:30;8877:34;8857:18;;;8850:62;-1:-1:-1;;;8928:18:1;;;8921:42;8980:19;;12489:197:0::1;8597:408:1::0;12489:197:0::1;11961:733:::0;;;;;;;;:::o;20289:222::-;3640:4;3675:5;-1:-1:-1;;;;;3675:5:0;3535:10;3664:16;3519:38;;;;-1:-1:-1;;;3519:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20377:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;20377:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;20421:82:::1;;20433:19;20442:6;20450:1;20433:8;:19::i;3696:136::-:0;3640:4;3675:5;-1:-1:-1;;;;;3675:5:0;3535:10;3664:16;3519:38;;;;-1:-1:-1;;;3519:38:0;;;;;;;:::i;:::-;3772:5:::1;:11:::0;;-1:-1:-1;;;;;;3772:11:0::1;-1:-1:-1::0;;;;;3772:11:0;::::1;::::0;;::::1;::::0;;;3799:25:::1;::::0;3982:51:1;;;3799:25:0::1;::::0;3970:2:1;3955:18;3799:25:0::1;;;;;;;3696:136:::0;:::o;19728:335::-;-1:-1:-1;;;;;19821:19:0;;19813:68;;;;-1:-1:-1;;;19813:68:0;;9428:2:1;19813:68:0;;;9410:21:1;9467:2;9447:18;;;9440:30;9506:34;9486:18;;;9479:62;-1:-1:-1;;;9557:18:1;;;9550:34;9601:19;;19813:68:0;9226:400:1;19813:68:0;-1:-1:-1;;;;;19900:21:0;;19892:68;;;;-1:-1:-1;;;19892:68:0;;9833:2:1;19892:68:0;;;9815:21:1;9872:2;9852:18;;;9845:30;9911:34;9891:18;;;9884:62;-1:-1:-1;;;9962:18:1;;;9955:32;10004:19;;19892:68:0;9631:398:1;19892:68:0;-1:-1:-1;;;;;19971:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20023:32;;814:25:1;;;20023:32:0;;787:18:1;20023:32:0;;;;;;;19728:335;;;:::o;20771:481::-;20859:1;20850:6;:10;:45;;;;-1:-1:-1;;;;;;20864:19:0;;;;;;:6;:19;;;;;:26;:31;20850:45;20846:175;;;24378:12;:19;;-1:-1:-1;;;;;24344:31:0;;;;;;:18;:31;;;;;:53;;;24408:30;;;;;;;;;;;;;-1:-1:-1;;;;;;24408:30:0;;;;;;20846:175;;;20944:11;;:45;;;;-1:-1:-1;;;;;;20959:19:0;;20988:1;20959:19;;;:6;:19;;;;;:26;:30;;20944:45;20940:81;;;20991:30;21009:11;20991:17;:30::i;:::-;-1:-1:-1;;;;;21062:19:0;;;;;;:6;:19;;;;;:26;21046:11;;:55;;21094:6;;21046:43;;:15;:43::i;:::-;:47;;:55::i;:::-;21032:11;:69;-1:-1:-1;;;;;21112:19:0;;;;;;:6;:19;;;;;:35;;;21194:50;21141:6;21194:22;:50::i;:::-;-1:-1:-1;;;;;21158:19:0;;;;;;;:6;:19;;;;;:33;;:86;;;;-1:-1:-1;20771:481:0:o;11226:727::-;11315:37;11326:6;11334:9;11345:6;11315:10;:37::i;:::-;11363:38;11383:6;11391:9;11363:19;:38::i;:::-;11412:41;11427:6;11435:9;11446:6;11412:14;:41::i;:::-;11464:35;11481:6;11489:9;11464:16;:35::i;:::-;11510:39;11523:6;11531:9;11542:6;11510:12;:39::i;:::-;11560:35;11569:6;11577:9;11588:6;11560:8;:35::i;:::-;-1:-1:-1;;;;;11626:17:0;;;;;;:9;:17;;;;;;:29;;11648:6;11626:21;:29::i;:::-;-1:-1:-1;;;;;11606:17:0;;;;;;:9;:17;;;;;:49;;;;11691:32;11616:6;11713:9;11691:13;:32::i;:::-;:78;;11763:6;11691:78;;;11726:34;11734:6;11742:9;11753:6;11726:7;:34::i;:::-;-1:-1:-1;;;;;11803:20:0;;;;;;:9;:20;;;;;;11666:103;;-1:-1:-1;11803:40:0;;11666:103;11803:24;:40::i;:::-;-1:-1:-1;;;;;11780:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11859:43;;;;;;;;;;11887:14;814:25:1;;802:2;787:18;;668:177;11859:43:0;;;;;;;;11913:32;11927:6;11935:9;11913:13;:32::i;:::-;11304:649;11226:727;;;:::o;1732:206::-;1818:7;1879:12;1871:6;;;;1863:29;;;;-1:-1:-1;;;1863:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1914:5:0;;;1732:206::o;24101:170::-;24171:7;24198:65;24231:31;;24198:28;24208:17;;24198:5;:9;;:28;;;;:::i;192:98::-;250:7;277:5;281:1;277;:5;:::i;298:98::-;356:7;383:5;387:1;383;:5;:::i;404:98::-;462:7;489:5;493:1;489;:5;:::i;21516:690::-;21593:12;:19;21566:24;21627:21;;;21623:34;;21650:7;21516:690;:::o;21623:34::-;21667:15;21697;21715:9;21697:27;;21735:18;21768:431;21785:3;21775:7;:13;:46;;;;;21805:16;21792:10;:29;21775:46;21768:431;;;21858:16;21842:12;;:32;21838:54;;21891:1;21876:12;:16;21838:54;21911:44;21928:12;21941;;21928:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;21928:26:0;21911:16;:44::i;:::-;21907:131;;;21976:46;21995:12;22008;;21995:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;21995:26:0;21976:18;:46::i;:::-;22062:35;22074:22;22086:9;22074:7;;:11;:22::i;:::-;22062:7;;:11;:35::i;:::-;22052:45;;22122:9;22146:12;:14;;22112:19;;-1:-1:-1;22146:12:0;:14;;;:::i;:::-;;;;;;22175:12;;;;;:::i;:::-;;;;21768:431;;;21555:651;;;;21516:690;:::o;24454:292::-;24570:12;24583:19;;:23;;24605:1;;24583:23;:::i;:::-;24570:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;24535:31:0;;;;;:18;:31;;;;;;;;24522:12;:45;;24570:37;;;;;24522:12;:45;;;;;;:::i;:::-;;;;;;;;;;;;;:85;;-1:-1:-1;;;;;;24522:85:0;-1:-1:-1;;;;;24522:85:0;;;;;;24678:31;;;;;:18;:31;;;;;;;;24637:12;24650:19;;24678:31;;:18;24522:45;24650:23;;-1:-1:-1;;24650:23:0;:::i;:::-;24637:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;24637:37:0;24618:57;;;;;;;;;;;;:91;24720:12;:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;24720:18:0;;;;;-1:-1:-1;;;;;;24720:18:0;;;;;;-1:-1:-1;24454:292:0:o;86:98::-;144:7;171:5;175:1;171;:5;:::i;10778:440::-;-1:-1:-1;;;;;10882:20:0;;10874:70;;;;-1:-1:-1;;;10874:70:0;;10903:2:1;10874:70:0;;;10885:21:1;10942:2;10922:18;;;10915:30;10981:34;10961:18;;;10954:62;-1:-1:-1;;;11032:18:1;;;11025:35;11077:19;;10874:70:0;10701:401:1;10874:70:0;-1:-1:-1;;;;;10963:23:0;;10955:71;;;;-1:-1:-1;;;10955:71:0;;11309:2:1;10955:71:0;;;11291:21:1;11348:2;11328:18;;;11321:30;11387:34;11367:18;;;11360:62;-1:-1:-1;;;11438:18:1;;;11431:33;11481:19;;10955:71:0;11107:399:1;10955:71:0;11062:1;11045:6;:19;11037:73;;;;-1:-1:-1;;;11037:73:0;;11713:2:1;11037:73:0;;;11695:21:1;11752:2;11732:18;;;11725:30;11791:34;11771:18;;;11764:62;-1:-1:-1;;;11842:18:1;;;11835:39;11891:19;;11037:73:0;11511:405:1;11037:73:0;11139:17;11149:6;11139:9;:17::i;:::-;11129:6;:27;;11121:89;;;;-1:-1:-1;;;11121:89:0;;12123:2:1;11121:89:0;;;12105:21:1;12162:2;12142:18;;;12135:30;12201:34;12181:18;;;12174:62;-1:-1:-1;;;12252:18:1;;;12245:47;12309:19;;11121:89:0;11921:413:1;14706:191:0;-1:-1:-1;;;;;14800:19:0;;;;;;:11;:19;;;;;;;;14799:20;:47;;;;-1:-1:-1;;;;;;14824:22:0;;;;;;:11;:22;;;;;;;;14823:23;14799:47;14795:94;;;14856:14;;-1:-1:-1;;;14856:14:0;;;;14848:41;;;;-1:-1:-1;;;14848:41:0;;12541:2:1;14848:41:0;;;12523:21:1;12580:2;12560:18;;;12553:30;-1:-1:-1;;;12599:18:1;;;12592:44;12653:18;;14848:41:0;12339:338:1;14905:352:0;-1:-1:-1;;;;;15010:19:0;;;;;;:11;:19;;;;;;;;15009:20;:47;;;;-1:-1:-1;;;;;;15034:22:0;;;;;;:11;:22;;;;;;;;15033:23;15009:47;:77;;;;-1:-1:-1;15081:4:0;;-1:-1:-1;;;;;15060:26:0;;;15081:4;;15060:26;;15009:77;:107;;;;-1:-1:-1;;;;;;15090:26:0;;7937:42;15090:26;;15009:107;15005:245;;;15188:15;;-1:-1:-1;;;;;15151:20:0;;;;;;:9;:20;;;;;;:32;;15176:6;15151:24;:32::i;:::-;15150:53;;15142:96;;;;-1:-1:-1;;;15142:96:0;;12884:2:1;15142:96:0;;;12866:21:1;12923:2;12903:18;;;12896:30;12962:32;12942:18;;;12935:60;13012:18;;15142:96:0;12682:354:1;15265:159:0;15363:4;;-1:-1:-1;;;;;15350:17:0;;;15363:4;;15350:17;:41;;;;-1:-1:-1;;;;;;15372:19:0;;;;;;:11;:19;;;;;;;;15371:20;15350:41;15346:70;;;15414:1;15393:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;15265:159:0;;:::o;15432:367::-;15544:4;;-1:-1:-1;;;;;15534:14:0;;;15544:4;;15534:14;15530:150;;15583:14;;15573:6;:24;;:47;;;-1:-1:-1;;;;;;15601:19:0;;;;;;:11;:19;;;;;;;;15573:47;:73;;;-1:-1:-1;;;;;;15624:22:0;;;;;;:11;:22;;;;;;;;15573:73;15565:103;;;;-1:-1:-1;;;15565:103:0;;13243:2:1;15565:103:0;;;13225:21:1;13282:2;13262:18;;;13255:30;-1:-1:-1;;;13301:18:1;;;13294:47;13358:18;;15565:103:0;13041:341:1;15565:103:0;15708:12;;15698:6;:22;;:45;;;-1:-1:-1;;;;;;15724:19:0;;;;;;:11;:19;;;;;;;;15698:45;:71;;;-1:-1:-1;;;;;;15747:22:0;;;;;;:11;:22;;;;;;;;15698:71;15690:101;;;;-1:-1:-1;;;15690:101:0;;13243:2:1;15690:101:0;;;13225:21:1;13282:2;13262:18;;;13255:30;-1:-1:-1;;;13301:18:1;;;13294:47;13358:18;;15690:101:0;13041:341:1;18153:236:0;18246:41;18261:6;18269:9;18280:6;18246:14;:41::i;:::-;18242:140;;;18304:29;18319:13;;18304:14;:29::i;:::-;18368:1;18348:9;:22;18153:236;;;:::o;18397:160::-;-1:-1:-1;;;;;18503:19:0;;18478:4;18503:19;;;:11;:19;;;;;;;;18502:20;:47;;;;-1:-1:-1;;;;;;;18527:22:0;;;;;:11;:22;;;;;;;;18526:23;;18397:160;-1:-1:-1;18397:160:0:o;18792:587::-;18878:7;18935:1;18902:30;18914:6;18922:9;18902:11;:30::i;:::-;:34;18898:450;;;18953:17;18973:59;19001:30;19013:6;19021:9;19001:11;:30::i;:::-;18984:11;;18973:23;;:6;;:10;:23::i;:59::-;19092:4;19074:24;;;;:9;:24;;;;;;18953:79;;-1:-1:-1;19074:39:0;;18953:79;19074:28;:39::i;:::-;19065:4;19047:24;;;;:9;:24;;;;;;;:66;;;;19133:42;;-1:-1:-1;;;;;19133:42:0;;;;;;;19165:9;814:25:1;;802:2;787:18;;668:177;19133:42:0;;;;;;;;19194:7;;:20;19190:103;;19216:77;19234:4;7937:42;19256:36;19284:7;;19256:23;19267:11;;19256:6;:10;;:23;;;;:::i;:36::-;19216:9;:77::i;:::-;19315:21;:6;19326:9;19315:10;:21::i;:::-;19308:28;;;;;18898:450;-1:-1:-1;19365:6:0;18792:587;-1:-1:-1;;18792:587:0:o;12702:742::-;-1:-1:-1;;;;;12784:17:0;;12811:1;12784:17;;;:6;:17;;;;;:24;:28;;;;:43;;-1:-1:-1;12816:11:0;;;;12784:43;12780:78;;;12829:29;12848:9;12829:18;:29::i;:::-;12886:4;;-1:-1:-1;;;;;12873:17:0;;;12886:4;;12873:17;:46;;;;-1:-1:-1;;;;;;12894:14:0;;12918:1;12894:14;;;:6;:14;;;;;:21;:25;;12873:46;12869:143;;;12954:46;12974:25;12992:6;12974:17;:25::i;:::-;12954:15;;;:19;:46::i;:::-;12936:15;:64;12869:143;-1:-1:-1;;;;;13027:24:0;;;;;;:16;:24;;;;;;;;13022:66;;13053:35;13062:6;13070:17;13080:6;13070:9;:17::i;13053:35::-;-1:-1:-1;;;;;13104:27:0;;;;;;:16;:27;;;;;;;;13099:75;;13133:41;13142:9;13153:20;13163:9;13153;:20::i;13133:41::-;10248:17;;10293:8;;13189:56;;;;-1:-1:-1;;;;;;13212:33:0;;;;;;:25;:33;;;;;;;;13211:34;13189:56;13185:90;;;13247:28;13256:6;13272:1;13247:8;:28::i;:::-;10248:17;;10293:8;;13290:62;;;;-1:-1:-1;;;;;;13316:36:0;;;;;;:25;:36;;;;;;;;13315:37;13290:62;13286:99;;;13354:31;13363:9;13382:1;13354:8;:31::i;:::-;13400:11;;;;13396:40;;;13413:23;13421:14;;13413:7;:23::i;22552:227::-;22679:9;;-1:-1:-1;;;;;22646:30:0;;22622:4;22646:30;;;:17;:30;;;;;;22622:4;;22691:15;;22646:42;;22679:9;22646:42;:::i;:::-;:60;:125;;;;;22756:15;;22723:30;22741:11;22723:17;:30::i;:::-;:48;22639:132;22552:227;-1:-1:-1;;22552:227:0:o;22985:631::-;-1:-1:-1;;;;;23058:19:0;;;;;;:6;:19;;;;;:26;:31;;23054:44;;22985:631;:::o;23054:44::-;23108:14;23125:30;23143:11;23125:17;:30::i;:::-;23108:47;-1:-1:-1;23170:10:0;;23166:443;;23216:16;;:28;;23237:6;23216:20;:28::i;:::-;23197:16;:47;23259:37;;-1:-1:-1;;;;;23259:29:0;;;:37;;;;;23289:6;;23259:37;;;;23289:6;23259:29;:37;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23311:30:0;;;;;;:17;:30;;;;;;;;23344:15;23311:48;;23410:6;:19;;;;;:33;;;:45;;23448:6;23410:37;:45::i;:::-;-1:-1:-1;;;;;23374:19:0;;;;;;:6;:19;;;;;:33;;;:81;;;;23529:26;23506:50;;:22;:50::i;:::-;-1:-1:-1;;;;;23470:19:0;;;;;;:6;:19;;;;;:33;;:86;;;;23571:16;:26;;23591:6;;23470:19;23571:26;;23591:6;;23571:26;:::i;17732:413::-;17830:4;17847:13;17873:15;;17863:6;:25;;17847:41;;17899:19;17949:13;;17921:24;17939:4;17921:9;:24::i;:::-;17981:8;;17921:41;-1:-1:-1;17921:41:0;;-1:-1:-1;17981:8:0;;17980:9;:24;;;;-1:-1:-1;17993:11:0;;;;17980:24;:42;;;;-1:-1:-1;18008:14:0;;-1:-1:-1;;;18008:14:0;;;;17980:42;:54;;;;;18026:8;17980:54;:78;;;;-1:-1:-1;;;;;;18039:19:0;;;;;;:11;:19;;;;;;;;18038:20;17980:78;:99;;;;-1:-1:-1;18075:4:0;;-1:-1:-1;;;;;18062:17:0;;;18075:4;;18062:17;17980:99;:139;;;;-1:-1:-1;18096:23:0;17980:139;:157;;;;;18123:14;17980:157;17973:164;17732:413;-1:-1:-1;;;;;;17732:413:0:o;15807:1243::-;7066:8;:15;;-1:-1:-1;;7066:15:0;7077:4;7066:15;;;15957:10:::1;::::0;15937:14:::1;::::0;15919:12:::1;::::0;15902::::1;::::0;7066:8;;15901:75:::1;::::0;15974:1:::1;::::0;15902:66:::1;::::0;:50:::1;::::0;15937:14;15902:50;;:12;:16:::1;:30::i;15901:75::-;15878:98;;15987:32;16022:42;16051:12;16022:24;16033:12;;16022:6;:10;;:24;;;;:::i;:42::-;15987:77:::0;-1:-1:-1;16075:14:0::1;16092:36;:6:::0;15987:77;16092:10:::1;:36::i;:::-;16075:53:::0;-1:-1:-1;16164:21:0::1;16196:24;16075:53:::0;16196:16:::1;:24::i;:::-;16231:20;16254:41;:21;16280:14:::0;16254:25:::1;:41::i;:::-;16231:64;;16306:19;16328:48;16345:30;16362:12;;16345;:16;;:30;;;;:::i;:::-;16328:12:::0;;:16:::1;:48::i;:::-;16306:70;;16387:29;16419;16435:12;;16419:11;:15;;:29;;;;:::i;:::-;16387:61:::0;-1:-1:-1;16463:34:0;;16459:101:::1;;16499:61;16512:24;16538:21;16499:12;:61::i;:::-;16627:10;::::0;16571:21:::1;::::0;16595:43:::1;::::0;:27:::1;:11:::0;16619:1:::1;16595:15;:27::i;:43::-;16571:67:::0;-1:-1:-1;16653:26:0;;16649:54:::1;;16681:22;16689:13;16681:7;:22::i;:::-;16772:12;::::0;16714:23:::1;::::0;16740:45:::1;::::0;:27:::1;:11:::0;16764:1:::1;16740:15;:27::i;:45::-;16714:71:::0;-1:-1:-1;16800:28:0;;16796:87:::1;;16830:53;::::0;8131:42:::1;::::0;16830:53;::::1;;;::::0;16867:15;;16830:53:::1;::::0;;;16867:15;8131:42;16830:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16796:87;16894:16;16913:43;16939:16;;16913:21;:25;;:43;;;;:::i;:::-;16894:62:::0;-1:-1:-1;16971:21:0;;16967:75:::1;;16994:48;::::0;8035:42:::1;::::0;16994:48;::::1;;;::::0;17033:8;;16994:48:::1;::::0;;;17033:8;8035:42;16994:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16967:75;-1:-1:-1::0;;7104:8:0;:16;;-1:-1:-1;;7104:16:0;;;-1:-1:-1;;;;;;;;;15807:1243:0:o;18565:219::-;18681:4;;18644:7;;-1:-1:-1;;;;;18681:4:0;;;18668:17;;;;18664:37;;-1:-1:-1;18694:7:0;;18687:14;;18664:37;18726:4;;-1:-1:-1;;;;;18726:4:0;;;18716:14;;;;18712:35;;-1:-1:-1;18739:8:0;;18732:15;;18712:35;-1:-1:-1;18765:11:0;;18565:219;;;;:::o;17356:368::-;17446:16;;;17460:1;17446:16;;;;;;;;17422:21;;17446:16;;;;;;;;;;-1:-1:-1;17446:16:0;17422:40;;17491:4;17473;17478:1;17473:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17473:23:0;;;:7;;;;;;;;;;:23;;;;17517:6;;:13;;;-1:-1:-1;;;17517:13:0;;;;:6;;;;;:11;;:13;;;;;17473:7;;17517:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17507:4;17512:1;17507:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17507:23:0;;;:7;;;;;;;;;:23;17573:6;;17541:53;;17558:4;;17573:6;17582:11;17541:8;:53::i;:::-;17605:6;;:111;;-1:-1:-1;;;17605:111:0;;-1:-1:-1;;;;;17605:6:0;;;;:57;;:111;;17663:11;;17605:6;;17679:4;;17693;;17700:15;;17605:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17411:313;17356:368;:::o;17058:290::-;17171:6;;17139:53;;17156:4;;-1:-1:-1;;;;;17171:6:0;17180:11;17139:8;:53::i;:::-;17203:6;;:137;;-1:-1:-1;;;17203:137:0;;17268:4;17203:137;;;15042:51:1;15109:18;;;15102:34;;;17203:6:0;15152:18:1;;;15145:34;;;15195:18;;;15188:34;8227:42:0;15238:19:1;;;15231:61;17314:15:0;15308:19:1;;;15301:35;-1:-1:-1;;;;;17203:6:0;;;;:22;;17234:9;;15014:19:1;;17203:137:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21260:248::-;21336:9;21316:16;;:29;;;;;;;:::i;:::-;;;;;;;;21374:9;21356:14;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;21487:11:0;;21436:31;;21414:86;;21436:63;;:46;;21472:9;21436:35;:46::i;:63::-;21414:17;;;:21;:86::i;:::-;21394:17;:106;-1:-1:-1;21260:248:0:o;14:226: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;187:23:1;;14:226;-1:-1:-1;14:226:1:o;245:418::-;394:2;383:9;376:21;357:4;426:6;420:13;469:6;464:2;453:9;449:18;442:34;528:6;523:2;515:6;511:15;506:2;495:9;491:18;485:50;584:1;579:2;570:6;559:9;555:22;551:31;544:42;654:2;647;643:7;638:2;630:6;626:15;622:29;611:9;607:45;603:54;595:62;;;245:418;;;;:::o;850:131::-;-1:-1:-1;;;;;925:31:1;;915:42;;905:70;;971:1;968;961:12;986:367;1054:6;1062;1115:2;1103:9;1094:7;1090:23;1086:32;1083:52;;;1131:1;1128;1121:12;1083:52;1170:9;1157:23;1189:31;1214:5;1189:31;:::i;:::-;1239:5;1317:2;1302:18;;;;1289:32;;-1:-1:-1;;;986:367:1:o;1550:118::-;1636:5;1629:13;1622:21;1615:5;1612:32;1602:60;;1658:1;1655;1648:12;1673:382;1738:6;1746;1799:2;1787:9;1778:7;1774:23;1770:32;1767:52;;;1815:1;1812;1805:12;1767:52;1854:9;1841:23;1873:31;1898:5;1873:31;:::i;:::-;1923:5;-1:-1:-1;1980:2:1;1965:18;;1952:32;1993:30;1952:32;1993:30;:::i;:::-;2042:7;2032:17;;;1673:382;;;;;:::o;2060:508::-;2137:6;2145;2153;2206:2;2194:9;2185:7;2181:23;2177:32;2174:52;;;2222:1;2219;2212:12;2174:52;2261:9;2248:23;2280:31;2305:5;2280:31;:::i;:::-;2330:5;-1:-1:-1;2387:2:1;2372:18;;2359:32;2400:33;2359:32;2400:33;:::i;:::-;2060:508;;2452:7;;-1:-1:-1;;;2532:2:1;2517:18;;;;2504:32;;2060:508::o;2573:247::-;2632:6;2685:2;2673:9;2664:7;2660:23;2656:32;2653:52;;;2701:1;2698;2691:12;2653:52;2740:9;2727:23;2759:31;2784:5;2759:31;:::i;2825:346::-;2893:6;2901;2954:2;2942:9;2933:7;2929:23;2925:32;2922:52;;;2970:1;2967;2960:12;2922:52;-1:-1:-1;;3015:23:1;;;3135:2;3120:18;;;3107:32;;-1:-1:-1;2825:346:1:o;3365:466::-;3442:6;3450;3458;3511:2;3499:9;3490:7;3486:23;3482:32;3479:52;;;3527:1;3524;3517:12;3479:52;-1:-1:-1;;3572:23:1;;;3692:2;3677:18;;3664:32;;-1:-1:-1;3795:2:1;3780:18;;;3767:32;;3365:466;-1:-1:-1;3365:466:1:o;4368:388::-;4436:6;4444;4497:2;4485:9;4476:7;4472:23;4468:32;4465:52;;;4513:1;4510;4503:12;4465:52;4552:9;4539:23;4571:31;4596:5;4571:31;:::i;:::-;4621:5;-1:-1:-1;4678:2:1;4663:18;;4650:32;4691:33;4650:32;4691:33;:::i;4761:1071::-;4883:6;4891;4899;4907;4915;4923;4931;4939;4992:3;4980:9;4971:7;4967:23;4963:33;4960:53;;;5009:1;5006;4999:12;4960:53;-1:-1:-1;;5054:23:1;;;5174:2;5159:18;;5146:32;;-1:-1:-1;5277:2:1;5262:18;;5249:32;;5380:2;5365:18;;5352:32;;-1:-1:-1;5483:3:1;5468:19;;5455:33;;-1:-1:-1;5587:3:1;5572:19;;5559:33;;-1:-1:-1;5691:3:1;5676:19;;5663:33;;-1:-1:-1;5795:3:1;5780:19;5767:33;;-1:-1:-1;4761:1071:1;-1:-1:-1;4761:1071:1:o;6097:329::-;6299:2;6281:21;;;6338:1;6318:18;;;6311:29;-1:-1:-1;;;6371:2:1;6356:18;;6349:36;6417:2;6402:18;;6097:329::o;6783:127::-;6844:10;6839:3;6835:20;6832:1;6825:31;6875:4;6872:1;6865:15;6899:4;6896:1;6889:15;6915:168;6988:9;;;7019;;7036:15;;;7030:22;;7016:37;7006:71;;7057:18;;:::i;7088:217::-;7128:1;7154;7144:132;;7198:10;7193:3;7189:20;7186:1;7179:31;7233:4;7230:1;7223:15;7261:4;7258:1;7251:15;7144:132;-1:-1:-1;7290:9:1;;7088:217::o;8347:245::-;8414:6;8467:2;8455:9;8446:7;8442:23;8438:32;8435:52;;;8483:1;8480;8473:12;8435:52;8515:9;8509:16;8534:28;8556:5;8534:28;:::i;10034:128::-;10101:9;;;10122:11;;;10119:37;;;10136:18;;:::i;10167:127::-;10228:10;10223:3;10219:20;10216:1;10209:31;10259:4;10256:1;10249:15;10283:4;10280:1;10273:15;10299:135;10338:3;10359:17;;;10356:43;;10379:18;;:::i;:::-;-1:-1:-1;10426:1:1;10415:13;;10299:135::o;10439:127::-;10500:10;10495:3;10491:20;10488:1;10481:31;10531:4;10528:1;10521:15;10555:4;10552:1;10545:15;10571:125;10636:9;;;10657:10;;;10654:36;;;10670:18;;:::i;13519:251::-;13589:6;13642:2;13630:9;13621:7;13617:23;13613:32;13610:52;;;13658:1;13655;13648:12;13610:52;13690:9;13684:16;13709:31;13734:5;13709:31;:::i;13775:959::-;14037:4;14085:3;14074:9;14070:19;14116:6;14105:9;14098:25;14159:6;14154:2;14143:9;14139:18;14132:34;14202:3;14197:2;14186:9;14182:18;14175:31;14226:6;14261;14255:13;14292:6;14284;14277:22;14330:3;14319:9;14315:19;14308:26;;14369:2;14361:6;14357:15;14343:29;;14390:1;14400:195;14414:6;14411:1;14408:13;14400:195;;;14479:13;;-1:-1:-1;;;;;14475:39:1;14463:52;;14544:2;14570:15;;;;14535:12;;;;14511:1;14429:9;14400:195;;;-1:-1:-1;;;;;;;14651:32:1;;;;14646:2;14631:18;;14624:60;-1:-1:-1;;14715:3:1;14700:19;14693:35;14612:3;13775:959;-1:-1:-1;;;13775:959:1:o;15347:456::-;15435:6;15443;15451;15504:2;15492:9;15483:7;15479:23;15475:32;15472:52;;;15520:1;15517;15510:12;15472:52;-1:-1:-1;;15565:16:1;;15671:2;15656:18;;15650:25;15767:2;15752:18;;;15746:25;15565:16;;15650:25;;-1:-1:-1;15746:25:1;15347:456;-1:-1:-1;15347:456:1:o
Swarm Source
ipfs://fa17d5381a735568a5f7143e7b43d03b0d4d58a592d543125b01bd1ce6bb83d6
[ 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.