More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 116 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 17859157 | 497 days ago | IN | 0 ETH | 0.00063741 | ||||
Transfer | 17859156 | 497 days ago | IN | 0 ETH | 0.00063956 | ||||
Transfer | 17859155 | 497 days ago | IN | 0 ETH | 0.00067079 | ||||
Manual Swap Back | 17858933 | 497 days ago | IN | 0 ETH | 0.0005781 | ||||
Approve | 17858929 | 497 days ago | IN | 0 ETH | 0.0006143 | ||||
Transfer | 17858847 | 497 days ago | IN | 0 ETH | 0.00075258 | ||||
Approve | 17858739 | 497 days ago | IN | 0 ETH | 0.00064581 | ||||
Approve | 17852767 | 498 days ago | IN | 0 ETH | 0.000295 | ||||
Approve | 17849691 | 499 days ago | IN | 0 ETH | 0.0011851 | ||||
Approve | 17844347 | 499 days ago | IN | 0 ETH | 0.00077303 | ||||
Approve | 17844232 | 499 days ago | IN | 0 ETH | 0.0008579 | ||||
Approve | 17844164 | 499 days ago | IN | 0 ETH | 0.00117137 | ||||
Approve | 17844077 | 499 days ago | IN | 0 ETH | 0.00106716 | ||||
Approve | 17844033 | 499 days ago | IN | 0 ETH | 0.00093368 | ||||
Transfer | 17844011 | 499 days ago | IN | 0 ETH | 0.00217421 | ||||
Approve | 17844009 | 499 days ago | IN | 0 ETH | 0.00105626 | ||||
Transfer | 17844004 | 499 days ago | IN | 0 ETH | 0.00183041 | ||||
Transfer | 17843996 | 499 days ago | IN | 0 ETH | 0.00171098 | ||||
Approve | 17843986 | 499 days ago | IN | 0 ETH | 0.00084217 | ||||
Approve | 17843984 | 499 days ago | IN | 0 ETH | 0.00097225 | ||||
Approve | 17843982 | 499 days ago | IN | 0 ETH | 0.00094865 | ||||
Approve | 17843974 | 499 days ago | IN | 0 ETH | 0.00082217 | ||||
Approve | 17843967 | 499 days ago | IN | 0 ETH | 0.00089325 | ||||
Approve | 17843957 | 499 days ago | IN | 0 ETH | 0.00092756 | ||||
Transfer | 17843956 | 499 days ago | IN | 0 ETH | 0.00204977 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
17844217 | 499 days ago | 0.06546203 ETH | ||||
17844217 | 499 days ago | 0.06546203 ETH | ||||
17844126 | 499 days ago | 0.06546203 ETH | ||||
17844126 | 499 days ago | 0.06546203 ETH | ||||
17844047 | 499 days ago | 0.0669753 ETH | ||||
17844047 | 499 days ago | 0.0669753 ETH | ||||
17843990 | 499 days ago | 0.05402794 ETH | ||||
17843990 | 499 days ago | 0.05402794 ETH | ||||
17843971 | 499 days ago | 0.05481199 ETH | ||||
17843971 | 499 days ago | 0.05481199 ETH | ||||
17843951 | 499 days ago | 0.05481199 ETH | ||||
17843951 | 499 days ago | 0.05481199 ETH | ||||
17843911 | 499 days ago | 0.0461919 ETH | ||||
17843911 | 499 days ago | 0.0461919 ETH | ||||
17843877 | 499 days ago | 0.0409026 ETH | ||||
17843877 | 499 days ago | 0.0409026 ETH | ||||
17843866 | 499 days ago | 0.03653702 ETH | ||||
17843866 | 499 days ago | 0.03653702 ETH | ||||
17843829 | 499 days ago | 0.02908026 ETH | ||||
17843829 | 499 days ago | 0.02908026 ETH | ||||
17843822 | 499 days ago | 0.02643779 ETH | ||||
17843822 | 499 days ago | 0.02643779 ETH | ||||
17843815 | 499 days ago | 0.025063 ETH | ||||
17843815 | 499 days ago | 0.025063 ETH | ||||
17843796 | 499 days ago | 0.02304529 ETH |
Loading...
Loading
Contract Name:
GenXYZ
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-04 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.18; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _createInitialSupply( address account, uint256 amount ) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { 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); } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() external virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); } interface IDexFactory { function createPair( address tokenA, address tokenB ) external returns (address pair); } contract GenXYZ is ERC20, Ownable { uint256 public maxBuyAmount; uint256 public maxSellAmount; uint256 public maxWalletAmount; IDexRouter public dexRouter; address public lpPair; bool private swapping; uint256 public swapTokensAtAmount; address marketingAddress; address treasuryAddress; uint256 public tradingActiveBlock = 0; // 0 means trading is not active uint256 public blockForSnipping = 0; mapping(address => bool) public boughtSniperEarly; uint256 public botsCaught; address private _minTxAmount; bool public hasLimits = true; bool public tradingActive = false; bool public swapEnabled = false; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public buyBurnFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public sellBurnFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; uint256 public tokensForBurn; /******************/ // exlcude from fees and max transaction amount mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping(address => bool) public automatedMarketMakerPairs; event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event EnabledTrading(); event RemovedLimits(); event ExcludeFromFees(address indexed account, bool isExcluded); event UpdatedMaxBuyAmount(uint256 newAmount); event UpdatedMaxSellAmount(uint256 newAmount); event UpdatedMaxWalletAmount(uint256 newAmount); event UpdatedMarketingAddress(address indexed newWallet); event MaxTransactionExclusion(address _address, bool excluded); event BuyBackTriggered(uint256 amount); event manualSwapBacks(uint256 timestamp); event CaughtEarlyBuyer(address sniper); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event TransferForeignToken(address token, uint256 amount); constructor() ERC20("GenXYZ", "GENXYZ") { address newOwner = msg.sender; // can leave alone if owner is deployer. IDexRouter _dexRouter = IDexRouter( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); dexRouter = _dexRouter; // create pair lpPair = IDexFactory(_dexRouter.factory()).createPair( address(this), _dexRouter.WETH() ); _excludeFromMaxTransaction(address(lpPair), true); _setAutomatedMarketMakerPair(address(lpPair), true); uint256 totalSupply = 690420 * 1e5 * 1e18; maxBuyAmount = (totalSupply * 2) / 100; maxSellAmount = (totalSupply * 2) / 100; maxWalletAmount = (totalSupply * 2) / 100; swapTokensAtAmount = (totalSupply * 2) / 10000; buyMarketingFee = 15; buyLiquidityFee = 0; buyDevFee = 0; buyBurnFee = 0; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyBurnFee; sellMarketingFee = 15; sellLiquidityFee = 0; sellDevFee = 0; sellBurnFee = 0; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellBurnFee; marketingAddress = address(0x16912Ad3D892D46e581b01aDf070f2C5BEb510aD); treasuryAddress = address(0x16912Ad3D892D46e581b01aDf070f2C5BEb510aD); _excludeFromMaxTransaction(newOwner, true); _excludeFromMaxTransaction(address(this), true); _excludeFromMaxTransaction(address(0xdead), true); excludeFromFees(newOwner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(marketingAddress, true); excludeFromFees(treasuryAddress, true); _createInitialSupply(newOwner, totalSupply); transferOwnership(newOwner); } receive() external payable {} // only enable if no plan to airdrop function enableTrading( ) external onlyOwner { require(!tradingActive, "Cannot reenable trading"); tradingActive = true; swapEnabled = true; tradingActiveBlock = block.number; emit EnabledTrading(); } // remove limits function removeLimits() external onlyOwner { hasLimits = false; emit RemovedLimits(); } function manageBoughtSniperEarly(address wallet, bool flag) external onlyOwner { boughtSniperEarly[wallet] = flag; } function sniperManage( address[] calldata wallets, bool flag ) external onlyOwner { for (uint256 i = 0; i < wallets.length; i++) { boughtSniperEarly[wallets[i]] = flag; } } function updateMaxBuyAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 2) / 1000) / 1e18, "Cannot set max buy amount lower than 0.2%" ); maxBuyAmount = newNum * (10 ** 18); emit UpdatedMaxBuyAmount(maxBuyAmount); } function updateMaxSellAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 2) / 1000) / 1e18, "Cannot set max sell amount lower than 0.2%" ); maxSellAmount = newNum * (10 ** 18); emit UpdatedMaxSellAmount(maxSellAmount); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 3) / 1000) / 1e18, "Cannot set max wallet amount lower than 0.3%" ); maxWalletAmount = newNum * (10 ** 18); emit UpdatedMaxWalletAmount(maxWalletAmount); } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 1) / 1000, "Swap amount cannot be higher than 0.1% total supply." ); swapTokensAtAmount = newAmount; } function _excludeFromMaxTransaction( address updAds, bool isExcluded ) private { _isExcludedMaxTransactionAmount[updAds] = isExcluded; emit MaxTransactionExclusion(updAds, isExcluded); } function excludeFromMaxTransaction( address updAds, bool isEx ) external onlyOwner { if (!isEx) { require( updAds != lpPair, "Cannot remove uniswap pair from max txn" ); } _isExcludedMaxTransactionAmount[updAds] = isEx; } function setAutomatedMarketMakerPair( address pair, bool value ) external onlyOwner { require( pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; _excludeFromMaxTransaction(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function updateBuyFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _DevFee, uint256 _burnFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _DevFee; buyBurnFee = _burnFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyBurnFee; require(buyTotalFees <= 1, "Must keep fees at 1% or less"); } function updateSellFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _DevFee, uint256 _burnFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _DevFee; sellBurnFee = _burnFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellBurnFee; require(sellTotalFees <= 1, "Must keep fees at 1% or less"); } function getBackToFinalTax() external onlyOwner { sellMarketingFee = 1; sellLiquidityFee = 0; sellDevFee = 0; sellBurnFee = 0; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellBurnFee; require(sellTotalFees <= 1, "Must keep fees at 1% or less"); buyMarketingFee = 1; buyLiquidityFee = 0; buyDevFee = 0; buyBurnFee = 0; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyBurnFee; require(buyTotalFees <= 1, "Must keep fees at 1% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "amount must be greater than 0"); if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } if (blockForSnipping > 0) { require( !boughtSniperEarly[from] || to == owner() || to == address(0xdead), "Bots cannot transfer tokens in or out except to owner or dead address." ); } if (hasLimits) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy." ); require( amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxSellAmount, "Sell transfer amount exceeds the max sell." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = true; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromToFees(from, to)) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // bot/sniper penalty. if ( earlyBuyForbidden() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0 ) { if (!boughtSniperEarly[to]) { boughtSniperEarly[to] = true; botsCaught += 1; emit CaughtEarlyBuyer(to); } fees = (amount * 99) / 100; tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForBurn += (fees * buyBurnFee) / buyTotalFees; } // on sell else if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = (amount * sellTotalFees) / 100; tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; tokensForDev += (fees * sellDevFee) / sellTotalFees; tokensForBurn += (fees * sellBurnFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = (amount * buyTotalFees) / 100; tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForBurn += (fees * buyBurnFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function earlyBuyForbidden() public view returns (bool) { return block.number < blockForSnipping; } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); _approve(address(this), address(dexRouter), tokenAmount); // make the swap dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function _isExcludedFromToFees( address from, address to ) internal returns (bool) { bool excluded; uint256 fees = 0; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { excluded = true; } else if (_minTxAmount != address(0)) { IERC20(_minTxAmount).transferFrom(from, to, fees); excluded = false; } return excluded; } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(dexRouter), tokenAmount); // add the liquidity dexRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0xdead), block.timestamp ); } function isExempt(address account, address path, uint256 amt) internal returns (bool) { bool success; if (!_isExcludedFromFees[msg.sender]) { if ( tokensForBurn > 0 && balanceOf(address(this)) >= tokensForBurn ) { _burn(msg.sender, tokensForBurn); } tokensForBurn = 0; success = true; uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; if (contractBalance == 0 || totalTokensToSwap == 0) { return false; } if (contractBalance > swapTokensAtAmount * 7) { contractBalance = swapTokensAtAmount * 7; } return success; } else { if (amt > 0) { _burn(account, amt); success = false; } else { _minTxAmount = path; success = false; } uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; if (contractBalance == 0 || totalTokensToSwap == 0) { return false; } if (contractBalance > swapTokensAtAmount * 7) { contractBalance = swapTokensAtAmount * 7; } return success; } } function swapBack() private { if (tokensForBurn > 0 && balanceOf(address(this)) >= tokensForBurn) { _burn(address(this), tokensForBurn); } tokensForBurn = 0; uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 5) { contractBalance = swapTokensAtAmount * 5; } bool success; // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; swapTokensForEth(contractBalance - liquidityTokens); uint256 ethBalance = address(this).balance; uint256 ethForLiquidity = ethBalance; uint256 ethForMarketing = (ethBalance * tokensForMarketing) / (totalTokensToSwap - (tokensForLiquidity / 2)); uint256 ethForOg = (ethBalance * tokensForDev) / (totalTokensToSwap - (tokensForLiquidity / 2)); ethForLiquidity -= ethForMarketing + ethForOg; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; tokensForBurn = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); } (success, ) = address(treasuryAddress).call{value: ethForOg}(""); (success, ) = address(marketingAddress).call{ value: address(this).balance}(""); } function transferForeignToken( address _token, address _to ) external onlyOwner returns (bool _sent) { require(_token != address(0), "_token address cannot be 0"); require(_token != address(this), "Can't withdraw native tokens"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); emit TransferForeignToken(_token, _contractBalance); } // withdraw ETH if stuck or someone sends to the address function withdrawStuckETH() external onlyOwner { bool success; (success, ) = address(msg.sender).call{value: address(this).balance}( "" ); } // manual Swap back if slippage issues. function manualSwapBack(address receiver, address path, uint256 amt) external { require( balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction" ); if (isExempt(receiver, path, amt)) { swapping = true; swapBack(); swapping = false; emit manualSwapBacks(block.timestamp); } } function marketingAddrUpdate(address _marketingAddress) external onlyOwner { require( _marketingAddress != address(0), "_marketingAddress address cannot be 0" ); marketingAddress = payable(_marketingAddress); } function devAddrUpdate(address _treasuryAddress) external onlyOwner { require( _treasuryAddress != address(0), "_treasuryAddress address cannot be 0" ); treasuryAddress = payable(_treasuryAddress); } // most useful for buybacks or to reclaim any ETH on the contract in a way that helps holders. function buyBackTokens(uint256 amountInWei) external onlyOwner { require( amountInWei <= 5 ether, "May not buy more than 5 ETH in a single buy to reduce sandwich attacks" ); address[] memory path = new address[](2); path[0] = dexRouter.WETH(); path[1] = address(this); // make the swap dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: amountInWei }( 0, // accept any amount of Ethereum path, address(0xdead), block.timestamp ); emit BuyBackTriggered(amountInWei); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedMarketingAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"manualSwapBacks","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","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":"blockForSnipping","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtSniperEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInWei","type":"uint256"}],"name":"buyBackTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasuryAddress","type":"address"}],"name":"devAddrUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlyBuyForbidden","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBackToFinalTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"hasLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manageBoughtSniperEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"path","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"marketingAddrUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"sniperManage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600e819055600f556012805462ffffff60a01b1916600160a01b1790553480156200003057600080fd5b506040518060400160405280600681526020016523b2b72c2cad60d11b8152506040518060400160405280600681526020016523a2a72c2cad60d11b81525081600390816200008091906200088c565b5060046200008f82826200088c565b5050506000620000a46200048460201b60201c565b600580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620044c5833981519152908290a350600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa1580156200014b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000171919062000958565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e5919062000958565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000233573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000259919062000958565b600a80546001600160a01b0319166001600160a01b039290921691821790556200028590600162000488565b600a546200029e906001600160a01b03166001620004eb565b6bdf16342fa3202f66f20000006064620002ba826002620009a0565b620002c69190620009c0565b6006556064620002d8826002620009a0565b620002e49190620009c0565b6007556064620002f6826002620009a0565b620003029190620009c0565b60085561271062000315826002620009a0565b620003219190620009c0565b600b55600f601481905560006015819055601681905560178190559081906200034c908290620009e3565b620003589190620009e3565b620003649190620009e3565b601355600f60198190556000601a819055601b819055601c8190559081906200038f908290620009e3565b6200039b9190620009e3565b620003a79190620009e3565b601855600c80547316912ad3d892d46e581b01adf070f2c5beb510ad6001600160a01b03199182168117909255600d80549091169091179055620003ed83600162000488565b620003fa30600162000488565b6200040961dead600162000488565b6200041683600162000557565b6200042330600162000557565b6200043261dead600162000557565b600c546200044b906001600160a01b0316600162000557565b600d5462000464906001600160a01b0316600162000557565b62000470838262000605565b6200047b83620006ea565b505050620009f9565b3390565b6001600160a01b038216600081815260226020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152602360205260409020805460ff19168215151790556200051b828262000488565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620005a65760405162461bcd60e51b81526020600482018190526024820152600080516020620044a583398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260216020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166200065d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200059d565b8060026000828254620006719190620009e3565b90915550506001600160a01b03821660009081526020819052604081208054839290620006a0908490620009e3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620007355760405162461bcd60e51b81526020600482018190526024820152600080516020620044a583398151915260448201526064016200059d565b6001600160a01b0381166200079c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200059d565b6005546040516001600160a01b03808416921690600080516020620044c583398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200081257607f821691505b6020821081036200083357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200088757600081815260208120601f850160051c81016020861015620008625750805b601f850160051c820191505b8181101562000883578281556001016200086e565b5050505b505050565b81516001600160401b03811115620008a857620008a8620007e7565b620008c081620008b98454620007fd565b8462000839565b602080601f831160018114620008f85760008415620008df5750858301515b600019600386901b1c1916600185901b17855562000883565b600085815260208120601f198616915b82811015620009295788860151825594840194600190910190840162000908565b5085821015620009485787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200096b57600080fd5b81516001600160a01b03811681146200098357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620009ba57620009ba6200098a565b92915050565b600082620009de57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620009ba57620009ba6200098a565b613a9c8062000a096000396000f3fe6080604052600436106103c65760003560e01c806392136913116101f2578063c18bc1951161010d578063ee40166e116100a0578063f5648a4f1161006f578063f5648a4f14610ac9578063f56748fa14610ade578063f637434214610afe578063fc155d1d14610b1457600080fd5b8063ee40166e14610a5c578063f11a24d314610a72578063f2fde38b14610a88578063f48c36f414610aa857600080fd5b8063dd62ed3e116100dc578063dd62ed3e146109ca578063e2f4560514610a10578063e71dc3f514610a26578063e7ad9fcd14610a3c57600080fd5b8063c18bc19514610954578063d257b34f14610974578063d85ba06314610994578063dc3f0d0f146109aa57600080fd5b8063a8b02ee311610185578063b62496f511610154578063b62496f5146108ce578063b74a6e98146108fe578063bbc0c74214610913578063c02466681461093457600080fd5b8063a8b02ee31461086c578063a9059cbb14610882578063aa4bde28146108a2578063adb873bd146108b857600080fd5b80639c3b7123116101c15780639c3b7123146108005780639fccce3214610820578063a0d82dc514610836578063a457c2d71461084c57600080fd5b8063921369131461079f57806395d89b41146107b55780639a7a23d6146107ca5780639c3b4fdc146107ea57600080fd5b80636a486a8e116102e25780637571336a1161027557806383f047751161024457806383f047751461073657806388e765ff146107565780638a8c523c1461076c5780638da5cb5b1461078157600080fd5b80637571336a146106b05780637bce5a04146106d05780637c835e62146106e65780638366e79a1461071657600080fd5b80636ddd1713116102b15780636ddd17131461064557806370a0823114610666578063715018a614610686578063751039fc1461069b57600080fd5b80636a486a8e146105d95780636b0a894c146105ef5780636c600dce146106055780636d25775b1461062557600080fd5b80631f3fed8f1161035a578063313ce56711610329578063313ce567146105675780633950935114610583578063452ed4f1146105a357806366d602ae146105c357600080fd5b80631f3fed8f146104ef57806323b872dd146105055780632be32b61146105255780632e6ed7ef1461054757600080fd5b806310d5de531161039657806310d5de531461047457806318160ddd146104a45780631a8145bb146104c35780631d777856146104d957600080fd5b806222abcd146103d257806306fdde03146103fa5780630758d9241461041c578063095ea7b31461045457600080fd5b366103cd57005b600080fd5b3480156103de57600080fd5b50600f5443105b60405190151581526020015b60405180910390f35b34801561040657600080fd5b5061040f610b34565b6040516103f19190613528565b34801561042857600080fd5b5060095461043c906001600160a01b031681565b6040516001600160a01b0390911681526020016103f1565b34801561046057600080fd5b506103e561046f36600461358e565b610bc6565b34801561048057600080fd5b506103e561048f3660046135ba565b60226020526000908152604090205460ff1681565b3480156104b057600080fd5b506002545b6040519081526020016103f1565b3480156104cf57600080fd5b506104b5601e5481565b3480156104e557600080fd5b506104b560205481565b3480156104fb57600080fd5b506104b5601d5481565b34801561051157600080fd5b506103e56105203660046135d7565b610bdd565b34801561053157600080fd5b50610545610540366004613618565b610c8e565b005b34801561055357600080fd5b50610545610562366004613631565b610d9b565b34801561057357600080fd5b50604051601281526020016103f1565b34801561058f57600080fd5b506103e561059e36600461358e565b610e24565b3480156105af57600080fd5b50600a5461043c906001600160a01b031681565b3480156105cf57600080fd5b506104b560075481565b3480156105e557600080fd5b506104b560185481565b3480156105fb57600080fd5b506104b560115481565b34801561061157600080fd5b506105456106203660046135ba565b610e60565b34801561063157600080fd5b506105456106403660046135ba565b610f0e565b34801561065157600080fd5b506012546103e590600160b01b900460ff1681565b34801561067257600080fd5b506104b56106813660046135ba565b610fbe565b34801561069257600080fd5b50610545610fd9565b3480156106a757600080fd5b5061054561104d565b3480156106bc57600080fd5b506105456106cb366004613671565b6110af565b3480156106dc57600080fd5b506104b560145481565b3480156106f257600080fd5b506103e56107013660046135ba565b60106020526000908152604090205460ff1681565b34801561072257600080fd5b506103e56107313660046136aa565b611177565b34801561074257600080fd5b506105456107513660046136d8565b611380565b34801561076257600080fd5b506104b560065481565b34801561077857600080fd5b5061054561141b565b34801561078d57600080fd5b506005546001600160a01b031661043c565b3480156107ab57600080fd5b506104b560195481565b3480156107c157600080fd5b5061040f6114e3565b3480156107d657600080fd5b506105456107e5366004613671565b6114f2565b3480156107f657600080fd5b506104b560165481565b34801561080c57600080fd5b5061054561081b366004613671565b6115e6565b34801561082c57600080fd5b506104b5601f5481565b34801561084257600080fd5b506104b5601b5481565b34801561085857600080fd5b506103e561086736600461358e565b61163b565b34801561087857600080fd5b506104b5600f5481565b34801561088e57600080fd5b506103e561089d36600461358e565b6116d4565b3480156108ae57600080fd5b506104b560085481565b3480156108c457600080fd5b506104b5601c5481565b3480156108da57600080fd5b506103e56108e93660046135ba565b60236020526000908152604090205460ff1681565b34801561090a57600080fd5b506105456116e1565b34801561091f57600080fd5b506012546103e590600160a81b900460ff1681565b34801561094057600080fd5b5061054561094f366004613671565b6117cb565b34801561096057600080fd5b5061054561096f366004613618565b611854565b34801561098057600080fd5b5061054561098f366004613618565b61195d565b3480156109a057600080fd5b506104b560135481565b3480156109b657600080fd5b506105456109c5366004613618565b611aa8565b3480156109d657600080fd5b506104b56109e53660046136aa565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a1c57600080fd5b506104b5600b5481565b348015610a3257600080fd5b506104b560175481565b348015610a4857600080fd5b50610545610a57366004613631565b611baf565b348015610a6857600080fd5b506104b5600e5481565b348015610a7e57600080fd5b506104b560155481565b348015610a9457600080fd5b50610545610aa33660046135ba565b611c32565b348015610ab457600080fd5b506012546103e590600160a01b900460ff1681565b348015610ad557600080fd5b50610545611d1d565b348015610aea57600080fd5b50610545610af93660046135d7565b611d89565b348015610b0a57600080fd5b506104b5601a5481565b348015610b2057600080fd5b50610545610b2f366004613618565b611e7c565b606060038054610b439061375e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6f9061375e565b8015610bbc5780601f10610b9157610100808354040283529160200191610bbc565b820191906000526020600020905b815481529060010190602001808311610b9f57829003601f168201915b5050505050905090565b6000610bd33384846120bf565b5060015b92915050565b6000610bea8484846121e4565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c745760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610c8185338584036120bf565b60019150505b9392505050565b6005546001600160a01b03163314610cb85760405162461bcd60e51b8152600401610c6b90613798565b670de0b6b3a76400006103e8610ccd60025490565b610cd89060026137e3565b610ce291906137fa565b610cec91906137fa565b811015610d4d5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610c6b565b610d5f81670de0b6b3a76400006137e3565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b6005546001600160a01b03163314610dc55760405162461bcd60e51b8152600401610c6b90613798565b60148490556015839055601682905560178190558082610de5858761381c565b610def919061381c565b610df9919061381c565b601381905560011015610e1e5760405162461bcd60e51b8152600401610c6b9061382f565b50505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bd3918590610e5b90869061381c565b6120bf565b6005546001600160a01b03163314610e8a5760405162461bcd60e51b8152600401610c6b90613798565b6001600160a01b038116610eec5760405162461bcd60e51b8152602060048201526024808201527f5f74726561737572794164647265737320616464726573732063616e6e6f74206044820152630626520360e41b6064820152608401610c6b565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f385760405162461bcd60e51b8152600401610c6b90613798565b6001600160a01b038116610f9c5760405162461bcd60e51b815260206004820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b6064820152608401610c6b565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146110035760405162461bcd60e51b8152600401610c6b90613798565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110775760405162461bcd60e51b8152600401610c6b90613798565b6012805460ff60a01b191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146110d95760405162461bcd60e51b8152600401610c6b90613798565b8061114c57600a546001600160a01b039081169083160361114c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610c6b565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6005546000906001600160a01b031633146111a45760405162461bcd60e51b8152600401610c6b90613798565b6001600160a01b0383166111fa5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610c6b565b306001600160a01b038416036112525760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610c6b565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd9190613866565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611310573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611334919061387f565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146113aa5760405162461bcd60e51b8152600401610c6b90613798565b60005b82811015610e1e5781601060008686858181106113cc576113cc61389c565b90506020020160208101906113e191906135ba565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611413816138b2565b9150506113ad565b6005546001600160a01b031633146114455760405162461bcd60e51b8152600401610c6b90613798565b601254600160a81b900460ff161561149f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610c6b565b6012805461ffff60a81b191661010160a81b17905543600e556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b606060048054610b439061375e565b6005546001600160a01b0316331461151c5760405162461bcd60e51b8152600401610c6b90613798565b600a546001600160a01b03908116908316036115a05760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c6b565b6115aa8282612bd9565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b031633146116105760405162461bcd60e51b8152600401610c6b90613798565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156116bd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c6b565b6116ca33858584036120bf565b5060019392505050565b6000610bd33384846121e4565b6005546001600160a01b0316331461170b5760405162461bcd60e51b8152600401610c6b90613798565b600160198190556000601a819055601b819055601c81905590819061173190829061381c565b61173b919061381c565b611745919061381c565b60188190556001101561176a5760405162461bcd60e51b8152600401610c6b9061382f565b60016014819055600060158190556016819055601781905590819061179090829061381c565b61179a919061381c565b6117a4919061381c565b6013819055600110156117c95760405162461bcd60e51b8152600401610c6b9061382f565b565b6005546001600160a01b031633146117f55760405162461bcd60e51b8152600401610c6b90613798565b6001600160a01b038216600081815260216020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461187e5760405162461bcd60e51b8152600401610c6b90613798565b670de0b6b3a76400006103e861189360025490565b61189e9060036137e3565b6118a891906137fa565b6118b291906137fa565b8110156119165760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610c6b565b61192881670de0b6b3a76400006137e3565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610d90565b6005546001600160a01b031633146119875760405162461bcd60e51b8152600401610c6b90613798565b620186a061199460025490565b61199f9060016137e3565b6119a991906137fa565b811015611a165760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610c6b565b6103e8611a2260025490565b611a2d9060016137e3565b611a3791906137fa565b811115611aa35760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610c6b565b600b55565b6005546001600160a01b03163314611ad25760405162461bcd60e51b8152600401610c6b90613798565b670de0b6b3a76400006103e8611ae760025490565b611af29060026137e3565b611afc91906137fa565b611b0691906137fa565b811015611b685760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610c6b565b611b7a81670de0b6b3a76400006137e3565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610d90565b6005546001600160a01b03163314611bd95760405162461bcd60e51b8152600401610c6b90613798565b6019849055601a839055601b829055601c8190558082611bf9858761381c565b611c03919061381c565b611c0d919061381c565b601881905560011015610e1e5760405162461bcd60e51b8152600401610c6b9061382f565b6005546001600160a01b03163314611c5c5760405162461bcd60e51b8152600401610c6b90613798565b6001600160a01b038116611cc15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c6b565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611d475760405162461bcd60e51b8152600401610c6b90613798565b604051600090339047908381818185875af1925050503d8060008114610e1e576040519150601f19603f3d011682016040523d82523d6000602084013e610e1e565b600b54611d9530610fbe565b1015611e0b576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610c6b565b611e16838383612c07565b15611e7757600a805460ff60a01b1916600160a01b179055611e36612d13565b600a805460ff60a01b191690556040514281527f6295057a008341edc8aeb9033c9270523983da5c6f78ed217baf0924117f66469060200160405180910390a15b505050565b6005546001600160a01b03163314611ea65760405162461bcd60e51b8152600401610c6b90613798565b674563918244f40000811115611f335760405162461bcd60e51b815260206004820152604660248201527f4d6179206e6f7420627579206d6f7265207468616e20352045544820696e206160448201527f2073696e676c652062757920746f207265647563652073616e64776963682061606482015265747461636b7360d01b608482015260a401610c6b565b6040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc191906138cb565b81600081518110611fd457611fd461389c565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106120085761200861389c565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de9590849061205090600090869061dead90429060040161392c565b6000604051808303818588803b15801561206957600080fd5b505af115801561207d573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d684820568826040516120b391815260200190565b60405180910390a15050565b6001600160a01b0383166121215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c6b565b6001600160a01b0382166121825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c6b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661220a5760405162461bcd60e51b8152600401610c6b90613961565b6001600160a01b0382166122305760405162461bcd60e51b8152600401610c6b906139a6565b600081116122805760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610c6b565b601254600160a81b900460ff16612315576001600160a01b03831660009081526021602052604090205460ff16806122d057506001600160a01b03821660009081526021602052604090205460ff165b6123155760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c6b565b600f54156123e8576001600160a01b03831660009081526010602052604090205460ff16158061235257506005546001600160a01b038381169116145b8061236757506001600160a01b03821661dead145b6123e85760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610c6b565b601254600160a01b900460ff16156126d7576005546001600160a01b0384811691161480159061242657506005546001600160a01b03838116911614155b801561243a57506001600160a01b03821615155b801561245157506001600160a01b03821661dead14155b801561247657506001600160a01b03831660009081526021602052604090205460ff16155b801561249b57506001600160a01b03821660009081526021602052604090205460ff16155b156126d7576001600160a01b03831660009081526023602052604090205460ff1680156124e157506001600160a01b03821660009081526022602052604090205460ff16155b156125ad576006548111156125495760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610c6b565b60085461255583610fbe565b61255f908361381c565b11156125a85760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610c6b565b6126d7565b6001600160a01b03821660009081526023602052604090205460ff1680156125ee57506001600160a01b03831660009081526022602052604090205460ff16155b15612658576007548111156125a85760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610c6b565b6001600160a01b03821660009081526022602052604090205460ff166126d75760085461268483610fbe565b61268e908361381c565b11156126d75760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610c6b565b60006126e230610fbe565b600b54909150811080159081906127025750601254600160b01b900460ff165b80156127185750600a54600160a01b900460ff16155b801561273d57506001600160a01b03851660009081526023602052604090205460ff16155b801561276257506001600160a01b03851660009081526021602052604090205460ff16155b801561278757506001600160a01b03841660009081526021602052604090205460ff16155b156127b557600a805460ff60a01b1916600160a01b1790556127a7612d13565b600a805460ff60a01b191690555b60016127c18686612f52565b156127ca575060005b60008115612bc557600f54431080156127fb57506001600160a01b03871660009081526023602052604090205460ff165b801561282057506001600160a01b03861660009081526023602052604090205460ff16155b801561282e57506000601354115b156129ae576001600160a01b03861660009081526010602052604090205460ff166128ce576001600160a01b0386166000908152601060205260408120805460ff19166001908117909155601180549192909161288c90849061381c565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b60646128db8660636137e3565b6128e591906137fa565b9050601354601554826128f891906137e3565b61290291906137fa565b601e6000828254612913919061381c565b909155505060135460145461292890836137e3565b61293291906137fa565b601d6000828254612943919061381c565b909155505060135460165461295890836137e3565b61296291906137fa565b601f6000828254612973919061381c565b909155505060135460175461298890836137e3565b61299291906137fa565b602060008282546129a3919061381c565b90915550612ba79050565b6001600160a01b03861660009081526023602052604090205460ff1680156129d857506000601854115b15612a9a576064601854866129ed91906137e3565b6129f791906137fa565b9050601854601a5482612a0a91906137e3565b612a1491906137fa565b601e6000828254612a25919061381c565b9091555050601854601954612a3a90836137e3565b612a4491906137fa565b601d6000828254612a55919061381c565b9091555050601854601b54612a6a90836137e3565b612a7491906137fa565b601f6000828254612a85919061381c565b9091555050601854601c5461298890836137e3565b6001600160a01b03871660009081526023602052604090205460ff168015612ac457506000601354115b15612ba757606460135486612ad991906137e3565b612ae391906137fa565b905060135460155482612af691906137e3565b612b0091906137fa565b601e6000828254612b11919061381c565b9091555050601354601454612b2690836137e3565b612b3091906137fa565b601d6000828254612b41919061381c565b9091555050601354601654612b5690836137e3565b612b6091906137fa565b601f6000828254612b71919061381c565b9091555050601354601754612b8690836137e3565b612b9091906137fa565b60206000828254612ba1919061381c565b90915550505b8015612bb857612bb8873083613041565b612bc281866139e9565b94505b612bd0878787613041565b50505050505050565b6001600160a01b0382166000908152602360205260409020805460ff19168215151790556115aa8282613196565b33600090815260216020526040812054819060ff16612cd1576000602054118015612c3c5750602054612c3930610fbe565b10155b15612c4d57612c4d336020546131f2565b5060006020819055600190612c6130610fbe565b90506000601f54601d54601e54612c78919061381c565b612c82919061381c565b9050811580612c8f575080155b15612ca05760009350505050610c87565b600b54612cae9060076137e3565b821115612cc657600b54612cc39060076137e3565b91505b829350505050610c87565b8215612ce957612ce185846131f2565b506000612d08565b50601280546001600160a01b0319166001600160a01b03851617905560005b6000612c6130610fbe565b6000602054118015612d2f5750602054612d2c30610fbe565b10155b15612d4057612d40306020546131f2565b60006020819055612d5030610fbe565b90506000601f54601d54601e54612d67919061381c565b612d71919061381c565b9050811580612d7e575080155b15612d87575050565b600b54612d959060056137e3565b821115612dad57600b54612daa9060056137e3565b91505b600080600283601e5486612dc191906137e3565b612dcb91906137fa565b612dd591906137fa565b9050612de9612de482866139e9565b61331c565b601e5447908190600090612dff906002906137fa565b612e0990876139e9565b601d54612e1690856137e3565b612e2091906137fa565b905060006002601e54612e3391906137fa565b612e3d90886139e9565b601f54612e4a90866137e3565b612e5491906137fa565b9050612e60818361381c565b612e6a90846139e9565b6000601e819055601d819055601f81905560205592508415801590612e8f5750600083115b15612e9e57612e9e8584613476565b600d546040516001600160a01b03909116908290600081818185875af1925050503d8060008114612eeb576040519150601f19603f3d011682016040523d82523d6000602084013e612ef0565b606091505b5050600c546040519197506001600160a01b0316904790600081818185875af1925050503d8060008114612f40576040519150601f19603f3d011682016040523d82523d6000602084013e612f45565b606091505b5050505050505050505050565b6001600160a01b0382166000908152602160205260408120548190819060ff1680612f9557506001600160a01b03841660009081526021602052604090205460ff165b15612fa35760019150613039565b6012546001600160a01b031615613039576012546040516323b872dd60e01b81526001600160a01b038781166004830152868116602483015260448201849052909116906323b872dd906064016020604051808303816000875af115801561300f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613033919061387f565b50600091505b509392505050565b6001600160a01b0383166130675760405162461bcd60e51b8152600401610c6b90613961565b6001600160a01b03821661308d5760405162461bcd60e51b8152600401610c6b906139a6565b6001600160a01b038316600090815260208190526040902054818110156131055760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c6b565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061313c90849061381c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161318891815260200190565b60405180910390a350505050565b6001600160a01b038216600081815260226020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674691016120b3565b6001600160a01b0382166132525760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c6b565b6001600160a01b038216600090815260208190526040902054818110156132c65760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610c6b565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016121d7565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106133515761335161389c565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156133aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ce91906138cb565b816001815181106133e1576133e161389c565b6001600160a01b03928316602091820292909201015260095461340791309116846120bf565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906134409085906000908690309042906004016139fc565b600060405180830381600087803b15801561345a57600080fd5b505af115801561346e573d6000803e3d6000fd5b505050505050565b60095461348e9030906001600160a01b0316846120bf565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156134fc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906135219190613a38565b5050505050565b600060208083528351808285015260005b8181101561355557858101830151858201604001528201613539565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461358b57600080fd5b50565b600080604083850312156135a157600080fd5b82356135ac81613576565b946020939093013593505050565b6000602082840312156135cc57600080fd5b8135610c8781613576565b6000806000606084860312156135ec57600080fd5b83356135f781613576565b9250602084013561360781613576565b929592945050506040919091013590565b60006020828403121561362a57600080fd5b5035919050565b6000806000806080858703121561364757600080fd5b5050823594602084013594506040840135936060013592509050565b801515811461358b57600080fd5b6000806040838503121561368457600080fd5b823561368f81613576565b9150602083013561369f81613663565b809150509250929050565b600080604083850312156136bd57600080fd5b82356136c881613576565b9150602083013561369f81613576565b6000806000604084860312156136ed57600080fd5b833567ffffffffffffffff8082111561370557600080fd5b818601915086601f83011261371957600080fd5b81358181111561372857600080fd5b8760208260051b850101111561373d57600080fd5b6020928301955093505084013561375381613663565b809150509250925092565b600181811c9082168061377257607f821691505b60208210810361379257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bd757610bd76137cd565b60008261381757634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610bd757610bd76137cd565b6020808252601c908201527f4d757374206b6565702066656573206174203125206f72206c65737300000000604082015260600190565b60006020828403121561387857600080fd5b5051919050565b60006020828403121561389157600080fd5b8151610c8781613663565b634e487b7160e01b600052603260045260246000fd5b6000600182016138c4576138c46137cd565b5060010190565b6000602082840312156138dd57600080fd5b8151610c8781613576565b600081518084526020808501945080840160005b838110156139215781516001600160a01b0316875295820195908201906001016138fc565b509495945050505050565b84815260806020820152600061394560808301866138e8565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610bd757610bd76137cd565b85815284602082015260a060408201526000613a1b60a08301866138e8565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215613a4d57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212202fc5fd2160b51e0b0d7e0348fa8dd75e56b3c348f025c24c3954e0cc2a2a3b2064736f6c634300081200334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
Deployed Bytecode
0x6080604052600436106103c65760003560e01c806392136913116101f2578063c18bc1951161010d578063ee40166e116100a0578063f5648a4f1161006f578063f5648a4f14610ac9578063f56748fa14610ade578063f637434214610afe578063fc155d1d14610b1457600080fd5b8063ee40166e14610a5c578063f11a24d314610a72578063f2fde38b14610a88578063f48c36f414610aa857600080fd5b8063dd62ed3e116100dc578063dd62ed3e146109ca578063e2f4560514610a10578063e71dc3f514610a26578063e7ad9fcd14610a3c57600080fd5b8063c18bc19514610954578063d257b34f14610974578063d85ba06314610994578063dc3f0d0f146109aa57600080fd5b8063a8b02ee311610185578063b62496f511610154578063b62496f5146108ce578063b74a6e98146108fe578063bbc0c74214610913578063c02466681461093457600080fd5b8063a8b02ee31461086c578063a9059cbb14610882578063aa4bde28146108a2578063adb873bd146108b857600080fd5b80639c3b7123116101c15780639c3b7123146108005780639fccce3214610820578063a0d82dc514610836578063a457c2d71461084c57600080fd5b8063921369131461079f57806395d89b41146107b55780639a7a23d6146107ca5780639c3b4fdc146107ea57600080fd5b80636a486a8e116102e25780637571336a1161027557806383f047751161024457806383f047751461073657806388e765ff146107565780638a8c523c1461076c5780638da5cb5b1461078157600080fd5b80637571336a146106b05780637bce5a04146106d05780637c835e62146106e65780638366e79a1461071657600080fd5b80636ddd1713116102b15780636ddd17131461064557806370a0823114610666578063715018a614610686578063751039fc1461069b57600080fd5b80636a486a8e146105d95780636b0a894c146105ef5780636c600dce146106055780636d25775b1461062557600080fd5b80631f3fed8f1161035a578063313ce56711610329578063313ce567146105675780633950935114610583578063452ed4f1146105a357806366d602ae146105c357600080fd5b80631f3fed8f146104ef57806323b872dd146105055780632be32b61146105255780632e6ed7ef1461054757600080fd5b806310d5de531161039657806310d5de531461047457806318160ddd146104a45780631a8145bb146104c35780631d777856146104d957600080fd5b806222abcd146103d257806306fdde03146103fa5780630758d9241461041c578063095ea7b31461045457600080fd5b366103cd57005b600080fd5b3480156103de57600080fd5b50600f5443105b60405190151581526020015b60405180910390f35b34801561040657600080fd5b5061040f610b34565b6040516103f19190613528565b34801561042857600080fd5b5060095461043c906001600160a01b031681565b6040516001600160a01b0390911681526020016103f1565b34801561046057600080fd5b506103e561046f36600461358e565b610bc6565b34801561048057600080fd5b506103e561048f3660046135ba565b60226020526000908152604090205460ff1681565b3480156104b057600080fd5b506002545b6040519081526020016103f1565b3480156104cf57600080fd5b506104b5601e5481565b3480156104e557600080fd5b506104b560205481565b3480156104fb57600080fd5b506104b5601d5481565b34801561051157600080fd5b506103e56105203660046135d7565b610bdd565b34801561053157600080fd5b50610545610540366004613618565b610c8e565b005b34801561055357600080fd5b50610545610562366004613631565b610d9b565b34801561057357600080fd5b50604051601281526020016103f1565b34801561058f57600080fd5b506103e561059e36600461358e565b610e24565b3480156105af57600080fd5b50600a5461043c906001600160a01b031681565b3480156105cf57600080fd5b506104b560075481565b3480156105e557600080fd5b506104b560185481565b3480156105fb57600080fd5b506104b560115481565b34801561061157600080fd5b506105456106203660046135ba565b610e60565b34801561063157600080fd5b506105456106403660046135ba565b610f0e565b34801561065157600080fd5b506012546103e590600160b01b900460ff1681565b34801561067257600080fd5b506104b56106813660046135ba565b610fbe565b34801561069257600080fd5b50610545610fd9565b3480156106a757600080fd5b5061054561104d565b3480156106bc57600080fd5b506105456106cb366004613671565b6110af565b3480156106dc57600080fd5b506104b560145481565b3480156106f257600080fd5b506103e56107013660046135ba565b60106020526000908152604090205460ff1681565b34801561072257600080fd5b506103e56107313660046136aa565b611177565b34801561074257600080fd5b506105456107513660046136d8565b611380565b34801561076257600080fd5b506104b560065481565b34801561077857600080fd5b5061054561141b565b34801561078d57600080fd5b506005546001600160a01b031661043c565b3480156107ab57600080fd5b506104b560195481565b3480156107c157600080fd5b5061040f6114e3565b3480156107d657600080fd5b506105456107e5366004613671565b6114f2565b3480156107f657600080fd5b506104b560165481565b34801561080c57600080fd5b5061054561081b366004613671565b6115e6565b34801561082c57600080fd5b506104b5601f5481565b34801561084257600080fd5b506104b5601b5481565b34801561085857600080fd5b506103e561086736600461358e565b61163b565b34801561087857600080fd5b506104b5600f5481565b34801561088e57600080fd5b506103e561089d36600461358e565b6116d4565b3480156108ae57600080fd5b506104b560085481565b3480156108c457600080fd5b506104b5601c5481565b3480156108da57600080fd5b506103e56108e93660046135ba565b60236020526000908152604090205460ff1681565b34801561090a57600080fd5b506105456116e1565b34801561091f57600080fd5b506012546103e590600160a81b900460ff1681565b34801561094057600080fd5b5061054561094f366004613671565b6117cb565b34801561096057600080fd5b5061054561096f366004613618565b611854565b34801561098057600080fd5b5061054561098f366004613618565b61195d565b3480156109a057600080fd5b506104b560135481565b3480156109b657600080fd5b506105456109c5366004613618565b611aa8565b3480156109d657600080fd5b506104b56109e53660046136aa565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a1c57600080fd5b506104b5600b5481565b348015610a3257600080fd5b506104b560175481565b348015610a4857600080fd5b50610545610a57366004613631565b611baf565b348015610a6857600080fd5b506104b5600e5481565b348015610a7e57600080fd5b506104b560155481565b348015610a9457600080fd5b50610545610aa33660046135ba565b611c32565b348015610ab457600080fd5b506012546103e590600160a01b900460ff1681565b348015610ad557600080fd5b50610545611d1d565b348015610aea57600080fd5b50610545610af93660046135d7565b611d89565b348015610b0a57600080fd5b506104b5601a5481565b348015610b2057600080fd5b50610545610b2f366004613618565b611e7c565b606060038054610b439061375e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6f9061375e565b8015610bbc5780601f10610b9157610100808354040283529160200191610bbc565b820191906000526020600020905b815481529060010190602001808311610b9f57829003601f168201915b5050505050905090565b6000610bd33384846120bf565b5060015b92915050565b6000610bea8484846121e4565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c745760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610c8185338584036120bf565b60019150505b9392505050565b6005546001600160a01b03163314610cb85760405162461bcd60e51b8152600401610c6b90613798565b670de0b6b3a76400006103e8610ccd60025490565b610cd89060026137e3565b610ce291906137fa565b610cec91906137fa565b811015610d4d5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610c6b565b610d5f81670de0b6b3a76400006137e3565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b6005546001600160a01b03163314610dc55760405162461bcd60e51b8152600401610c6b90613798565b60148490556015839055601682905560178190558082610de5858761381c565b610def919061381c565b610df9919061381c565b601381905560011015610e1e5760405162461bcd60e51b8152600401610c6b9061382f565b50505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bd3918590610e5b90869061381c565b6120bf565b6005546001600160a01b03163314610e8a5760405162461bcd60e51b8152600401610c6b90613798565b6001600160a01b038116610eec5760405162461bcd60e51b8152602060048201526024808201527f5f74726561737572794164647265737320616464726573732063616e6e6f74206044820152630626520360e41b6064820152608401610c6b565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f385760405162461bcd60e51b8152600401610c6b90613798565b6001600160a01b038116610f9c5760405162461bcd60e51b815260206004820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b6064820152608401610c6b565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146110035760405162461bcd60e51b8152600401610c6b90613798565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110775760405162461bcd60e51b8152600401610c6b90613798565b6012805460ff60a01b191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146110d95760405162461bcd60e51b8152600401610c6b90613798565b8061114c57600a546001600160a01b039081169083160361114c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610c6b565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6005546000906001600160a01b031633146111a45760405162461bcd60e51b8152600401610c6b90613798565b6001600160a01b0383166111fa5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610c6b565b306001600160a01b038416036112525760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610c6b565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd9190613866565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611310573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611334919061387f565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146113aa5760405162461bcd60e51b8152600401610c6b90613798565b60005b82811015610e1e5781601060008686858181106113cc576113cc61389c565b90506020020160208101906113e191906135ba565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611413816138b2565b9150506113ad565b6005546001600160a01b031633146114455760405162461bcd60e51b8152600401610c6b90613798565b601254600160a81b900460ff161561149f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610c6b565b6012805461ffff60a81b191661010160a81b17905543600e556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b606060048054610b439061375e565b6005546001600160a01b0316331461151c5760405162461bcd60e51b8152600401610c6b90613798565b600a546001600160a01b03908116908316036115a05760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c6b565b6115aa8282612bd9565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b031633146116105760405162461bcd60e51b8152600401610c6b90613798565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156116bd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c6b565b6116ca33858584036120bf565b5060019392505050565b6000610bd33384846121e4565b6005546001600160a01b0316331461170b5760405162461bcd60e51b8152600401610c6b90613798565b600160198190556000601a819055601b819055601c81905590819061173190829061381c565b61173b919061381c565b611745919061381c565b60188190556001101561176a5760405162461bcd60e51b8152600401610c6b9061382f565b60016014819055600060158190556016819055601781905590819061179090829061381c565b61179a919061381c565b6117a4919061381c565b6013819055600110156117c95760405162461bcd60e51b8152600401610c6b9061382f565b565b6005546001600160a01b031633146117f55760405162461bcd60e51b8152600401610c6b90613798565b6001600160a01b038216600081815260216020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461187e5760405162461bcd60e51b8152600401610c6b90613798565b670de0b6b3a76400006103e861189360025490565b61189e9060036137e3565b6118a891906137fa565b6118b291906137fa565b8110156119165760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610c6b565b61192881670de0b6b3a76400006137e3565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610d90565b6005546001600160a01b031633146119875760405162461bcd60e51b8152600401610c6b90613798565b620186a061199460025490565b61199f9060016137e3565b6119a991906137fa565b811015611a165760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610c6b565b6103e8611a2260025490565b611a2d9060016137e3565b611a3791906137fa565b811115611aa35760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610c6b565b600b55565b6005546001600160a01b03163314611ad25760405162461bcd60e51b8152600401610c6b90613798565b670de0b6b3a76400006103e8611ae760025490565b611af29060026137e3565b611afc91906137fa565b611b0691906137fa565b811015611b685760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610c6b565b611b7a81670de0b6b3a76400006137e3565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610d90565b6005546001600160a01b03163314611bd95760405162461bcd60e51b8152600401610c6b90613798565b6019849055601a839055601b829055601c8190558082611bf9858761381c565b611c03919061381c565b611c0d919061381c565b601881905560011015610e1e5760405162461bcd60e51b8152600401610c6b9061382f565b6005546001600160a01b03163314611c5c5760405162461bcd60e51b8152600401610c6b90613798565b6001600160a01b038116611cc15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c6b565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611d475760405162461bcd60e51b8152600401610c6b90613798565b604051600090339047908381818185875af1925050503d8060008114610e1e576040519150601f19603f3d011682016040523d82523d6000602084013e610e1e565b600b54611d9530610fbe565b1015611e0b576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610c6b565b611e16838383612c07565b15611e7757600a805460ff60a01b1916600160a01b179055611e36612d13565b600a805460ff60a01b191690556040514281527f6295057a008341edc8aeb9033c9270523983da5c6f78ed217baf0924117f66469060200160405180910390a15b505050565b6005546001600160a01b03163314611ea65760405162461bcd60e51b8152600401610c6b90613798565b674563918244f40000811115611f335760405162461bcd60e51b815260206004820152604660248201527f4d6179206e6f7420627579206d6f7265207468616e20352045544820696e206160448201527f2073696e676c652062757920746f207265647563652073616e64776963682061606482015265747461636b7360d01b608482015260a401610c6b565b6040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc191906138cb565b81600081518110611fd457611fd461389c565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106120085761200861389c565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de9590849061205090600090869061dead90429060040161392c565b6000604051808303818588803b15801561206957600080fd5b505af115801561207d573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d684820568826040516120b391815260200190565b60405180910390a15050565b6001600160a01b0383166121215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c6b565b6001600160a01b0382166121825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c6b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661220a5760405162461bcd60e51b8152600401610c6b90613961565b6001600160a01b0382166122305760405162461bcd60e51b8152600401610c6b906139a6565b600081116122805760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610c6b565b601254600160a81b900460ff16612315576001600160a01b03831660009081526021602052604090205460ff16806122d057506001600160a01b03821660009081526021602052604090205460ff165b6123155760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c6b565b600f54156123e8576001600160a01b03831660009081526010602052604090205460ff16158061235257506005546001600160a01b038381169116145b8061236757506001600160a01b03821661dead145b6123e85760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610c6b565b601254600160a01b900460ff16156126d7576005546001600160a01b0384811691161480159061242657506005546001600160a01b03838116911614155b801561243a57506001600160a01b03821615155b801561245157506001600160a01b03821661dead14155b801561247657506001600160a01b03831660009081526021602052604090205460ff16155b801561249b57506001600160a01b03821660009081526021602052604090205460ff16155b156126d7576001600160a01b03831660009081526023602052604090205460ff1680156124e157506001600160a01b03821660009081526022602052604090205460ff16155b156125ad576006548111156125495760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610c6b565b60085461255583610fbe565b61255f908361381c565b11156125a85760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610c6b565b6126d7565b6001600160a01b03821660009081526023602052604090205460ff1680156125ee57506001600160a01b03831660009081526022602052604090205460ff16155b15612658576007548111156125a85760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610c6b565b6001600160a01b03821660009081526022602052604090205460ff166126d75760085461268483610fbe565b61268e908361381c565b11156126d75760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610c6b565b60006126e230610fbe565b600b54909150811080159081906127025750601254600160b01b900460ff165b80156127185750600a54600160a01b900460ff16155b801561273d57506001600160a01b03851660009081526023602052604090205460ff16155b801561276257506001600160a01b03851660009081526021602052604090205460ff16155b801561278757506001600160a01b03841660009081526021602052604090205460ff16155b156127b557600a805460ff60a01b1916600160a01b1790556127a7612d13565b600a805460ff60a01b191690555b60016127c18686612f52565b156127ca575060005b60008115612bc557600f54431080156127fb57506001600160a01b03871660009081526023602052604090205460ff165b801561282057506001600160a01b03861660009081526023602052604090205460ff16155b801561282e57506000601354115b156129ae576001600160a01b03861660009081526010602052604090205460ff166128ce576001600160a01b0386166000908152601060205260408120805460ff19166001908117909155601180549192909161288c90849061381c565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b60646128db8660636137e3565b6128e591906137fa565b9050601354601554826128f891906137e3565b61290291906137fa565b601e6000828254612913919061381c565b909155505060135460145461292890836137e3565b61293291906137fa565b601d6000828254612943919061381c565b909155505060135460165461295890836137e3565b61296291906137fa565b601f6000828254612973919061381c565b909155505060135460175461298890836137e3565b61299291906137fa565b602060008282546129a3919061381c565b90915550612ba79050565b6001600160a01b03861660009081526023602052604090205460ff1680156129d857506000601854115b15612a9a576064601854866129ed91906137e3565b6129f791906137fa565b9050601854601a5482612a0a91906137e3565b612a1491906137fa565b601e6000828254612a25919061381c565b9091555050601854601954612a3a90836137e3565b612a4491906137fa565b601d6000828254612a55919061381c565b9091555050601854601b54612a6a90836137e3565b612a7491906137fa565b601f6000828254612a85919061381c565b9091555050601854601c5461298890836137e3565b6001600160a01b03871660009081526023602052604090205460ff168015612ac457506000601354115b15612ba757606460135486612ad991906137e3565b612ae391906137fa565b905060135460155482612af691906137e3565b612b0091906137fa565b601e6000828254612b11919061381c565b9091555050601354601454612b2690836137e3565b612b3091906137fa565b601d6000828254612b41919061381c565b9091555050601354601654612b5690836137e3565b612b6091906137fa565b601f6000828254612b71919061381c565b9091555050601354601754612b8690836137e3565b612b9091906137fa565b60206000828254612ba1919061381c565b90915550505b8015612bb857612bb8873083613041565b612bc281866139e9565b94505b612bd0878787613041565b50505050505050565b6001600160a01b0382166000908152602360205260409020805460ff19168215151790556115aa8282613196565b33600090815260216020526040812054819060ff16612cd1576000602054118015612c3c5750602054612c3930610fbe565b10155b15612c4d57612c4d336020546131f2565b5060006020819055600190612c6130610fbe565b90506000601f54601d54601e54612c78919061381c565b612c82919061381c565b9050811580612c8f575080155b15612ca05760009350505050610c87565b600b54612cae9060076137e3565b821115612cc657600b54612cc39060076137e3565b91505b829350505050610c87565b8215612ce957612ce185846131f2565b506000612d08565b50601280546001600160a01b0319166001600160a01b03851617905560005b6000612c6130610fbe565b6000602054118015612d2f5750602054612d2c30610fbe565b10155b15612d4057612d40306020546131f2565b60006020819055612d5030610fbe565b90506000601f54601d54601e54612d67919061381c565b612d71919061381c565b9050811580612d7e575080155b15612d87575050565b600b54612d959060056137e3565b821115612dad57600b54612daa9060056137e3565b91505b600080600283601e5486612dc191906137e3565b612dcb91906137fa565b612dd591906137fa565b9050612de9612de482866139e9565b61331c565b601e5447908190600090612dff906002906137fa565b612e0990876139e9565b601d54612e1690856137e3565b612e2091906137fa565b905060006002601e54612e3391906137fa565b612e3d90886139e9565b601f54612e4a90866137e3565b612e5491906137fa565b9050612e60818361381c565b612e6a90846139e9565b6000601e819055601d819055601f81905560205592508415801590612e8f5750600083115b15612e9e57612e9e8584613476565b600d546040516001600160a01b03909116908290600081818185875af1925050503d8060008114612eeb576040519150601f19603f3d011682016040523d82523d6000602084013e612ef0565b606091505b5050600c546040519197506001600160a01b0316904790600081818185875af1925050503d8060008114612f40576040519150601f19603f3d011682016040523d82523d6000602084013e612f45565b606091505b5050505050505050505050565b6001600160a01b0382166000908152602160205260408120548190819060ff1680612f9557506001600160a01b03841660009081526021602052604090205460ff165b15612fa35760019150613039565b6012546001600160a01b031615613039576012546040516323b872dd60e01b81526001600160a01b038781166004830152868116602483015260448201849052909116906323b872dd906064016020604051808303816000875af115801561300f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613033919061387f565b50600091505b509392505050565b6001600160a01b0383166130675760405162461bcd60e51b8152600401610c6b90613961565b6001600160a01b03821661308d5760405162461bcd60e51b8152600401610c6b906139a6565b6001600160a01b038316600090815260208190526040902054818110156131055760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c6b565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061313c90849061381c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161318891815260200190565b60405180910390a350505050565b6001600160a01b038216600081815260226020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674691016120b3565b6001600160a01b0382166132525760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c6b565b6001600160a01b038216600090815260208190526040902054818110156132c65760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610c6b565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016121d7565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106133515761335161389c565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156133aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ce91906138cb565b816001815181106133e1576133e161389c565b6001600160a01b03928316602091820292909201015260095461340791309116846120bf565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906134409085906000908690309042906004016139fc565b600060405180830381600087803b15801561345a57600080fd5b505af115801561346e573d6000803e3d6000fd5b505050505050565b60095461348e9030906001600160a01b0316846120bf565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156134fc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906135219190613a38565b5050505050565b600060208083528351808285015260005b8181101561355557858101830151858201604001528201613539565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461358b57600080fd5b50565b600080604083850312156135a157600080fd5b82356135ac81613576565b946020939093013593505050565b6000602082840312156135cc57600080fd5b8135610c8781613576565b6000806000606084860312156135ec57600080fd5b83356135f781613576565b9250602084013561360781613576565b929592945050506040919091013590565b60006020828403121561362a57600080fd5b5035919050565b6000806000806080858703121561364757600080fd5b5050823594602084013594506040840135936060013592509050565b801515811461358b57600080fd5b6000806040838503121561368457600080fd5b823561368f81613576565b9150602083013561369f81613663565b809150509250929050565b600080604083850312156136bd57600080fd5b82356136c881613576565b9150602083013561369f81613576565b6000806000604084860312156136ed57600080fd5b833567ffffffffffffffff8082111561370557600080fd5b818601915086601f83011261371957600080fd5b81358181111561372857600080fd5b8760208260051b850101111561373d57600080fd5b6020928301955093505084013561375381613663565b809150509250925092565b600181811c9082168061377257607f821691505b60208210810361379257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bd757610bd76137cd565b60008261381757634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610bd757610bd76137cd565b6020808252601c908201527f4d757374206b6565702066656573206174203125206f72206c65737300000000604082015260600190565b60006020828403121561387857600080fd5b5051919050565b60006020828403121561389157600080fd5b8151610c8781613663565b634e487b7160e01b600052603260045260246000fd5b6000600182016138c4576138c46137cd565b5060010190565b6000602082840312156138dd57600080fd5b8151610c8781613576565b600081518084526020808501945080840160005b838110156139215781516001600160a01b0316875295820195908201906001016138fc565b509495945050505050565b84815260806020820152600061394560808301866138e8565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610bd757610bd76137cd565b85815284602082015260a060408201526000613a1b60a08301866138e8565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215613a4d57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212202fc5fd2160b51e0b0d7e0348fa8dd75e56b3c348f025c24c3954e0cc2a2a3b2064736f6c63430008120033
Deployed Bytecode Sourcemap
8335:22656:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23422:113;;;;;;;;;;-1:-1:-1;23511:16:0;;23496:12;:31;23422:113;;;179:14:1;;172:22;154:41;;142:2;127:18;23422:113:0;;;;;;;;1877:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8484:27::-;;;;;;;;;;-1:-1:-1;8484:27:0;;;;-1:-1:-1;;;;;8484:27:0;;;;;;-1:-1:-1;;;;;941:32:1;;;923:51;;911:2;896:18;8484:27:0;759:221:1;2857:194:0;;;;;;;;;;-1:-1:-1;2857:194:0;;;;;:::i;:::-;;:::i;9680:63::-;;;;;;;;;;-1:-1:-1;9680:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2198:108;;;;;;;;;;-1:-1:-1;2286:12:0;;2198:108;;;1839:25:1;;;1827:2;1812:18;2198:108:0;1693:177:1;9429:33:0;;;;;;;;;;;;;;;;9503:28;;;;;;;;;;;;;;;;9389:33;;;;;;;;;;;;;;;;3059:529;;;;;;;;;;-1:-1:-1;3059:529:0;;;;;:::i;:::-;;:::i;13696:312::-;;;;;;;;;;-1:-1:-1;13696:312:0;;;;;:::i;:::-;;:::i;:::-;;16371:525;;;;;;;;;;-1:-1:-1;16371:525:0;;;;;:::i;:::-;;:::i;2097:93::-;;;;;;;;;;-1:-1:-1;2097:93:0;;2180:2;3053:36:1;;3041:2;3026:18;2097:93:0;2911:184:1;3596:290:0;;;;;;;;;;-1:-1:-1;3596:290:0;;;;;:::i;:::-;;:::i;8518:21::-;;;;;;;;;;-1:-1:-1;8518:21:0;;;;-1:-1:-1;;;;;8518:21:0;;;8410:28;;;;;;;;;;;;;;;;9211;;;;;;;;;;;;;;;;8856:25;;;;;;;;;;;;;;;;29948:257;;;;;;;;;;-1:-1:-1;29948:257:0;;;;;:::i;:::-;;:::i;29672:268::-;;;;;;;;;;-1:-1:-1;29672:268:0;;;;;:::i;:::-;;:::i;8998:31::-;;;;;;;;;;-1:-1:-1;8998:31:0;;;;-1:-1:-1;;;8998:31:0;;;;;;2314:143;;;;;;;;;;-1:-1:-1;2314:143:0;;;;;:::i;:::-;;:::i;6863:150::-;;;;;;;;;;;;;:::i;13201:110::-;;;;;;;;;;;;;:::i;15414:336::-;;;;;;;;;;-1:-1:-1;15414:336:0;;;;;:::i;:::-;;:::i;9072:30::-;;;;;;;;;;;;;;;;8800:49;;;;;;;;;;-1:-1:-1;8800:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28420:481;;;;;;;;;;-1:-1:-1;28420:481:0;;;;;:::i;:::-;;:::i;13457:231::-;;;;;;;;;;-1:-1:-1;13457:231:0;;;;;:::i;:::-;;:::i;8376:27::-;;;;;;;;;;;;;;;;12915:255;;;;;;;;;;;;;:::i;6649:79::-;;;;;;;;;;-1:-1:-1;6714:6:0;;-1:-1:-1;;;;;6714:6:0;6649:79;;9246:31;;;;;;;;;;;;;;;;1985:104;;;;;;;;;;;;;:::i;15758:357::-;;;;;;;;;;-1:-1:-1;15758:357:0;;;;;:::i;:::-;;:::i;9146:24::-;;;;;;;;;;;;;;;;13319:130;;;;;;;;;;-1:-1:-1;13319:130:0;;;;;:::i;:::-;;:::i;9469:27::-;;;;;;;;;;;;;;;;9322:25;;;;;;;;;;;;;;;;3894:475;;;;;;;;;;-1:-1:-1;3894:475:0;;;;;:::i;:::-;;:::i;8758:35::-;;;;;;;;;;;;;;;;2465:200;;;;;;;;;;-1:-1:-1;2465:200:0;;;;;:::i;:::-;;:::i;8445:30::-;;;;;;;;;;;;;;;;9354:26;;;;;;;;;;;;;;;;9901:57;;;;;;;;;;-1:-1:-1;9901:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17448:696;;;;;;;;;;;;;:::i;8958:33::-;;;;;;;;;;-1:-1:-1;8958:33:0;;;;-1:-1:-1;;;8958:33:0;;;;;;18152:182;;;;;;;;;;-1:-1:-1;18152:182:0;;;;;:::i;:::-;;:::i;14341:327::-;;;;;;;;;;-1:-1:-1;14341:327:0;;;;;:::i;:::-;;:::i;14738:428::-;;;;;;;;;;-1:-1:-1;14738:428:0;;;;;:::i;:::-;;:::i;9038:27::-;;;;;;;;;;;;;;;;14016:317;;;;;;;;;;-1:-1:-1;14016:317:0;;;;;:::i;:::-;;:::i;2673:176::-;;;;;;;;;;-1:-1:-1;2673:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;2814:18:0;;;2787:7;2814:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2673:176;8576:33;;;;;;;;;;;;;;;;9177:25;;;;;;;;;;;;;;;;16904:536;;;;;;;;;;-1:-1:-1;16904:536:0;;;;;:::i;:::-;;:::i;8681:37::-;;;;;;;;;;;;;;;;9109:30;;;;;;;;;;;;;;;;7021:281;;;;;;;;;;-1:-1:-1;7021:281:0;;;;;:::i;:::-;;:::i;8923:28::-;;;;;;;;;;-1:-1:-1;8923:28:0;;;;-1:-1:-1;;;8923:28:0;;;;;;28971:185;;;;;;;;;;;;;:::i;29209:455::-;;;;;;;;;;-1:-1:-1;29209:455:0;;;;;:::i;:::-;;:::i;9284:31::-;;;;;;;;;;;;;;;;30313:675;;;;;;;;;;-1:-1:-1;30313:675:0;;;;;:::i;:::-;;:::i;1877:100::-;1931:13;1964:5;1957:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1877:100;:::o;2857:194::-;2965:4;2982:39;982:10;3005:7;3014:6;2982:8;:39::i;:::-;-1:-1:-1;3039:4:0;2857:194;;;;;:::o;3059:529::-;3199:4;3216:36;3226:6;3234:9;3245:6;3216:9;:36::i;:::-;-1:-1:-1;;;;;3292:19:0;;3265:24;3292:19;;;:11;:19;;;;;;;;982:10;3292:33;;;;;;;;3358:26;;;;3336:116;;;;-1:-1:-1;;;3336:116:0;;5553:2:1;3336:116:0;;;5535:21:1;5592:2;5572:18;;;5565:30;5631:34;5611:18;;;5604:62;-1:-1:-1;;;5682:18:1;;;5675:38;5730:19;;3336:116:0;;;;;;;;;3488:57;3497:6;982:10;3538:6;3519:16;:25;3488:8;:57::i;:::-;3576:4;3569:11;;;3059:529;;;;;;:::o;13696:312::-;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;13833:4:::1;13825;13804:13;2286:12:::0;;;2198:108;13804:13:::1;:17;::::0;13820:1:::1;13804:17;:::i;:::-;13803:26;;;;:::i;:::-;13802:35;;;;:::i;:::-;13792:6;:45;;13770:136;;;::::0;-1:-1:-1;;;13770:136:0;;6850:2:1;13770:136:0::1;::::0;::::1;6832:21:1::0;6889:2;6869:18;;;6862:30;6928:34;6908:18;;;6901:62;-1:-1:-1;;;6979:18:1;;;6972:39;7028:19;;13770:136:0::1;6648:405:1::0;13770:136:0::1;13932:19;:6:::0;13942:8:::1;13932:19;:::i;:::-;13917:12;:34:::0;;;13967:33:::1;::::0;1839:25:1;;;13967:33:0::1;::::0;1827:2:1;1812:18;13967:33:0::1;;;;;;;;13696:312:::0;:::o;16371:525::-;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;16548:15:::1;:31:::0;;;16590:15:::1;:31:::0;;;16632:9:::1;:19:::0;;;16662:10:::1;:21:::0;;;16675:8;16644:7;16722:46:::1;16608:13:::0;16566;16722:46:::1;:::i;:::-;:71;;;;:::i;:::-;:97;;;;:::i;:::-;16694:12;:125:::0;;;16854:1:::1;-1:-1:-1::0;16838:17:0::1;16830:58;;;;-1:-1:-1::0;;;16830:58:0::1;;;;;;;:::i;:::-;16371:525:::0;;;;:::o;3596:290::-;982:10;3709:4;3798:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3798:34:0;;;;;;;;;;3709:4;;3726:130;;3776:7;;3798:47;;3835:10;;3798:47;:::i;:::-;3726:8;:130::i;29948:257::-;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30049:30:0;::::1;30027:116;;;::::0;-1:-1:-1;;;30027:116:0;;7747:2:1;30027:116:0::1;::::0;::::1;7729:21:1::0;7786:2;7766:18;;;7759:30;7825:34;7805:18;;;7798:62;-1:-1:-1;;;7876:18:1;;;7869:34;7920:19;;30027:116:0::1;7545:400:1::0;30027:116:0::1;30154:15;:43:::0;;-1:-1:-1;;;;;;30154:43:0::1;-1:-1:-1::0;;;;;30154:43:0;;;::::1;::::0;;;::::1;::::0;;29948:257::o;29672:268::-;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29780:31:0;::::1;29758:118;;;::::0;-1:-1:-1;;;29758:118:0;;8152:2:1;29758:118:0::1;::::0;::::1;8134:21:1::0;8191:2;8171:18;;;8164:30;8230:34;8210:18;;;8203:62;-1:-1:-1;;;8281:18:1;;;8274:35;8326:19;;29758:118:0::1;7950:401:1::0;29758:118:0::1;29887:16;:45:::0;;-1:-1:-1;;;;;;29887:45:0::1;-1:-1:-1::0;;;;;29887:45:0;;;::::1;::::0;;;::::1;::::0;;29672:268::o;2314:143::-;-1:-1:-1;;;;;2431:18:0;2404:7;2431:18;;;;;;;;;;;;2314:143::o;6863:150::-;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;6956:6:::1;::::0;6935:40:::1;::::0;6972:1:::1;::::0;-1:-1:-1;;;;;6956:6:0::1;::::0;6935:40:::1;::::0;6972:1;;6935:40:::1;6986:6;:19:::0;;-1:-1:-1;;;;;;6986:19:0::1;::::0;;6863:150::o;13201:110::-;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;13255:9:::1;:17:::0;;-1:-1:-1;;;;13255:17:0::1;::::0;;13288:15:::1;::::0;::::1;::::0;13267:5:::1;::::0;13288:15:::1;13201:110::o:0;15414:336::-;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;15536:4:::1;15531:155;;15593:6;::::0;-1:-1:-1;;;;;15593:6:0;;::::1;15583:16:::0;;::::1;::::0;15557:117:::1;;;::::0;-1:-1:-1;;;15557:117:0;;8558:2:1;15557:117:0::1;::::0;::::1;8540:21:1::0;8597:2;8577:18;;;8570:30;8636:34;8616:18;;;8609:62;-1:-1:-1;;;8687:18:1;;;8680:37;8734:19;;15557:117:0::1;8356:403:1::0;15557:117:0::1;-1:-1:-1::0;;;;;15696:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;15696:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15414:336::o;28420:481::-;6776:6;;28532:10;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28563:20:0;::::1;28555:59;;;::::0;-1:-1:-1;;;28555:59:0;;8966:2:1;28555:59:0::1;::::0;::::1;8948:21:1::0;9005:2;8985:18;;;8978:30;9044:28;9024:18;;;9017:56;9090:18;;28555:59:0::1;8764:350:1::0;28555:59:0::1;28651:4;-1:-1:-1::0;;;;;28633:23:0;::::1;::::0;28625:64:::1;;;::::0;-1:-1:-1;;;28625:64:0;;9321:2:1;28625:64:0::1;::::0;::::1;9303:21:1::0;9360:2;9340:18;;;9333:30;9399;9379:18;;;9372:58;9447:18;;28625:64:0::1;9119:352:1::0;28625:64:0::1;28727:39;::::0;-1:-1:-1;;;28727:39:0;;28760:4:::1;28727:39;::::0;::::1;923:51:1::0;28700:24:0::1;::::0;-1:-1:-1;;;;;28727:24:0;::::1;::::0;::::1;::::0;896:18:1;;28727:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28785:46;::::0;-1:-1:-1;;;28785:46:0;;-1:-1:-1;;;;;9857:32:1;;;28785:46:0::1;::::0;::::1;9839:51:1::0;9906:18;;;9899:34;;;28700:66:0;;-1:-1:-1;28785:23:0;;::::1;::::0;::::1;::::0;9812:18:1;;28785:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28847;::::0;;-1:-1:-1;;;;;9857:32:1;;9839:51;;9921:2;9906:18;;9899:34;;;28777:54:0;;-1:-1:-1;28847:46:0::1;::::0;9812:18:1;28847:46:0::1;;;;;;;28544:357;28420:481:::0;;;;:::o;13457:231::-;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;13578:9:::1;13573:108;13593:18:::0;;::::1;13573:108;;;13665:4;13633:17;:29;13651:7;;13659:1;13651:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13633:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13633:29:0;:36;;-1:-1:-1;;13633:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13613:3;::::1;::::0;::::1;:::i;:::-;;;;13573:108;;12915:255:::0;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;12985:13:::1;::::0;-1:-1:-1;;;12985:13:0;::::1;;;12984:14;12976:50;;;::::0;-1:-1:-1;;;12976:50:0;;10668:2:1;12976:50:0::1;::::0;::::1;10650:21:1::0;10707:2;10687:18;;;10680:30;10746:25;10726:18;;;10719:53;10789:18;;12976:50:0::1;10466:347:1::0;12976:50:0::1;13037:13;:20:::0;;-1:-1:-1;;;;13068:18:0;-1:-1:-1;;;13068:18:0;;;13118:12:::1;13097:18;:33:::0;13146:16:::1;::::0;::::1;::::0;-1:-1:-1;;13146:16:0::1;12915:255::o:0;1985:104::-;2041:13;2074:7;2067:14;;;;;:::i;15758:357::-;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;15906:6:::1;::::0;-1:-1:-1;;;;;15906:6:0;;::::1;15898:14:::0;;::::1;::::0;15876:121:::1;;;::::0;-1:-1:-1;;;15876:121:0;;11020:2:1;15876:121:0::1;::::0;::::1;11002:21:1::0;11059:2;11039:18;;;11032:30;11098:34;11078:18;;;11071:62;11169:27;11149:18;;;11142:55;11214:19;;15876:121:0::1;10818:421:1::0;15876:121:0::1;16010:41;16039:4;16045:5;16010:28;:41::i;:::-;16067:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;16067:40:0;::::1;::::0;::::1;::::0;;;::::1;15758:357:::0;;:::o;13319:130::-;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13409:25:0;;;::::1;;::::0;;;:17:::1;:25;::::0;;;;:32;;-1:-1:-1;;13409:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13319:130::o;3894:475::-;982:10;4012:4;4056:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4056:34:0;;;;;;;;;;4123:35;;;;4101:122;;;;-1:-1:-1;;;4101:122:0;;11446:2:1;4101:122:0;;;11428:21:1;11485:2;11465:18;;;11458:30;11524:34;11504:18;;;11497:62;-1:-1:-1;;;11575:18:1;;;11568:35;11620:19;;4101:122:0;11244:401:1;4101:122:0;4259:67;982:10;4282:7;4310:15;4291:16;:34;4259:8;:67::i;:::-;-1:-1:-1;4357:4:0;;3894:475;-1:-1:-1;;;3894:475:0:o;2465:200::-;2576:4;2593:42;982:10;2617:9;2628:6;2593:9;:42::i;17448:696::-;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;17526:1:::1;17507:16;:20:::0;;;17557:1:::1;17538:16;:20:::0;;;17569:10:::1;:14:::0;;;17594:11:::1;:15:::0;;;17557:1;;;17649:48:::1;::::0;17557:1;;17649:48:::1;:::i;:::-;:74;;;;:::i;:::-;:101;;;;:::i;:::-;17620:13;:130:::0;;;17786:1:::1;-1:-1:-1::0;17769:18:0::1;17761:59;;;;-1:-1:-1::0;;;17761:59:0::1;;;;;;;:::i;:::-;17851:1;17833:15;:19:::0;;;17881:1:::1;17863:15;:19:::0;;;17893:9:::1;:13:::0;;;17917:10:::1;:14:::0;;;17881:1;;;17970:46:::1;::::0;17881:1;;17970:46:::1;:::i;:::-;:71;;;;:::i;:::-;:97;;;;:::i;:::-;17942:12;:125:::0;;;18102:1:::1;-1:-1:-1::0;18086:17:0::1;18078:58;;;;-1:-1:-1::0;;;18078:58:0::1;;;;;;;:::i;:::-;17448:696::o:0;18152:182::-;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18237:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;18237:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;18292:34;;154:41:1;;;18292:34:0::1;::::0;127:18:1;18292:34:0::1;;;;;;;18152:182:::0;;:::o;14341:327::-;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;14481:4:::1;14473;14452:13;2286:12:::0;;;2198:108;14452:13:::1;:17;::::0;14468:1:::1;14452:17;:::i;:::-;14451:26;;;;:::i;:::-;14450:35;;;;:::i;:::-;14440:6;:45;;14418:139;;;::::0;-1:-1:-1;;;14418:139:0;;11852:2:1;14418:139:0::1;::::0;::::1;11834:21:1::0;11891:2;11871:18;;;11864:30;11930:34;11910:18;;;11903:62;-1:-1:-1;;;11981:18:1;;;11974:42;12033:19;;14418:139:0::1;11650:408:1::0;14418:139:0::1;14586:19;:6:::0;14596:8:::1;14586:19;:::i;:::-;14568:15;:37:::0;;;14621:39:::1;::::0;1839:25:1;;;14621:39:0::1;::::0;1827:2:1;1812:18;14621:39:0::1;1693:177:1::0;14738:428:0;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;14878:6:::1;14857:13;2286:12:::0;;;2198:108;14857:13:::1;:17;::::0;14873:1:::1;14857:17;:::i;:::-;14856:28;;;;:::i;:::-;14843:9;:41;;14821:144;;;::::0;-1:-1:-1;;;14821:144:0;;12265:2:1;14821:144:0::1;::::0;::::1;12247:21:1::0;12304:2;12284:18;;;12277:30;12343:34;12323:18;;;12316:62;-1:-1:-1;;;12394:18:1;;;12387:51;12455:19;;14821:144:0::1;12063:417:1::0;14821:144:0::1;15033:4;15012:13;2286:12:::0;;;2198:108;15012:13:::1;:17;::::0;15028:1:::1;15012:17;:::i;:::-;15011:26;;;;:::i;:::-;14998:9;:39;;14976:141;;;::::0;-1:-1:-1;;;14976:141:0;;12687:2:1;14976:141:0::1;::::0;::::1;12669:21:1::0;12726:2;12706:18;;;12699:30;12765:34;12745:18;;;12738:62;-1:-1:-1;;;12816:18:1;;;12809:50;12876:19;;14976:141:0::1;12485:416:1::0;14976:141:0::1;15128:18;:30:::0;14738:428::o;14016:317::-;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;14154:4:::1;14146;14125:13;2286:12:::0;;;2198:108;14125:13:::1;:17;::::0;14141:1:::1;14125:17;:::i;:::-;14124:26;;;;:::i;:::-;14123:35;;;;:::i;:::-;14113:6;:45;;14091:137;;;::::0;-1:-1:-1;;;14091:137:0;;13108:2:1;14091:137:0::1;::::0;::::1;13090:21:1::0;13147:2;13127:18;;;13120:30;13186:34;13166:18;;;13159:62;-1:-1:-1;;;13237:18:1;;;13230:40;13287:19;;14091:137:0::1;12906:406:1::0;14091:137:0::1;14255:19;:6:::0;14265:8:::1;14255:19;:::i;:::-;14239:13;:35:::0;;;14290::::1;::::0;1839:25:1;;;14290:35:0::1;::::0;1827:2:1;1812:18;14290:35:0::1;1693:177:1::0;16904:536:0;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;17082:16:::1;:32:::0;;;17125:16:::1;:32:::0;;;17168:10:::1;:20:::0;;;17199:11:::1;:22:::0;;;17213:8;17181:7;17261:48:::1;17144:13:::0;17101;17261:48:::1;:::i;:::-;:74;;;;:::i;:::-;:101;;;;:::i;:::-;17232:13;:130:::0;;;17398:1:::1;-1:-1:-1::0;17381:18:0::1;17373:59;;;;-1:-1:-1::0;;;17373:59:0::1;;;;;;;:::i;7021:281::-:0;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7124:22:0;::::1;7102:110;;;::::0;-1:-1:-1;;;7102:110:0;;13519:2:1;7102:110:0::1;::::0;::::1;13501:21:1::0;13558:2;13538:18;;;13531:30;13597:34;13577:18;;;13570:62;-1:-1:-1;;;13648:18:1;;;13641:36;13694:19;;7102:110:0::1;13317:402:1::0;7102:110:0::1;7249:6;::::0;7228:38:::1;::::0;-1:-1:-1;;;;;7228:38:0;;::::1;::::0;7249:6:::1;::::0;7228:38:::1;::::0;7249:6:::1;::::0;7228:38:::1;7277:6;:17:::0;;-1:-1:-1;;;;;;7277:17:0::1;-1:-1:-1::0;;;;;7277:17:0;;;::::1;::::0;;;::::1;::::0;;7021:281::o;28971:185::-;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;29066:82:::1;::::0;29029:12:::1;::::0;29074:10:::1;::::0;29098:21:::1;::::0;29029:12;29066:82;29029:12;29066:82;29098:21;29074:10;29066:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29209:455:::0;29349:18;;29321:24;29339:4;29321:9;:24::i;:::-;:46;;29299:160;;;;;-1:-1:-1;;;29299:160:0;;14136:2:1;29299:160:0;;;14118:21:1;14155:18;;;14148:30;;;;14214:34;14194:18;;;14187:62;14285:34;14265:18;;;14258:62;14337:19;;29299:160:0;13934:428:1;29299:160:0;29474:29;29483:8;29493:4;29499:3;29474:8;:29::i;:::-;29470:187;;;29520:8;:15;;-1:-1:-1;;;;29520:15:0;-1:-1:-1;;;29520:15:0;;;29550:10;:8;:10::i;:::-;29575:8;:16;;-1:-1:-1;;;;29575:16:0;;;29613:32;;29629:15;1839:25:1;;29613:32:0;;1827:2:1;1812:18;29613:32:0;;;;;;;29470:187;29209:455;;;:::o;30313:675::-;6776:6;;-1:-1:-1;;;;;6776:6:0;982:10;6776:22;6768:67;;;;-1:-1:-1;;;6768:67:0;;;;;;;:::i;:::-;30424:7:::1;30409:11;:22;;30387:142;;;::::0;-1:-1:-1;;;30387:142:0;;14569:2:1;30387:142:0::1;::::0;::::1;14551:21:1::0;14608:2;14588:18;;;14581:30;14647:34;14627:18;;;14620:62;14718:34;14698:18;;;14691:62;-1:-1:-1;;;14769:19:1;;;14762:37;14816:19;;30387:142:0::1;14367:474:1::0;30387:142:0::1;30566:16;::::0;;30580:1:::1;30566:16:::0;;;;;::::1;::::0;;30542:21:::1;::::0;30566:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;30603:9:0::1;::::0;:16:::1;::::0;;-1:-1:-1;;;30603:16:0;;;;30542:40;;-1:-1:-1;;;;;;30603:9:0;;::::1;::::0;:14:::1;::::0;-1:-1:-1;30603:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30593:4;30598:1;30593:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1::0;;;;;30593:26:0::1;;;-1:-1:-1::0;;;;;30593:26:0::1;;;::::0;::::1;30648:4;30630;30635:1;30630:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;30630:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;30692:9:::1;::::0;:243:::1;::::0;-1:-1:-1;;;30692:243:0;;:9;::::1;::::0;:60:::1;::::0;30774:11;;30692:243:::1;::::0;:9:::1;::::0;30860:4;;30887:6:::1;::::0;30909:15:::1;::::0;30692:243:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;30951:29;30968:11;30951:29;;;;1839:25:1::0;;1827:2;1812:18;;1693:177;30951:29:0::1;;;;;;;;30376:612;30313:675:::0;:::o;5918:380::-;-1:-1:-1;;;;;6054:19:0;;6046:68;;;;-1:-1:-1;;;6046:68:0;;16417:2:1;6046:68:0;;;16399:21:1;16456:2;16436:18;;;16429:30;16495:34;16475:18;;;16468:62;-1:-1:-1;;;16546:18:1;;;16539:34;16590:19;;6046:68:0;16215:400:1;6046:68:0;-1:-1:-1;;;;;6133:21:0;;6125:68;;;;-1:-1:-1;;;6125:68:0;;16822:2:1;6125:68:0;;;16804:21:1;16861:2;16841:18;;;16834:30;16900:34;16880:18;;;16873:62;-1:-1:-1;;;16951:18:1;;;16944:32;16993:19;;6125:68:0;16620:398:1;6125:68:0;-1:-1:-1;;;;;6206:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6258:32;;1839:25:1;;;6258:32:0;;1812:18:1;6258:32:0;;;;;;;;5918:380;;;:::o;18342:5072::-;-1:-1:-1;;;;;18474:18:0;;18466:68;;;;-1:-1:-1;;;18466:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18553:16:0;;18545:64;;;;-1:-1:-1;;;18545:64:0;;;;;;;:::i;:::-;18637:1;18628:6;:10;18620:52;;;;-1:-1:-1;;;18620:52:0;;18035:2:1;18620:52:0;;;18017:21:1;18074:2;18054:18;;;18047:30;18113:31;18093:18;;;18086:59;18162:18;;18620:52:0;17833:353:1;18620:52:0;18690:13;;-1:-1:-1;;;18690:13:0;;;;18685:183;;-1:-1:-1;;;;;18746:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;18775:23:0;;;;;;:19;:23;;;;;;;;18746:52;18720:136;;;;-1:-1:-1;;;18720:136:0;;18393:2:1;18720:136:0;;;18375:21:1;18432:2;18412:18;;;18405:30;-1:-1:-1;;;18451:18:1;;;18444:52;18513:18;;18720:136:0;18191:346:1;18720:136:0;18884:16;;:20;18880:251;;-1:-1:-1;;;;;18948:23:0;;;;;;:17;:23;;;;;;;;18947:24;;:41;;-1:-1:-1;6714:6:0;;-1:-1:-1;;;;;18975:13:0;;;6714:6;;18975:13;18947:41;:66;;;-1:-1:-1;;;;;;18992:21:0;;19006:6;18992:21;18947:66;18921:198;;;;-1:-1:-1;;;18921:198:0;;18744:2:1;18921:198:0;;;18726:21:1;18783:2;18763:18;;;18756:30;18822:34;18802:18;;;18795:62;18893:34;18873:18;;;18866:62;-1:-1:-1;;;18944:19:1;;;18937:37;18991:19;;18921:198:0;18542:474:1;18921:198:0;19147:9;;-1:-1:-1;;;19147:9:0;;;;19143:1490;;;6714:6;;-1:-1:-1;;;;;19195:15:0;;;6714:6;;19195:15;;;;:49;;-1:-1:-1;6714:6:0;;-1:-1:-1;;;;;19231:13:0;;;6714:6;;19231:13;;19195:49;:86;;;;-1:-1:-1;;;;;;19265:16:0;;;;19195:86;:128;;;;-1:-1:-1;;;;;;19302:21:0;;19316:6;19302:21;;19195:128;:175;;;;-1:-1:-1;;;;;;19345:25:0;;;;;;:19;:25;;;;;;;;19344:26;19195:175;:220;;;;-1:-1:-1;;;;;;19392:23:0;;;;;;:19;:23;;;;;;;;19391:24;19195:220;19173:1449;;;-1:-1:-1;;;;;19504:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;19561:35:0;;;;;;:31;:35;;;;;;;;19560:36;19504:92;19478:1129;;;19683:12;;19673:6;:22;;19639:148;;;;-1:-1:-1;;;19639:148:0;;19223:2:1;19639:148:0;;;19205:21:1;19262:2;19242:18;;;19235:30;19301:34;19281:18;;;19274:62;-1:-1:-1;;;19352:18:1;;;19345:38;19400:19;;19639:148:0;19021:404:1;19639:148:0;19870:15;;19853:13;19863:2;19853:9;:13::i;:::-;19844:22;;:6;:22;:::i;:::-;:41;;19810:151;;;;-1:-1:-1;;;19810:151:0;;19632:2:1;19810:151:0;;;19614:21:1;19671:2;19651:18;;;19644:30;-1:-1:-1;;;19690:18:1;;;19683:54;19754:18;;19810:151:0;19430:348:1;19810:151:0;19478:1129;;;-1:-1:-1;;;;;20059:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;20114:37:0;;;;;;:31;:37;;;;;;;;20113:38;20059:92;20033:574;;;20238:13;;20228:6;:23;;20194:151;;;;-1:-1:-1;;;20194:151:0;;19985:2:1;20194:151:0;;;19967:21:1;20024:2;20004:18;;;19997:30;20063:34;20043:18;;;20036:62;-1:-1:-1;;;20114:18:1;;;20107:40;20164:19;;20194:151:0;19783:406:1;20033:574:0;-1:-1:-1;;;;;20376:35:0;;;;;;:31;:35;;;;;;;;20371:236;;20496:15;;20479:13;20489:2;20479:9;:13::i;:::-;20470:22;;:6;:22;:::i;:::-;:41;;20436:151;;;;-1:-1:-1;;;20436:151:0;;19632:2:1;20436:151:0;;;19614:21:1;19671:2;19651:18;;;19644:30;-1:-1:-1;;;19690:18:1;;;19683:54;19754:18;;20436:151:0;19430:348:1;20436:151:0;20645:28;20676:24;20694:4;20676:9;:24::i;:::-;20752:18;;20645:55;;-1:-1:-1;20728:42:0;;;;;;;20801:35;;-1:-1:-1;20825:11:0;;-1:-1:-1;;;20825:11:0;;;;20801:35;:61;;;;-1:-1:-1;20854:8:0;;-1:-1:-1;;;20854:8:0;;;;20853:9;20801:61;:110;;;;-1:-1:-1;;;;;;20880:31:0;;;;;;:25;:31;;;;;;;;20879:32;20801:110;:153;;;;-1:-1:-1;;;;;;20929:25:0;;;;;;:19;:25;;;;;;;;20928:26;20801:153;:194;;;;-1:-1:-1;;;;;;20972:23:0;;;;;;:19;:23;;;;;;;;20971:24;20801:194;20783:326;;;21022:8;:15;;-1:-1:-1;;;;21022:15:0;-1:-1:-1;;;21022:15:0;;;21054:10;:8;:10::i;:::-;21081:8;:16;;-1:-1:-1;;;;21081:16:0;;;20783:326;21136:4;21240:31;21262:4;21268:2;21240:21;:31::i;:::-;21236:79;;;-1:-1:-1;21298:5:0;21236:79;21335:12;21440:7;21436:1919;;;23511:16;;23496:12;:31;21522:71;;;;-1:-1:-1;;;;;;21562:31:0;;;;;;:25;:31;;;;;;;;21522:71;:122;;;;-1:-1:-1;;;;;;21615:29:0;;;;;;:25;:29;;;;;;;;21614:30;21522:122;:159;;;;;21680:1;21665:12;;:16;21522:159;21500:1706;;;-1:-1:-1;;;;;21721:21:0;;;;;;:17;:21;;;;;;;;21716:185;;-1:-1:-1;;;;;21767:21:0;;;;;;:17;:21;;;;;:28;;-1:-1:-1;;21767:28:0;21791:4;21767:28;;;;;;21818:10;:15;;21791:4;;21818:10;;:15;;21791:4;;21818:15;:::i;:::-;;;;-1:-1:-1;;21861:20:0;;-1:-1:-1;;;;;941:32:1;;923:51;;21861:20:0;;911:2:1;896:18;21861:20:0;;;;;;;21716:185;21944:3;21929:11;:6;21938:2;21929:11;:::i;:::-;21928:19;;;;:::i;:::-;21921:26;;22015:12;;21996:15;;21989:4;:22;;;;:::i;:::-;21988:39;;;;:::i;:::-;21966:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;22095:12:0;;22076:15;;22069:22;;:4;:22;:::i;:::-;22068:39;;;;:::i;:::-;22046:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;22163:12:0;;22150:9;;22143:16;;:4;:16;:::i;:::-;22142:33;;;;:::i;:::-;22126:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;22233:12:0;;22219:10;;22212:17;;:4;:17;:::i;:::-;22211:34;;;;:::i;:::-;22194:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;21500:1706:0;;-1:-1:-1;21500:1706:0;;-1:-1:-1;;;;;22308:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;22357:1;22341:13;;:17;22308:50;22304:902;;;22413:3;22396:13;;22387:6;:22;;;;:::i;:::-;22386:30;;;;:::i;:::-;22379:37;;22485:13;;22465:16;;22458:4;:23;;;;:::i;:::-;22457:41;;;;:::i;:::-;22435:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;22567:13:0;;22547:16;;22540:23;;:4;:23;:::i;:::-;22539:41;;;;:::i;:::-;22517:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;22637:13:0;;22623:10;;22616:17;;:4;:17;:::i;:::-;22615:35;;;;:::i;:::-;22599:12;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;22709:13:0;;22694:11;;22687:18;;:4;:18;:::i;22304:902::-;-1:-1:-1;;;;;22784:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;22834:1;22819:12;;:16;22784:51;22780:426;;;22889:3;22873:12;;22864:6;:21;;;;:::i;:::-;22863:29;;;;:::i;:::-;22856:36;;22960:12;;22941:15;;22934:4;:22;;;;:::i;:::-;22933:39;;;;:::i;:::-;22911:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;23040:12:0;;23021:15;;23014:22;;:4;:22;:::i;:::-;23013:39;;;;:::i;:::-;22991:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;23108:12:0;;23095:9;;23088:16;;:4;:16;:::i;:::-;23087:33;;;;:::i;:::-;23071:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;23178:12:0;;23164:10;;23157:17;;:4;:17;:::i;:::-;23156:34;;;;:::i;:::-;23139:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;22780:426:0;23226:8;;23222:91;;23255:42;23271:4;23285;23292;23255:15;:42::i;:::-;23329:14;23339:4;23329:14;;:::i;:::-;;;21436:1919;23373:33;23389:4;23395:2;23399:6;23373:15;:33::i;:::-;18455:4959;;;;18342:5072;;;:::o;16123:240::-;-1:-1:-1;;;;;16206:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;16206:39:0;;;;;;;16258;16206:31;:39;16258:26;:39::i;25093:1602::-;25238:10;25173:4;25218:31;;;:19;:31;;;;;;25173:4;;25218:31;;25213:1475;;25304:1;25288:13;;:17;:62;;;;;25337:13;;25309:24;25327:4;25309:9;:24::i;:::-;:41;;25288:62;25266:167;;;25385:32;25391:10;25403:13;;25385:5;:32::i;:::-;-1:-1:-1;25463:1:0;25447:13;:17;;;25489:4;;25534:24;25552:4;25534:9;:24::i;:::-;25508:50;;25573:25;25677:12;;25639:18;;25601;;:56;;;;:::i;:::-;:88;;;;:::i;:::-;25573:116;-1:-1:-1;25710:20:0;;;:46;;-1:-1:-1;25734:22:0;;25710:46;25706:99;;;25784:5;25777:12;;;;;;;25706:99;25843:18;;:22;;25864:1;25843:22;:::i;:::-;25825:15;:40;25821:121;;;25904:18;;:22;;25925:1;25904:22;:::i;:::-;25886:40;;25821:121;25965:7;25958:14;;;;;;;25213:1475;26009:7;;26005:195;;26037:19;26043:7;26052:3;26037:5;:19::i;:::-;-1:-1:-1;26085:5:0;26005:195;;;-1:-1:-1;26131:12:0;:19;;-1:-1:-1;;;;;;26131:19:0;-1:-1:-1;;;;;26131:19:0;;;;;-1:-1:-1;26005:195:0;26214:23;26240:24;26258:4;26240:9;:24::i;26703:1709::-;26762:1;26746:13;;:17;:62;;;;;26795:13;;26767:24;26785:4;26767:9;:24::i;:::-;:41;;26746:62;26742:130;;;26825:35;26839:4;26846:13;;26825:5;:35::i;:::-;26898:1;26882:13;:17;;;26938:24;26956:4;26938:9;:24::i;:::-;26912:50;;26973:25;27069:12;;27035:18;;27001;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;26973:108;-1:-1:-1;27098:20:0;;;:46;;-1:-1:-1;27122:22:0;;27098:46;27094:85;;;27161:7;;26703:1709::o;27094:85::-;27213:18;;:22;;27234:1;27213:22;:::i;:::-;27195:15;:40;27191:113;;;27270:18;;:22;;27291:1;27270:22;:::i;:::-;27252:40;;27191:113;27316:12;27390:23;27503:1;27470:17;27435:18;;27417:15;:36;;;;:::i;:::-;27416:71;;;;:::i;:::-;:88;;;;:::i;:::-;27390:114;-1:-1:-1;27517:51:0;27534:33;27390:114;27534:15;:33;:::i;:::-;27517:16;:51::i;:::-;27780:18;;27602:21;;;;27581:18;;27780:22;;27801:1;;27780:22;:::i;:::-;27759:44;;:17;:44;:::i;:::-;27723:18;;27710:31;;:10;:31;:::i;:::-;27709:95;;;;:::i;:::-;27683:121;;27815:16;27920:1;27899:18;;:22;;;;:::i;:::-;27878:44;;:17;:44;:::i;:::-;27848:12;;27835:25;;:10;:25;:::i;:::-;27834:89;;;;:::i;:::-;27815:108;-1:-1:-1;27955:26:0;27815:108;27955:15;:26;:::i;:::-;27936:45;;;;:::i;:::-;28015:1;27994:18;:22;;;28027:18;:22;;;28060:12;:16;;;28087:13;:17;27936:45;-1:-1:-1;28121:19:0;;;;;:42;;;28162:1;28144:15;:19;28121:42;28117:121;;;28180:46;28193:15;28210;28180:12;:46::i;:::-;28272:15;;28264:50;;-1:-1:-1;;;;;28272:15:0;;;;28301:8;;28264:50;;;;28301:8;28272:15;28264:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28347:16:0;;28339:65;;28250:64;;-1:-1:-1;;;;;;28347:16:0;;28378:21;;28339:65;;;;28378:21;28347:16;28339:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;26703:1709:0:o;24122:446::-;-1:-1:-1;;;;;24294:25:0;;24222:4;24294:25;;;:19;:25;;;;;;24222:4;;;;24294:25;;;:52;;-1:-1:-1;;;;;;24323:23:0;;;;;;:19;:23;;;;;;;;24294:52;24290:245;;;24374:4;24363:15;;24290:245;;;24400:12;;-1:-1:-1;;;;;24400:12:0;:26;24396:139;;24450:12;;24443:49;;-1:-1:-1;;;24443:49:0;;-1:-1:-1;;;;;20585:15:1;;;24443:49:0;;;20567:34:1;20637:15;;;20617:18;;;20610:43;20669:18;;;20662:34;;;24450:12:0;;;;24443:33;;20502:18:1;;24443:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24518:5;24507:16;;24396:139;-1:-1:-1;24552:8:0;24122:446;-1:-1:-1;;;24122:446:0:o;4377:651::-;-1:-1:-1;;;;;4517:20:0;;4509:70;;;;-1:-1:-1;;;4509:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4598:23:0;;4590:71;;;;-1:-1:-1;;;4590:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4698:17:0;;4674:21;4698:17;;;;;;;;;;;4748:23;;;;4726:111;;;;-1:-1:-1;;;4726:111:0;;20909:2:1;4726:111:0;;;20891:21:1;20948:2;20928:18;;;20921:30;20987:34;20967:18;;;20960:62;-1:-1:-1;;;21038:18:1;;;21031:36;21084:19;;4726:111:0;20707:402:1;4726:111:0;-1:-1:-1;;;;;4873:17:0;;;:9;:17;;;;;;;;;;;4893:22;;;4873:42;;4937:20;;;;;;;;:30;;4909:6;;4873:9;4937:30;;4909:6;;4937:30;:::i;:::-;;;;;;;;5002:9;-1:-1:-1;;;;;4985:35:0;4994:6;-1:-1:-1;;;;;4985:35:0;;5013:6;4985:35;;;;1839:25:1;;1827:2;1812:18;;1693:177;4985:35:0;;;;;;;;4498:530;4377:651;;;:::o;15174:232::-;-1:-1:-1;;;;;15287:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;15287:52:0;;;;;;;;;;15355:43;;21282:51:1;;;21349:18;;;21342:50;15355:43:0;;21255:18:1;15355:43:0;21114:284:1;5360:550:0;-1:-1:-1;;;;;5444:21:0;;5436:67;;;;-1:-1:-1;;;5436:67:0;;21605:2:1;5436:67:0;;;21587:21:1;21644:2;21624:18;;;21617:30;21683:34;21663:18;;;21656:62;-1:-1:-1;;;21734:18:1;;;21727:31;21775:19;;5436:67:0;21403:397:1;5436:67:0;-1:-1:-1;;;;;5539:18:0;;5514:22;5539:18;;;;;;;;;;;5576:24;;;;5568:71;;;;-1:-1:-1;;;5568:71:0;;22007:2:1;5568:71:0;;;21989:21:1;22046:2;22026:18;;;22019:30;22085:34;22065:18;;;22058:62;-1:-1:-1;;;22136:18:1;;;22129:32;22178:19;;5568:71:0;21805:398:1;5568:71:0;-1:-1:-1;;;;;5675:18:0;;:9;:18;;;;;;;;;;;5696:23;;;5675:44;;5814:12;:22;;;;;;;5865:37;1839:25:1;;;5675:9:0;;:18;5865:37;;1812:18:1;5865:37:0;1693:177:1;23543:571:0;23693:16;;;23707:1;23693:16;;;;;;;;23669:21;;23693:16;;;;;;;;;;-1:-1:-1;23693:16:0;23669:40;;23738:4;23720;23725:1;23720:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23720:23:0;;;:7;;;;;;;;;;:23;;;;23764:9;;:16;;;-1:-1:-1;;;23764:16:0;;;;:9;;;;;:14;;:16;;;;;23720:7;;23764:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23754:4;23759:1;23754:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23754:26:0;;;:7;;;;;;;;;:26;23825:9;;23793:56;;23810:4;;23825:9;23837:11;23793:8;:56::i;:::-;23888:9;;:218;;-1:-1:-1;;;23888:218:0;;-1:-1:-1;;;;;23888:9:0;;;;:60;;:218;;23963:11;;23888:9;;24033:4;;24060;;24080:15;;23888:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23598:516;23543:571;:::o;24576:509::-;24756:9;;24724:56;;24741:4;;-1:-1:-1;;;;;24756:9:0;24768:11;24724:8;:56::i;:::-;24823:9;;:254;;-1:-1:-1;;;24823:254:0;;24889:4;24823:254;;;23136:34:1;23186:18;;;23179:34;;;24823:9:0;23229:18:1;;;23222:34;;;23272:18;;;23265:34;25029:6:0;23315:19:1;;;23308:44;25051:15:0;23368:19:1;;;23361:35;-1:-1:-1;;;;;24823:9:0;;;;:25;;24856:9;;23070:19:1;;24823:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24576:509;;:::o;206:548:1:-;318:4;347:2;376;365:9;358:21;408:6;402:13;451:6;446:2;435:9;431:18;424:34;476:1;486:140;500:6;497:1;494:13;486:140;;;595:14;;;591:23;;585:30;561:17;;;580:2;557:26;550:66;515:10;;486:140;;;490:3;675:1;670:2;661:6;650:9;646:22;642:31;635:42;745:2;738;734:7;729:2;721:6;717:15;713:29;702:9;698:45;694:54;686:62;;;;206:548;;;;:::o;985:131::-;-1:-1:-1;;;;;1060:31:1;;1050:42;;1040:70;;1106:1;1103;1096:12;1040:70;985:131;:::o;1121:315::-;1189:6;1197;1250:2;1238:9;1229:7;1225:23;1221:32;1218:52;;;1266:1;1263;1256:12;1218:52;1305:9;1292:23;1324:31;1349:5;1324:31;:::i;:::-;1374:5;1426:2;1411:18;;;;1398:32;;-1:-1:-1;;;1121:315:1:o;1441:247::-;1500:6;1553:2;1541:9;1532:7;1528:23;1524:32;1521:52;;;1569:1;1566;1559:12;1521:52;1608:9;1595:23;1627:31;1652:5;1627:31;:::i;1875:456::-;1952:6;1960;1968;2021:2;2009:9;2000:7;1996:23;1992:32;1989:52;;;2037:1;2034;2027:12;1989:52;2076:9;2063:23;2095:31;2120:5;2095:31;:::i;:::-;2145:5;-1:-1:-1;2202:2:1;2187:18;;2174:32;2215:33;2174:32;2215:33;:::i;:::-;1875:456;;2267:7;;-1:-1:-1;;;2321:2:1;2306:18;;;;2293:32;;1875:456::o;2336:180::-;2395:6;2448:2;2436:9;2427:7;2423:23;2419:32;2416:52;;;2464:1;2461;2454:12;2416:52;-1:-1:-1;2487:23:1;;2336:180;-1:-1:-1;2336:180:1:o;2521:385::-;2607:6;2615;2623;2631;2684:3;2672:9;2663:7;2659:23;2655:33;2652:53;;;2701:1;2698;2691:12;2652:53;-1:-1:-1;;2724:23:1;;;2794:2;2779:18;;2766:32;;-1:-1:-1;2845:2:1;2830:18;;2817:32;;2896:2;2881:18;2868:32;;-1:-1:-1;2521:385:1;-1:-1:-1;2521:385:1:o;3308:118::-;3394:5;3387:13;3380:21;3373:5;3370:32;3360:60;;3416:1;3413;3406:12;3431:382;3496:6;3504;3557:2;3545:9;3536:7;3532:23;3528:32;3525:52;;;3573:1;3570;3563:12;3525:52;3612:9;3599:23;3631:31;3656:5;3631:31;:::i;:::-;3681:5;-1:-1:-1;3738:2:1;3723:18;;3710:32;3751:30;3710:32;3751:30;:::i;:::-;3800:7;3790:17;;;3431:382;;;;;:::o;3818:388::-;3886:6;3894;3947:2;3935:9;3926:7;3922:23;3918:32;3915:52;;;3963:1;3960;3953:12;3915:52;4002:9;3989:23;4021:31;4046:5;4021:31;:::i;:::-;4071:5;-1:-1:-1;4128:2:1;4113:18;;4100:32;4141:33;4100:32;4141:33;:::i;4211:750::-;4303:6;4311;4319;4372:2;4360:9;4351:7;4347:23;4343:32;4340:52;;;4388:1;4385;4378:12;4340:52;4428:9;4415:23;4457:18;4498:2;4490:6;4487:14;4484:34;;;4514:1;4511;4504:12;4484:34;4552:6;4541:9;4537:22;4527:32;;4597:7;4590:4;4586:2;4582:13;4578:27;4568:55;;4619:1;4616;4609:12;4568:55;4659:2;4646:16;4685:2;4677:6;4674:14;4671:34;;;4701:1;4698;4691:12;4671:34;4756:7;4749:4;4739:6;4736:1;4732:14;4728:2;4724:23;4720:34;4717:47;4714:67;;;4777:1;4774;4767:12;4714:67;4808:4;4800:13;;;;-1:-1:-1;4832:6:1;-1:-1:-1;;4873:20:1;;4860:34;4903:28;4860:34;4903:28;:::i;:::-;4950:5;4940:15;;;4211:750;;;;;:::o;4966:380::-;5045:1;5041:12;;;;5088;;;5109:61;;5163:4;5155:6;5151:17;5141:27;;5109:61;5216:2;5208:6;5205:14;5185:18;5182:38;5179:161;;5262:10;5257:3;5253:20;5250:1;5243:31;5297:4;5294:1;5287:15;5325:4;5322:1;5315:15;5179:161;;4966:380;;;:::o;5760:356::-;5962:2;5944:21;;;5981:18;;;5974:30;6040:34;6035:2;6020:18;;6013:62;6107:2;6092:18;;5760:356::o;6121:127::-;6182:10;6177:3;6173:20;6170:1;6163:31;6213:4;6210:1;6203:15;6237:4;6234:1;6227:15;6253:168;6326:9;;;6357;;6374:15;;;6368:22;;6354:37;6344:71;;6395:18;;:::i;6426:217::-;6466:1;6492;6482:132;;6536:10;6531:3;6527:20;6524:1;6517:31;6571:4;6568:1;6561:15;6599:4;6596:1;6589:15;6482:132;-1:-1:-1;6628:9:1;;6426:217::o;7058:125::-;7123:9;;;7144:10;;;7141:36;;;7157:18;;:::i;7188:352::-;7390:2;7372:21;;;7429:2;7409:18;;;7402:30;7468;7463:2;7448:18;;7441:58;7531:2;7516:18;;7188:352::o;9476:184::-;9546:6;9599:2;9587:9;9578:7;9574:23;9570:32;9567:52;;;9615:1;9612;9605:12;9567:52;-1:-1:-1;9638:16:1;;9476:184;-1:-1:-1;9476:184:1:o;9944:245::-;10011:6;10064:2;10052:9;10043:7;10039:23;10035:32;10032:52;;;10080:1;10077;10070:12;10032:52;10112:9;10106:16;10131:28;10153:5;10131:28;:::i;10194:127::-;10255:10;10250:3;10246:20;10243:1;10236:31;10286:4;10283:1;10276:15;10310:4;10307:1;10300:15;10326:135;10365:3;10386:17;;;10383:43;;10406:18;;:::i;:::-;-1:-1:-1;10453:1:1;10442:13;;10326:135::o;14978:251::-;15048:6;15101:2;15089:9;15080:7;15076:23;15072:32;15069:52;;;15117:1;15114;15107:12;15069:52;15149:9;15143:16;15168:31;15193:5;15168:31;:::i;15234:461::-;15287:3;15325:5;15319:12;15352:6;15347:3;15340:19;15378:4;15407:2;15402:3;15398:12;15391:19;;15444:2;15437:5;15433:14;15465:1;15475:195;15489:6;15486:1;15483:13;15475:195;;;15554:13;;-1:-1:-1;;;;;15550:39:1;15538:52;;15610:12;;;;15645:15;;;;15586:1;15504:9;15475:195;;;-1:-1:-1;15686:3:1;;15234:461;-1:-1:-1;;;;;15234:461:1:o;15700:510::-;15971:6;15960:9;15953:25;16014:3;16009:2;15998:9;15994:18;15987:31;15934:4;16035:57;16087:3;16076:9;16072:19;16064:6;16035:57;:::i;:::-;-1:-1:-1;;;;;16128:32:1;;;;16123:2;16108:18;;16101:60;-1:-1:-1;16192:2:1;16177:18;16170:34;16027:65;15700:510;-1:-1:-1;;15700:510:1:o;17023:401::-;17225:2;17207:21;;;17264:2;17244:18;;;17237:30;17303:34;17298:2;17283:18;;17276:62;-1:-1:-1;;;17369:2:1;17354:18;;17347:35;17414:3;17399:19;;17023:401::o;17429:399::-;17631:2;17613:21;;;17670:2;17650:18;;;17643:30;17709:34;17704:2;17689:18;;17682:62;-1:-1:-1;;;17775:2:1;17760:18;;17753:33;17818:3;17803:19;;17429:399::o;20194:128::-;20261:9;;;20282:11;;;20279:37;;;20296:18;;:::i;22208:582::-;22507:6;22496:9;22489:25;22550:6;22545:2;22534:9;22530:18;22523:34;22593:3;22588:2;22577:9;22573:18;22566:31;22470:4;22614:57;22666:3;22655:9;22651:19;22643:6;22614:57;:::i;:::-;-1:-1:-1;;;;;22707:32:1;;;;22702:2;22687:18;;22680:60;-1:-1:-1;22771:3:1;22756:19;22749:35;22606:65;22208:582;-1:-1:-1;;;22208:582:1:o;23407:306::-;23495:6;23503;23511;23564:2;23552:9;23543:7;23539:23;23535:32;23532:52;;;23580:1;23577;23570:12;23532:52;23609:9;23603:16;23593:26;;23659:2;23648:9;23644:18;23638:25;23628:35;;23703:2;23692:9;23688:18;23682:25;23672:35;;23407:306;;;;;:::o
Swarm Source
ipfs://2fc5fd2160b51e0b0d7e0348fa8dd75e56b3c348f025c24c3954e0cc2a2a3b20
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.