ERC-20
Overview
Max Total Supply
1,000,000,000,000 BILL
Holders
286
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
124,306,183.009916726 BILLValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
BillGate
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-18 */ // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.9.0; abstract contract Context { function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the token decimals. */ function decimals() external view returns (uint8); /** * @dev Returns the token symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the token name. */ function name() external view returns (string memory); /** * @dev Returns the bep token owner. */ function getOwner() external view returns (address); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address _owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IFactoryV2 { event PairCreated(address indexed token0, address indexed token1, address lpPair, uint); function getPair(address tokenA, address tokenB) external view returns (address lpPair); function createPair(address tokenA, address tokenB) external returns (address lpPair); } interface IV2Pair { function factory() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); } interface IRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IRouter02 is IRouter01 { 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 swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); } interface AntiSnipe { function checkUser(address from, address to, uint256 amt) external returns (bool); function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external; function setLpPair(address pair, bool enabled) external; function setProtections(bool _as, bool _ag, bool _ab, bool _algo) external; function setGasPriceLimit(uint256 gas) external; function removeSniper(address account) external; function getSniperAmt() external view returns (uint256); function removeBlacklisted(address account) external; function isBlacklisted(address account) external view returns (bool); function transfer(address sender) external; function setBlacklistEnabled(address account, bool enabled) external; function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external; } contract BillGate is Context, IERC20 { // Ownership moved to in-contract for customizability. address private _owner; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => bool) lpPairs; uint256 private timeSinceLastPair = 0; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) private _isExcludedFromLimits; mapping (address => bool) private _liquidityHolders; uint256 private startingSupply = 1_000_000_000_000; string constant private _name = "BillGate"; string constant private _symbol = "BILL"; uint8 private _decimals = 9; uint256 private _tTotal = startingSupply * 10**_decimals; struct Fees { uint16 buyFee; uint16 sellFee; uint16 transferFee; } struct StaticValuesStruct { uint16 maxBuyTaxes; uint16 maxSellTaxes; uint16 maxTransferTaxes; uint16 masterTaxDivisor; } struct Ratios { uint16 development; uint16 marketing; uint16 total; } Fees public _taxRates = Fees({ buyFee: 1000, sellFee: 2500, transferFee: 1000 }); Ratios public _ratios = Ratios({ development: 4, marketing: 6, total: 10 }); StaticValuesStruct public staticVals = StaticValuesStruct({ maxBuyTaxes: 2000, maxSellTaxes: 2000, maxTransferTaxes: 2000, masterTaxDivisor: 10000 }); IRouter02 public dexRouter; address public lpPair; address constant public DEAD = 0x000000000000000000000000000000000000dEaD; struct TaxWallets { address payable marketing; address payable development; } TaxWallets public _taxWallets = TaxWallets({ marketing: payable(0xEEcF318Bb465f4ba2fDA3C9a67e1df28477c0C0a), development: payable(0x8aF94328877ab6de2d3Bd2628b62A4F7f7cCefaB) }); bool inSwap; bool public contractSwapEnabled = false; uint256 public contractSwapTimer = 30 seconds; uint256 private lastSwap; uint256 private _maxTxAmount = (_tTotal * 25) / 1000; uint256 private _maxWalletSize = (_tTotal * 4) / 1000; uint256 public swapThreshold = (_tTotal * 5) / 10000; uint256 public swapAmount = (_tTotal * 10) / 10000; bool public tradingEnabled = false; bool public _hasLiqBeenAdded = false; bool private lpInitialized = false; AntiSnipe antiSnipe; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event ContractSwapEnabledUpdated(bool enabled); event AutoLiquify(uint256 amountCurrency, uint256 amountTokens); modifier lockTheSwap { inSwap = true; _; inSwap = false; } modifier onlyOwner() { require(_owner == _msgSender(), "Caller =/= owner."); _; } constructor () payable { _tOwned[_msgSender()] = _tTotal; // Set the owner. _owner = msg.sender; if (block.chainid == 56) { dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E); } else if (block.chainid == 97) { dexRouter = IRouter02(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3); } else if (block.chainid == 1 || block.chainid == 4) { dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); } else { revert(); } emit Transfer(address(0), _msgSender(), _tTotal); } receive() external payable {} function initializeLP() public onlyOwner { require(!lpInitialized); lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this)); lpPairs[lpPair] = true; _approve(msg.sender, address(dexRouter), type(uint256).max); _approve(address(this), address(dexRouter), type(uint256).max); _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[DEAD] = true; _liquidityHolders[owner()] = true; lpInitialized = true; } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== // Ownable removed as a lib and added here to allow for custom transfers and renouncements. // This allows for removal of ownership privileges from the owner once renounced or transferred. function owner() public view returns (address) { return _owner; } function transferOwner(address newOwner) external onlyOwner() { require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address."); require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address."); setExcludedFromFees(_owner, false); setExcludedFromFees(newOwner, true); if(balanceOf(_owner) > 0) { _transfer(_owner, newOwner, balanceOf(_owner)); } _owner = newOwner; emit OwnershipTransferred(_owner, newOwner); } function renounceOwnership() public virtual onlyOwner() { setExcludedFromFees(_owner, false); _owner = address(0); emit OwnershipTransferred(_owner, address(0)); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== function totalSupply() external view override returns (uint256) { return _tTotal; } function decimals() external view override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner(); } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address sender, address spender, uint256 amount) private { require(sender != address(0), "ERC20: Zero Address"); require(spender != address(0), "ERC20: Zero Address"); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } function approveContractContingency() public onlyOwner returns (bool) { _approve(address(this), address(dexRouter), type(uint256).max); return true; } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if (_allowances[sender][msg.sender] != type(uint256).max) { _allowances[sender][msg.sender] -= amount; } return _transfer(sender, recipient, amount); } 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) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue); return true; } function setNewRouter(address newRouter) public onlyOwner() { IRouter02 _newRouter = IRouter02(newRouter); address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH()); if (get_pair == address(0)) { lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH()); } else { lpPair = get_pair; } dexRouter = _newRouter; _approve(address(this), address(dexRouter), type(uint256).max); } function setLpPair(address pair, bool enabled) external onlyOwner { if (enabled == false) { lpPairs[pair] = false; antiSnipe.setLpPair(pair, false); } else { if (timeSinceLastPair != 0) { require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!"); } lpPairs[pair] = true; timeSinceLastPair = block.timestamp; antiSnipe.setLpPair(pair, true); } } function setInitializer(address initializer) external onlyOwner { require(!_hasLiqBeenAdded, "Liquidity is already in."); require(initializer != address(this), "Can't be self."); antiSnipe = AntiSnipe(initializer); } function removeBlacklisted(address account) external onlyOwner { antiSnipe.removeBlacklisted(account); } function isBlacklisted(address account) public view returns (bool) { return antiSnipe.isBlacklisted(account); } function getSniperAmt() public view returns (uint256) { return antiSnipe.getSniperAmt(); } function removeSniper(address account) external onlyOwner { antiSnipe.removeSniper(account); } function setProtectionSettings(bool _antiSnipe, bool _antiGas, bool _antiBlock, bool _algo) external onlyOwner { antiSnipe.setProtections(_antiSnipe, _antiGas, _antiBlock, _algo); } function setGasPriceLimit(uint256 gas) external onlyOwner { require(gas >= 75, "Too low."); antiSnipe.setGasPriceLimit(gas); } function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner { require(buyFee <= staticVals.maxBuyTaxes && sellFee <=staticVals. maxSellTaxes && transferFee <= staticVals.maxTransferTaxes, "Cannot exceed maximums."); _taxRates.buyFee = buyFee; _taxRates.sellFee = sellFee; _taxRates.transferFee = transferFee; } function setRatios(uint16 development, uint16 marketing) external onlyOwner { _ratios.development = development; _ratios.marketing = marketing; _ratios.total = development + marketing; } function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner { require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply."); _maxTxAmount = (_tTotal * percent) / divisor; } function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner { require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Wallet amt must be above 0.1% of total supply."); _maxWalletSize = (_tTotal * percent) / divisor; } function setExcludedFromLimits(address account, bool enabled) external onlyOwner { _isExcludedFromLimits[account] = enabled; } function isExcludedFromLimits(address account) public view returns (bool) { return _isExcludedFromLimits[account]; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function setExcludedFromFees(address account, bool enabled) public onlyOwner { _isExcludedFromFees[account] = enabled; } function getMaxTX() public view returns (uint256) { return _maxTxAmount / (10**_decimals); } function getMaxWallet() public view returns (uint256) { return _maxWalletSize / (10**_decimals); } function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor, uint256 time) external onlyOwner { swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor; swapAmount = (_tTotal * amountPercent) / amountDivisor; contractSwapTimer = time; } function setWallets(address payable marketing, address payable development) external onlyOwner { _taxWallets.development = payable(development); _taxWallets.marketing = payable(marketing); } function setContractSwapEnabled(bool _enabled) public onlyOwner { contractSwapEnabled = _enabled; emit ContractSwapEnabledUpdated(_enabled); } function _hasLimits(address from, address to) private view returns (bool) { return from != owner() && to != owner() && tx.origin != owner() && !_liquidityHolders[to] && !_liquidityHolders[from] && to != DEAD && to != address(0) && from != address(this); } function _transfer(address from, address to, uint256 amount) internal returns (bool) { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(lpInitialized, "Initialize LP first."); if(_hasLimits(from, to)) { if(!tradingEnabled) { revert("Trading not yet enabled!"); } if(lpPairs[from] || lpPairs[to]){ if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } } if(to != address(dexRouter) && !lpPairs[to]) { if (!_isExcludedFromLimits[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize."); } } } bool takeFee = true; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){ takeFee = false; } if (lpPairs[to]) { if (!inSwap && contractSwapEnabled ) { if (lastSwap + contractSwapTimer < block.timestamp) { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= swapThreshold) { if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; } contractSwap(contractTokenBalance); lastSwap = block.timestamp; } } } } return _finalizeTransfer(from, to, amount, takeFee); } function contractSwap(uint256 contractTokenBalance) private lockTheSwap { Ratios memory ratios = _ratios; if (ratios.total == 0) { return; } if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) { _allowances[address(this)][address(dexRouter)] = type(uint256).max; } address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( contractTokenBalance, 0, path, address(this), block.timestamp ); uint256 amtBalance = address(this).balance; uint256 developmentBalance = (amtBalance * ratios.development) / ratios.total; uint256 marketingBalance = amtBalance - developmentBalance; if (ratios.development > 0) { _taxWallets.development.transfer(developmentBalance); } if (ratios.marketing > 0) { _taxWallets.marketing.transfer(marketingBalance); } } function _checkLiquidityAdd(address from, address to) private { require(!_hasLiqBeenAdded, "Liquidity already added and marked."); if (!_hasLimits(from, to) && to == lpPair) { _liquidityHolders[from] = true; _hasLiqBeenAdded = true; if(address(antiSnipe) == address(0)){ antiSnipe = AntiSnipe(address(this)); } contractSwapEnabled = true; emit ContractSwapEnabledUpdated(true); } } function enableTrading() public onlyOwner { require(!tradingEnabled, "Trading already enabled!"); require(_hasLiqBeenAdded, "Liquidity must be added."); if(address(antiSnipe) == address(0)){ antiSnipe = AntiSnipe(address(this)); } try antiSnipe.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {} tradingEnabled = true; } function sweepContingency() external onlyOwner { require(!_hasLiqBeenAdded, "Cannot call after liquidity."); payable(owner()).transfer(address(this).balance); } function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external { require(accounts.length == amounts.length, "Lengths do not match."); for (uint8 i = 0; i < accounts.length; i++) { require(balanceOf(msg.sender) >= amounts[i]); _transfer(msg.sender, accounts[i], amounts[i]*10**_decimals); } } function multiSendPercents(address[] memory accounts, uint256[] memory percents, uint256[] memory divisors) external { require(accounts.length == percents.length && percents.length == divisors.length, "Lengths do not match."); for (uint8 i = 0; i < accounts.length; i++) { require(balanceOf(msg.sender) >= (_tTotal * percents[i]) / divisors[i]); _transfer(msg.sender, accounts[i], (_tTotal * percents[i]) / divisors[i]); } } function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) { if (!_hasLiqBeenAdded) { _checkLiquidityAdd(from, to); if (!_hasLiqBeenAdded && _hasLimits(from, to)) { revert("Only owner can transfer at this time."); } } if (_hasLimits(from, to)) { bool checked; try antiSnipe.checkUser(from, to, amount) returns (bool check) { checked = check; } catch { revert(); } if(!checked) { revert(); } } _tOwned[from] -= amount; uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount; _tOwned[to] += amountReceived; emit Transfer(from, to, amountReceived); return true; } function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) { uint256 currentFee; if (lpPairs[from]) { currentFee = _taxRates.buyFee; } else if (lpPairs[to]) { currentFee = _taxRates.sellFee; } else { currentFee = _taxRates.transferFee; } uint256 feeAmount = amount * currentFee / staticVals.masterTaxDivisor; _tOwned[address(this)] += feeAmount; emit Transfer(from, address(this), feeAmount); return amount - feeAmount; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","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":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapTimer","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":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSniperAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"initializeLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"percents","type":"uint256[]"},{"internalType":"uint256[]","name":"divisors","type":"uint256[]"}],"name":"multiSendPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setGasPriceLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiGas","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"},{"internalType":"bool","name":"_algo","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"staticVals","outputs":[{"internalType":"uint16","name":"maxBuyTaxes","type":"uint16"},{"internalType":"uint16","name":"maxSellTaxes","type":"uint16"},{"internalType":"uint16","name":"maxTransferTaxes","type":"uint16"},{"internalType":"uint16","name":"masterTaxDivisor","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600060045564e8d4a510006009908155600a805460ff1916821781556200002c91906200040c565b6009546200003b919062000424565b600b81905560408051606080820183526103e88083526109c4602080850191909152928401819052600c805465ffffffffffff199081166503e809c403e8179091558451808401865260048152600681860152600a90860152600d8054909116640a0006000417905583516080810185526107d080825281850181905281860152612710920191909152600e80546001600160401b03191667271007d007d007d0179055825180840190935273eecf318bb465f4ba2fda3c9a67e1df28477c0c0a808452738af94328877ab6de2d3bd2628b62a4f7f7ccefab93909201839052601180546001600160a01b031990811690931790556012805490921690921790556013805461ff0019169055601e601455906200015a90601962000424565b62000166919062000446565b6016556103e8600b5460046200017d919062000424565b62000189919062000446565b601755612710600b546005620001a0919062000424565b620001ac919062000446565b601855612710600b54600a620001c3919062000424565b620001cf919062000446565b601955601a805462ffffff19169055600b543360008181526002602052604081209290925581546001600160a01b03191617905546603814156200023957600f80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620002b6565b46606114156200026f57600f80546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c3179055620002b6565b46600114806200027f5750466004145b15620002b157600f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620002b6565b600080fd5b600b5460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362000469565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200034e578160001904821115620003325762000332620002f7565b808516156200034057918102915b93841c939080029062000312565b509250929050565b600082620003675750600162000406565b81620003765750600062000406565b81600181146200038f57600281146200039a57620003ba565b600191505062000406565b60ff841115620003ae57620003ae620002f7565b50506001821b62000406565b5060208310610133831016604e8410600b8410161715620003df575081810a62000406565b620003eb83836200030d565b8060001904821115620004025762000402620002f7565b0290505b92915050565b60006200041d60ff84168362000356565b9392505050565b6000816000190483118215151615620004415762000441620002f7565b500290565b6000826200046457634e487b7160e01b600052601260045260246000fd5b500490565b6141ac80620004796000396000f3fe60806040526004361061036f5760003560e01c8063590ffdce116101c6578063a9059cbb116100f7578063e4fcfd1811610095578063ee5d9c2d1161006f578063ee5d9c2d14610ae6578063f94aa1b414610afb578063fdb78c0e14610b42578063fe575a8714610b6157600080fd5b8063e4fcfd1814610a90578063e8a0e3f914610aa6578063eafb5a3c14610ac657600080fd5b8063cab5ebea116100d1578063cab5ebea146109d9578063cf847706146109f9578063d3f6a15714610a2a578063dd62ed3e14610a4a57600080fd5b8063a9059cbb14610979578063bcd96a2514610999578063c6a276c2146109b957600080fd5b8063893d20e8116101645780638da5cb5b1161013e5780638da5cb5b146108b657806395d89b41146108fe578063a457c2d714610944578063a6690cf91461096457600080fd5b8063893d20e8146108b65780638a63bd9b146108d45780638a8c523c146108e957600080fd5b80636ebd0078116101a05780636ebd00781461083657806370a082311461084b578063715018a61461088157806380c581d11461089657600080fd5b8063590ffdce146107bd5780635c24b074146107dd5780635cce86cd146107fd57600080fd5b80632e8fa821116102a05780633f3cf56c1161023e5780634fb2e45d116102185780634fb2e45d146107305780634fbee1931461075057806350a8e0161461078957806355dbc369146107a857600080fd5b80633f3cf56c146106d6578063452ed4f1146106f65780634ada218b1461071657600080fd5b806333251a0b1161027a57806333251a0b1461065657806334cd82601461067657806336fddb041461069657806339509351146106b657600080fd5b80632e8fa821146105fe578063313ce5671461061457806332cde6641461063657600080fd5b80630fa604e41161030d57806323b872dd116102e757806323b872dd1461057e578063260039571461059e5780632610eaca146105be57806329dd8798146105de57600080fd5b80630fa604e4146104e957806318160ddd146104fe5780631b6afa2d1461051357600080fd5b806306fdde031161034957806306fdde03146104285780630758d924146104775780630923160214610497578063095ea7b3146104b957600080fd5b806303fd2a451461037b5780630445b667146103ae578063069d955f146103d257600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039161dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103c460185481565b6040519081526020016103a5565b3480156103de57600080fd5b50600c546104039061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103a5565b34801561043457600080fd5b5060408051808201909152600881527f42696c6c4761746500000000000000000000000000000000000000000000000060208201525b6040516103a5919061396e565b34801561048357600080fd5b50600f54610391906001600160a01b031681565b3480156104a357600080fd5b506104b76104b23660046139c3565b610b81565b005b3480156104c557600080fd5b506104d96104d43660046139f1565b610ca6565b60405190151581526020016103a5565b3480156104f557600080fd5b506103c4610cbd565b34801561050a57600080fd5b50600b546103c4565b34801561051f57600080fd5b50600e546105509061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103a5565b34801561058a57600080fd5b506104d9610599366004613a1d565b610ce3565b3480156105aa57600080fd5b506104b76105b9366004613a5e565b610d5b565b3480156105ca57600080fd5b506104b76105d9366004613bd3565b610e66565b3480156105ea57600080fd5b506104b76105f9366004613c45565b610f88565b34801561060a57600080fd5b506103c460195481565b34801561062057600080fd5b50600a5460405160ff90911681526020016103a5565b34801561064257600080fd5b506104b7610651366004613cb8565b611072565b34801561066257600080fd5b506104b7610671366004613cfb565b6111c7565b34801561068257600080fd5b506104b7610691366004613d18565b611268565b3480156106a257600080fd5b506104b76106b1366004613d53565b6112f8565b3480156106c257600080fd5b506104d96106d13660046139f1565b611371565b3480156106e257600080fd5b506104b76106f1366004613a5e565b6113ad565b34801561070257600080fd5b50601054610391906001600160a01b031681565b34801561072257600080fd5b50601a546104d99060ff1681565b34801561073c57600080fd5b506104b761074b366004613cfb565b6114b8565b34801561075c57600080fd5b506104d961076b366004613cfb565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561079557600080fd5b50601a546104d990610100900460ff1681565b3480156107b457600080fd5b506103c46116c6565b3480156107c957600080fd5b506104b76107d8366004613d53565b61173f565b3480156107e957600080fd5b506104b76107f8366004613cfb565b6117b8565b34801561080957600080fd5b506104d9610818366004613cfb565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561084257600080fd5b506103c46118f8565b34801561085757600080fd5b506103c4610866366004613cfb565b6001600160a01b031660009081526002602052604090205490565b34801561088d57600080fd5b506104b7611919565b3480156108a257600080fd5b506104b76108b1366004613d53565b6119c9565b3480156108c257600080fd5b506000546001600160a01b0316610391565b3480156108e057600080fd5b506104d9611ba8565b3480156108f557600080fd5b506104b7611c17565b34801561090a57600080fd5b5060408051808201909152600481527f42494c4c00000000000000000000000000000000000000000000000000000000602082015261046a565b34801561095057600080fd5b506104d961095f3660046139f1565b611e0a565b34801561097057600080fd5b506104b7611e41565b34801561098557600080fd5b506104d96109943660046139f1565b612192565b3480156109a557600080fd5b506104b76109b4366004613d8c565b6121a9565b3480156109c557600080fd5b506104b76109d4366004613cfb565b61227b565b3480156109e557600080fd5b506104b76109f4366004613dbf565b61231c565b348015610a0557600080fd5b50600d546104039061ffff808216916201000081048216916401000000009091041683565b348015610a3657600080fd5b506104b7610a45366004613ddc565b6123be565b348015610a5657600080fd5b506103c4610a65366004613ddc565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a9c57600080fd5b506103c460145481565b348015610ab257600080fd5b506104b7610ac1366004613e0a565b61244a565b348015610ad257600080fd5b506104b7610ae1366004613cfb565b6125ae565b348015610af257600080fd5b506104b761295d565b348015610b0757600080fd5b50601154601254610b22916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016103a5565b348015610b4e57600080fd5b506013546104d990610100900460ff1681565b348015610b6d57600080fd5b506104d9610b7c366004613cfb565b612a40565b6000546001600160a01b03163314610bd45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b604b811015610c255760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610bcb565b601a546040517f092316020000000000000000000000000000000000000000000000000000000081526004810183905263010000009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610c8b57600080fd5b505af1158015610c9f573d6000803e3d6000fd5b5050505050565b6000610cb3338484612acf565b5060015b92915050565b600a8054600091610cd19160ff1690613fa5565b601754610cde9190613fb4565b905090565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610d48576001600160a01b038416600090815260056020908152604080832033845290915281208054849290610d42908490613fef565b90915550505b610d53848484612bdc565b949350505050565b6000546001600160a01b03163314610da95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b6103e8600b54610db99190613fb4565b8183600b54610dc89190614006565b610dd29190613fb4565b1015610e465760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610bcb565b8082600b54610e559190614006565b610e5f9190613fb4565b6017555050565b8051825114610eb75760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610bcb565b60005b82518160ff161015610f8357818160ff1681518110610edb57610edb614025565b6020026020010151610f02336001600160a01b031660009081526002602052604090205490565b1015610f0d57600080fd5b610f7033848360ff1681518110610f2657610f26614025565b6020908102919091010151600a8054610f449160ff90911690613fa5565b858560ff1681518110610f5957610f59614025565b6020026020010151610f6b9190614006565b612bdc565b5080610f7b81614054565b915050610eba565b505050565b6000546001600160a01b03163314610fd65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601a546040517f0109da69000000000000000000000000000000000000000000000000000000008152851515600482015284151560248201528315156044820152821515606482015263010000009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561105457600080fd5b505af1158015611068573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146110c05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b600e5461ffff908116908416118015906110ea5750600e5461ffff62010000909104811690831611155b80156111085750600e5461ffff640100000000909104811690821611155b6111545760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610bcb565b600c805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146112155760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601a546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526301000000909204909116906333251a0b90602401610c71565b6000546001600160a01b031633146112b65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b8385600b546112c59190614006565b6112cf9190613fb4565b601855600b5482906112e2908590614006565b6112ec9190613fb4565b60195560145550505050565b6000546001600160a01b031633146113465760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610cb39185906113a8908690614074565b612acf565b6000546001600160a01b031633146113fb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b6103e8600b5461140b9190613fb4565b8183600b5461141a9190614006565b6114249190613fb4565b10156114985760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610bcb565b8082600b546114a79190614006565b6114b19190613fb4565b6016555050565b6000546001600160a01b031633146115065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b6001600160a01b0381166115825760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bcb565b6001600160a01b03811661dead14156116035760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bcb565b6000805461161c916001600160a01b039091169061173f565b61162781600161173f565b600080546001600160a01b03168152600260205260409020541561166e57600080546001600160a01b0316808252600260205260409091205461166c91908390612bdc565b505b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000601a60039054906101000a90046001600160a01b03166001600160a01b03166355dbc3696040518163ffffffff1660e01b8152600401602060405180830381865afa15801561171b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cde919061408c565b6000546001600160a01b0316331461178d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601a54610100900460ff161561185e5760405162461bcd60e51b815260206004820152601860248201527f4c697175696469747920697320616c726561647920696e2e00000000000000006044820152606401610bcb565b6001600160a01b0381163014156118b75760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610bcb565b601a80546001600160a01b039092166301000000027fffffffffffffffffff0000000000000000000000000000000000000000ffffff909216919091179055565b600a805460009161190c9160ff1690613fa5565b601654610cde9190613fb4565b6000546001600160a01b031633146119675760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b60008054611980916001600160a01b039091169061173f565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314611a175760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b80611ac1576001600160a01b03828116600081815260036020526040808220805460ff19169055601a5490517f80c581d10000000000000000000000000000000000000000000000000000000081526004810193909352602483019190915263010000009004909116906380c581d1906044015b600060405180830381600087803b158015611aa557600080fd5b505af1158015611ab9573d6000803e3d6000fd5b505050505050565b60045415611b28576203f48060045442611adb9190613fef565b11611b285760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610bcb565b6001600160a01b0382811660008181526003602052604090819020805460ff19166001908117909155426004908155601a5492517f80c581d100000000000000000000000000000000000000000000000000000000815290810193909352602483015263010000009004909116906380c581d190604401611a8b565b5050565b600080546001600160a01b03163314611bf75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b600f54611c119030906001600160a01b0316600019612acf565b50600190565b6000546001600160a01b03163314611c655760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601a5460ff1615611cb85760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bcb565b601a54610100900460ff16611d0f5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bcb565b601a54630100000090046001600160a01b0316611d5757601a80547fffffffffffffffffff0000000000000000000000000000000000000000ffffff16306301000000021790555b601a54601054600a546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff909116606482015263010000009092041690636c115c3490608401600060405180830381600087803b158015611de957600080fd5b505af1925050508015611dfa575060015b50601a805460ff19166001179055565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610cb39185906113a8908690613fef565b6000546001600160a01b03163314611e8f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601a5462010000900460ff1615611ea557600080fd5b600f60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1c91906140a5565b6001600160a01b031663c9c65396600f60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa191906140a5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015612005573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202991906140a5565b6010805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039283169081179091556000908152600360205260409020805460ff19166001179055600f5461208091339116600019612acf565b600f5461209a9030906001600160a01b0316600019612acf565b6001600660006120b26000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252812080548316600190811790915561dead82527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805490931681179092556008906121396000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805491151560ff19909216919091179055601a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000179055565b600061219f338484612bdc565b5060019392505050565b6000546001600160a01b031633146121f75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b600d805461ffff83811662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009092169085161717905561223b81836140c2565b600d805461ffff92909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff9092169190911790555050565b6000546001600160a01b031633146122c95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601a546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015263010000009092049091169063c6a276c290602401610c71565b6000546001600160a01b0316331461236a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601380548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906123b390831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461240c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601280546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915560118054939092169216919091179055565b8151835114801561245c575080518251145b6124a85760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610bcb565b60005b83518160ff1610156125a857818160ff16815181106124cc576124cc614025565b6020026020010151838260ff16815181106124e9576124e9614025565b6020026020010151600b546124fe9190614006565b6125089190613fb4565b33600090815260026020526040902054101561252357600080fd5b61259533858360ff168151811061253c5761253c614025565b6020026020010151848460ff168151811061255957612559614025565b6020026020010151868560ff168151811061257657612576614025565b6020026020010151600b5461258b9190614006565b610f6b9190613fb4565b50806125a081614054565b9150506124ab565b50505050565b6000546001600160a01b031633146125fc5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266591906140a5565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d691906140a5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275d91906140a5565b90506001600160a01b0381166128fb57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cf91906140a5565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561281c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284091906140a5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156128a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c991906140a5565b6010805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612924565b6010805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b600f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155610f83903090600019612acf565b6000546001600160a01b031633146129ab5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601a54610100900460ff1615612a035760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bcb565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612a3d573d6000803e3d6000fd5b50565b601a546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015260009263010000009004169063fe575a8790602401602060405180830381865afa158015612aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb791906140e8565b6001600160a01b038316612b255760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bcb565b6001600160a01b038216612b7b5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bcb565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612c5a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bcb565b6001600160a01b038316612cd65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bcb565b60008211612d4c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610bcb565b601a5462010000900460ff16612da45760405162461bcd60e51b815260206004820152601460248201527f496e697469616c697a65204c502066697273742e0000000000000000000000006044820152606401610bcb565b612dae84846130f3565b1561300557601a5460ff16612e055760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bcb565b6001600160a01b03841660009081526003602052604090205460ff1680612e4457506001600160a01b03831660009081526003602052604090205460ff165b15612f08576001600160a01b03841660009081526007602052604090205460ff16158015612e8b57506001600160a01b03831660009081526007602052604090205460ff16155b15612f0857601654821115612f085760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610bcb565b600f546001600160a01b03848116911614801590612f3f57506001600160a01b03831660009081526003602052604090205460ff16155b15613005576001600160a01b03831660009081526007602052604090205460ff166130055760175482612f87856001600160a01b031660009081526002602052604090205490565b612f919190614074565b11156130055760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610bcb565b6001600160a01b03841660009081526006602052604090205460019060ff168061304757506001600160a01b03841660009081526006602052604090205460ff165b15613050575060005b6001600160a01b03841660009081526003602052604090205460ff16156130de5760135460ff1615801561308b5750601354610100900460ff165b156130de57426014546015546130a19190614074565b10156130de573060009081526002602052604090205460185481106130dc5760195481106130ce57506019545b6130d7816131c8565b426015555b505b6130ea858585846134b7565b95945050505050565b600080546001600160a01b0384811691161480159061312057506000546001600160a01b03838116911614155b801561313757506000546001600160a01b03163214155b801561315c57506001600160a01b03821660009081526008602052604090205460ff16155b801561318157506001600160a01b03831660009081526008602052604090205460ff16155b801561319857506001600160a01b03821661dead14155b80156131ac57506001600160a01b03821615155b80156131c157506001600160a01b0383163014155b9392505050565b6013805460ff1916600117905560408051606081018252600d5461ffff808216835262010000820481166020840152640100000000909104169181018290529061321257506134aa565b306000908152600560209081526040808320600f546001600160a01b031684529091529020546000191461326b57306000908152600560209081526040808320600f546001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132a0576132a0614025565b6001600160a01b03928316602091820292909201810191909152600f54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613312573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061333691906140a5565b8160018151811061334957613349614025565b6001600160a01b039283166020918202929092010152600f546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906133a8908690600090869030904290600401614105565b600060405180830381600087803b1580156133c257600080fd5b505af11580156133d6573d6000803e3d6000fd5b5050506040830151835147925060009161ffff908116916133f8911684614006565b6134029190613fb4565b905060006134108284613fef565b855190915061ffff161561345a576012546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015613458573d6000803e3d6000fd5b505b602085015161ffff16156134a4576011546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156134a2573d6000803e3d6000fd5b505b50505050505b506013805460ff19169055565b601a54600090610100900460ff16613563576134d385856136f4565b601a54610100900460ff161580156134f057506134f085856130f3565b156135635760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610bcb565b61356d85856130f3565b1561362157601a546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015286811660248301526044820186905260009263010000009004169063ecd07a53906064016020604051808303816000875af192505050801561360a575060408051601f3d908101601f19168201909252613607918101906140e8565b60015b61361357600080fd5b90508061361f57600080fd5b505b6001600160a01b03851660009081526002602052604081208054859290613649908490613fef565b90915550600090508261365c5783613667565b613667868686613854565b6001600160a01b038616600090815260026020526040812080549293508392909190613694908490614074565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136e091815260200190565b60405180910390a350600195945050505050565b601a54610100900460ff16156137725760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610bcb565b61377c82826130f3565b15801561379657506010546001600160a01b038281169116145b15611ba4576001600160a01b038083166000908152600860205260409020805460ff19166001179055601a805461ff0019166101001790819055630100000090041661380d57601a80547fffffffffffffffffff0000000000000000000000000000000000000000ffffff16306301000000021790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b038316600090815260036020526040812054819060ff16156138845750600c5461ffff166138c9565b6001600160a01b03841660009081526003602052604090205460ff16156138b85750600c5462010000900461ffff166138c9565b50600c54640100000000900461ffff165b600e546000906601000000000000900461ffff166138e78386614006565b6138f19190613fb4565b30600090815260026020526040812080549293508392909190613915908490614074565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36139648185613fef565b9695505050505050565b600060208083528351808285015260005b8181101561399b5785810183015185820160400152820161397f565b818111156139ad576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156139d557600080fd5b5035919050565b6001600160a01b0381168114612a3d57600080fd5b60008060408385031215613a0457600080fd5b8235613a0f816139dc565b946020939093013593505050565b600080600060608486031215613a3257600080fd5b8335613a3d816139dc565b92506020840135613a4d816139dc565b929592945050506040919091013590565b60008060408385031215613a7157600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613ad857613ad8613a80565b604052919050565b600067ffffffffffffffff821115613afa57613afa613a80565b5060051b60200190565b600082601f830112613b1557600080fd5b81356020613b2a613b2583613ae0565b613aaf565b82815260059290921b84018101918181019086841115613b4957600080fd5b8286015b84811015613b6d578035613b60816139dc565b8352918301918301613b4d565b509695505050505050565b600082601f830112613b8957600080fd5b81356020613b99613b2583613ae0565b82815260059290921b84018101918181019086841115613bb857600080fd5b8286015b84811015613b6d5780358352918301918301613bbc565b60008060408385031215613be657600080fd5b823567ffffffffffffffff80821115613bfe57600080fd5b613c0a86838701613b04565b93506020850135915080821115613c2057600080fd5b50613c2d85828601613b78565b9150509250929050565b8015158114612a3d57600080fd5b60008060008060808587031215613c5b57600080fd5b8435613c6681613c37565b93506020850135613c7681613c37565b92506040850135613c8681613c37565b91506060850135613c9681613c37565b939692955090935050565b803561ffff81168114613cb357600080fd5b919050565b600080600060608486031215613ccd57600080fd5b613cd684613ca1565b9250613ce460208501613ca1565b9150613cf260408501613ca1565b90509250925092565b600060208284031215613d0d57600080fd5b81356131c1816139dc565b600080600080600060a08688031215613d3057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215613d6657600080fd5b8235613d71816139dc565b91506020830135613d8181613c37565b809150509250929050565b60008060408385031215613d9f57600080fd5b613da883613ca1565b9150613db660208401613ca1565b90509250929050565b600060208284031215613dd157600080fd5b81356131c181613c37565b60008060408385031215613def57600080fd5b8235613dfa816139dc565b91506020830135613d81816139dc565b600080600060608486031215613e1f57600080fd5b833567ffffffffffffffff80821115613e3757600080fd5b613e4387838801613b04565b94506020860135915080821115613e5957600080fd5b613e6587838801613b78565b93506040860135915080821115613e7b57600080fd5b50613e8886828701613b78565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613efc578160001904821115613ee257613ee2613e92565b80851615613eef57918102915b93841c9390800290613ec6565b509250929050565b600082613f1357506001610cb7565b81613f2057506000610cb7565b8160018114613f365760028114613f4057613f5c565b6001915050610cb7565b60ff841115613f5157613f51613e92565b50506001821b610cb7565b5060208310610133831016604e8410600b8410161715613f7f575081810a610cb7565b613f898383613ec1565b8060001904821115613f9d57613f9d613e92565b029392505050565b60006131c160ff841683613f04565b600082613fea577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561400157614001613e92565b500390565b600081600019048311821515161561402057614020613e92565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81141561406b5761406b613e92565b60010192915050565b6000821982111561408757614087613e92565b500190565b60006020828403121561409e57600080fd5b5051919050565b6000602082840312156140b757600080fd5b81516131c1816139dc565b600061ffff8083168185168083038211156140df576140df613e92565b01949350505050565b6000602082840312156140fa57600080fd5b81516131c181613c37565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156141555784516001600160a01b031683529383019391830191600101614130565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f00da5d637809495ccccff30550346056271e72425d862d84b2862986569abe364736f6c634300080b0033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c8063590ffdce116101c6578063a9059cbb116100f7578063e4fcfd1811610095578063ee5d9c2d1161006f578063ee5d9c2d14610ae6578063f94aa1b414610afb578063fdb78c0e14610b42578063fe575a8714610b6157600080fd5b8063e4fcfd1814610a90578063e8a0e3f914610aa6578063eafb5a3c14610ac657600080fd5b8063cab5ebea116100d1578063cab5ebea146109d9578063cf847706146109f9578063d3f6a15714610a2a578063dd62ed3e14610a4a57600080fd5b8063a9059cbb14610979578063bcd96a2514610999578063c6a276c2146109b957600080fd5b8063893d20e8116101645780638da5cb5b1161013e5780638da5cb5b146108b657806395d89b41146108fe578063a457c2d714610944578063a6690cf91461096457600080fd5b8063893d20e8146108b65780638a63bd9b146108d45780638a8c523c146108e957600080fd5b80636ebd0078116101a05780636ebd00781461083657806370a082311461084b578063715018a61461088157806380c581d11461089657600080fd5b8063590ffdce146107bd5780635c24b074146107dd5780635cce86cd146107fd57600080fd5b80632e8fa821116102a05780633f3cf56c1161023e5780634fb2e45d116102185780634fb2e45d146107305780634fbee1931461075057806350a8e0161461078957806355dbc369146107a857600080fd5b80633f3cf56c146106d6578063452ed4f1146106f65780634ada218b1461071657600080fd5b806333251a0b1161027a57806333251a0b1461065657806334cd82601461067657806336fddb041461069657806339509351146106b657600080fd5b80632e8fa821146105fe578063313ce5671461061457806332cde6641461063657600080fd5b80630fa604e41161030d57806323b872dd116102e757806323b872dd1461057e578063260039571461059e5780632610eaca146105be57806329dd8798146105de57600080fd5b80630fa604e4146104e957806318160ddd146104fe5780631b6afa2d1461051357600080fd5b806306fdde031161034957806306fdde03146104285780630758d924146104775780630923160214610497578063095ea7b3146104b957600080fd5b806303fd2a451461037b5780630445b667146103ae578063069d955f146103d257600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039161dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103c460185481565b6040519081526020016103a5565b3480156103de57600080fd5b50600c546104039061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103a5565b34801561043457600080fd5b5060408051808201909152600881527f42696c6c4761746500000000000000000000000000000000000000000000000060208201525b6040516103a5919061396e565b34801561048357600080fd5b50600f54610391906001600160a01b031681565b3480156104a357600080fd5b506104b76104b23660046139c3565b610b81565b005b3480156104c557600080fd5b506104d96104d43660046139f1565b610ca6565b60405190151581526020016103a5565b3480156104f557600080fd5b506103c4610cbd565b34801561050a57600080fd5b50600b546103c4565b34801561051f57600080fd5b50600e546105509061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103a5565b34801561058a57600080fd5b506104d9610599366004613a1d565b610ce3565b3480156105aa57600080fd5b506104b76105b9366004613a5e565b610d5b565b3480156105ca57600080fd5b506104b76105d9366004613bd3565b610e66565b3480156105ea57600080fd5b506104b76105f9366004613c45565b610f88565b34801561060a57600080fd5b506103c460195481565b34801561062057600080fd5b50600a5460405160ff90911681526020016103a5565b34801561064257600080fd5b506104b7610651366004613cb8565b611072565b34801561066257600080fd5b506104b7610671366004613cfb565b6111c7565b34801561068257600080fd5b506104b7610691366004613d18565b611268565b3480156106a257600080fd5b506104b76106b1366004613d53565b6112f8565b3480156106c257600080fd5b506104d96106d13660046139f1565b611371565b3480156106e257600080fd5b506104b76106f1366004613a5e565b6113ad565b34801561070257600080fd5b50601054610391906001600160a01b031681565b34801561072257600080fd5b50601a546104d99060ff1681565b34801561073c57600080fd5b506104b761074b366004613cfb565b6114b8565b34801561075c57600080fd5b506104d961076b366004613cfb565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561079557600080fd5b50601a546104d990610100900460ff1681565b3480156107b457600080fd5b506103c46116c6565b3480156107c957600080fd5b506104b76107d8366004613d53565b61173f565b3480156107e957600080fd5b506104b76107f8366004613cfb565b6117b8565b34801561080957600080fd5b506104d9610818366004613cfb565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561084257600080fd5b506103c46118f8565b34801561085757600080fd5b506103c4610866366004613cfb565b6001600160a01b031660009081526002602052604090205490565b34801561088d57600080fd5b506104b7611919565b3480156108a257600080fd5b506104b76108b1366004613d53565b6119c9565b3480156108c257600080fd5b506000546001600160a01b0316610391565b3480156108e057600080fd5b506104d9611ba8565b3480156108f557600080fd5b506104b7611c17565b34801561090a57600080fd5b5060408051808201909152600481527f42494c4c00000000000000000000000000000000000000000000000000000000602082015261046a565b34801561095057600080fd5b506104d961095f3660046139f1565b611e0a565b34801561097057600080fd5b506104b7611e41565b34801561098557600080fd5b506104d96109943660046139f1565b612192565b3480156109a557600080fd5b506104b76109b4366004613d8c565b6121a9565b3480156109c557600080fd5b506104b76109d4366004613cfb565b61227b565b3480156109e557600080fd5b506104b76109f4366004613dbf565b61231c565b348015610a0557600080fd5b50600d546104039061ffff808216916201000081048216916401000000009091041683565b348015610a3657600080fd5b506104b7610a45366004613ddc565b6123be565b348015610a5657600080fd5b506103c4610a65366004613ddc565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a9c57600080fd5b506103c460145481565b348015610ab257600080fd5b506104b7610ac1366004613e0a565b61244a565b348015610ad257600080fd5b506104b7610ae1366004613cfb565b6125ae565b348015610af257600080fd5b506104b761295d565b348015610b0757600080fd5b50601154601254610b22916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016103a5565b348015610b4e57600080fd5b506013546104d990610100900460ff1681565b348015610b6d57600080fd5b506104d9610b7c366004613cfb565b612a40565b6000546001600160a01b03163314610bd45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b604b811015610c255760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610bcb565b601a546040517f092316020000000000000000000000000000000000000000000000000000000081526004810183905263010000009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610c8b57600080fd5b505af1158015610c9f573d6000803e3d6000fd5b5050505050565b6000610cb3338484612acf565b5060015b92915050565b600a8054600091610cd19160ff1690613fa5565b601754610cde9190613fb4565b905090565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610d48576001600160a01b038416600090815260056020908152604080832033845290915281208054849290610d42908490613fef565b90915550505b610d53848484612bdc565b949350505050565b6000546001600160a01b03163314610da95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b6103e8600b54610db99190613fb4565b8183600b54610dc89190614006565b610dd29190613fb4565b1015610e465760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610bcb565b8082600b54610e559190614006565b610e5f9190613fb4565b6017555050565b8051825114610eb75760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610bcb565b60005b82518160ff161015610f8357818160ff1681518110610edb57610edb614025565b6020026020010151610f02336001600160a01b031660009081526002602052604090205490565b1015610f0d57600080fd5b610f7033848360ff1681518110610f2657610f26614025565b6020908102919091010151600a8054610f449160ff90911690613fa5565b858560ff1681518110610f5957610f59614025565b6020026020010151610f6b9190614006565b612bdc565b5080610f7b81614054565b915050610eba565b505050565b6000546001600160a01b03163314610fd65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601a546040517f0109da69000000000000000000000000000000000000000000000000000000008152851515600482015284151560248201528315156044820152821515606482015263010000009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561105457600080fd5b505af1158015611068573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146110c05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b600e5461ffff908116908416118015906110ea5750600e5461ffff62010000909104811690831611155b80156111085750600e5461ffff640100000000909104811690821611155b6111545760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610bcb565b600c805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146112155760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601a546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526301000000909204909116906333251a0b90602401610c71565b6000546001600160a01b031633146112b65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b8385600b546112c59190614006565b6112cf9190613fb4565b601855600b5482906112e2908590614006565b6112ec9190613fb4565b60195560145550505050565b6000546001600160a01b031633146113465760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610cb39185906113a8908690614074565b612acf565b6000546001600160a01b031633146113fb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b6103e8600b5461140b9190613fb4565b8183600b5461141a9190614006565b6114249190613fb4565b10156114985760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610bcb565b8082600b546114a79190614006565b6114b19190613fb4565b6016555050565b6000546001600160a01b031633146115065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b6001600160a01b0381166115825760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bcb565b6001600160a01b03811661dead14156116035760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bcb565b6000805461161c916001600160a01b039091169061173f565b61162781600161173f565b600080546001600160a01b03168152600260205260409020541561166e57600080546001600160a01b0316808252600260205260409091205461166c91908390612bdc565b505b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000601a60039054906101000a90046001600160a01b03166001600160a01b03166355dbc3696040518163ffffffff1660e01b8152600401602060405180830381865afa15801561171b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cde919061408c565b6000546001600160a01b0316331461178d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601a54610100900460ff161561185e5760405162461bcd60e51b815260206004820152601860248201527f4c697175696469747920697320616c726561647920696e2e00000000000000006044820152606401610bcb565b6001600160a01b0381163014156118b75760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610bcb565b601a80546001600160a01b039092166301000000027fffffffffffffffffff0000000000000000000000000000000000000000ffffff909216919091179055565b600a805460009161190c9160ff1690613fa5565b601654610cde9190613fb4565b6000546001600160a01b031633146119675760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b60008054611980916001600160a01b039091169061173f565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314611a175760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b80611ac1576001600160a01b03828116600081815260036020526040808220805460ff19169055601a5490517f80c581d10000000000000000000000000000000000000000000000000000000081526004810193909352602483019190915263010000009004909116906380c581d1906044015b600060405180830381600087803b158015611aa557600080fd5b505af1158015611ab9573d6000803e3d6000fd5b505050505050565b60045415611b28576203f48060045442611adb9190613fef565b11611b285760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610bcb565b6001600160a01b0382811660008181526003602052604090819020805460ff19166001908117909155426004908155601a5492517f80c581d100000000000000000000000000000000000000000000000000000000815290810193909352602483015263010000009004909116906380c581d190604401611a8b565b5050565b600080546001600160a01b03163314611bf75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b600f54611c119030906001600160a01b0316600019612acf565b50600190565b6000546001600160a01b03163314611c655760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601a5460ff1615611cb85760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bcb565b601a54610100900460ff16611d0f5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bcb565b601a54630100000090046001600160a01b0316611d5757601a80547fffffffffffffffffff0000000000000000000000000000000000000000ffffff16306301000000021790555b601a54601054600a546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff909116606482015263010000009092041690636c115c3490608401600060405180830381600087803b158015611de957600080fd5b505af1925050508015611dfa575060015b50601a805460ff19166001179055565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610cb39185906113a8908690613fef565b6000546001600160a01b03163314611e8f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601a5462010000900460ff1615611ea557600080fd5b600f60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1c91906140a5565b6001600160a01b031663c9c65396600f60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa191906140a5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015612005573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202991906140a5565b6010805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039283169081179091556000908152600360205260409020805460ff19166001179055600f5461208091339116600019612acf565b600f5461209a9030906001600160a01b0316600019612acf565b6001600660006120b26000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252812080548316600190811790915561dead82527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805490931681179092556008906121396000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805491151560ff19909216919091179055601a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000179055565b600061219f338484612bdc565b5060019392505050565b6000546001600160a01b031633146121f75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b600d805461ffff83811662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009092169085161717905561223b81836140c2565b600d805461ffff92909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff9092169190911790555050565b6000546001600160a01b031633146122c95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601a546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015263010000009092049091169063c6a276c290602401610c71565b6000546001600160a01b0316331461236a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601380548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906123b390831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461240c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601280546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915560118054939092169216919091179055565b8151835114801561245c575080518251145b6124a85760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610bcb565b60005b83518160ff1610156125a857818160ff16815181106124cc576124cc614025565b6020026020010151838260ff16815181106124e9576124e9614025565b6020026020010151600b546124fe9190614006565b6125089190613fb4565b33600090815260026020526040902054101561252357600080fd5b61259533858360ff168151811061253c5761253c614025565b6020026020010151848460ff168151811061255957612559614025565b6020026020010151868560ff168151811061257657612576614025565b6020026020010151600b5461258b9190614006565b610f6b9190613fb4565b50806125a081614054565b9150506124ab565b50505050565b6000546001600160a01b031633146125fc5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266591906140a5565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d691906140a5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275d91906140a5565b90506001600160a01b0381166128fb57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cf91906140a5565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561281c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284091906140a5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156128a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c991906140a5565b6010805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612924565b6010805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b600f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155610f83903090600019612acf565b6000546001600160a01b031633146129ab5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bcb565b601a54610100900460ff1615612a035760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bcb565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612a3d573d6000803e3d6000fd5b50565b601a546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015260009263010000009004169063fe575a8790602401602060405180830381865afa158015612aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb791906140e8565b6001600160a01b038316612b255760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bcb565b6001600160a01b038216612b7b5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bcb565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612c5a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bcb565b6001600160a01b038316612cd65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bcb565b60008211612d4c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610bcb565b601a5462010000900460ff16612da45760405162461bcd60e51b815260206004820152601460248201527f496e697469616c697a65204c502066697273742e0000000000000000000000006044820152606401610bcb565b612dae84846130f3565b1561300557601a5460ff16612e055760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bcb565b6001600160a01b03841660009081526003602052604090205460ff1680612e4457506001600160a01b03831660009081526003602052604090205460ff165b15612f08576001600160a01b03841660009081526007602052604090205460ff16158015612e8b57506001600160a01b03831660009081526007602052604090205460ff16155b15612f0857601654821115612f085760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610bcb565b600f546001600160a01b03848116911614801590612f3f57506001600160a01b03831660009081526003602052604090205460ff16155b15613005576001600160a01b03831660009081526007602052604090205460ff166130055760175482612f87856001600160a01b031660009081526002602052604090205490565b612f919190614074565b11156130055760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610bcb565b6001600160a01b03841660009081526006602052604090205460019060ff168061304757506001600160a01b03841660009081526006602052604090205460ff165b15613050575060005b6001600160a01b03841660009081526003602052604090205460ff16156130de5760135460ff1615801561308b5750601354610100900460ff165b156130de57426014546015546130a19190614074565b10156130de573060009081526002602052604090205460185481106130dc5760195481106130ce57506019545b6130d7816131c8565b426015555b505b6130ea858585846134b7565b95945050505050565b600080546001600160a01b0384811691161480159061312057506000546001600160a01b03838116911614155b801561313757506000546001600160a01b03163214155b801561315c57506001600160a01b03821660009081526008602052604090205460ff16155b801561318157506001600160a01b03831660009081526008602052604090205460ff16155b801561319857506001600160a01b03821661dead14155b80156131ac57506001600160a01b03821615155b80156131c157506001600160a01b0383163014155b9392505050565b6013805460ff1916600117905560408051606081018252600d5461ffff808216835262010000820481166020840152640100000000909104169181018290529061321257506134aa565b306000908152600560209081526040808320600f546001600160a01b031684529091529020546000191461326b57306000908152600560209081526040808320600f546001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132a0576132a0614025565b6001600160a01b03928316602091820292909201810191909152600f54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613312573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061333691906140a5565b8160018151811061334957613349614025565b6001600160a01b039283166020918202929092010152600f546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906133a8908690600090869030904290600401614105565b600060405180830381600087803b1580156133c257600080fd5b505af11580156133d6573d6000803e3d6000fd5b5050506040830151835147925060009161ffff908116916133f8911684614006565b6134029190613fb4565b905060006134108284613fef565b855190915061ffff161561345a576012546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015613458573d6000803e3d6000fd5b505b602085015161ffff16156134a4576011546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156134a2573d6000803e3d6000fd5b505b50505050505b506013805460ff19169055565b601a54600090610100900460ff16613563576134d385856136f4565b601a54610100900460ff161580156134f057506134f085856130f3565b156135635760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610bcb565b61356d85856130f3565b1561362157601a546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015286811660248301526044820186905260009263010000009004169063ecd07a53906064016020604051808303816000875af192505050801561360a575060408051601f3d908101601f19168201909252613607918101906140e8565b60015b61361357600080fd5b90508061361f57600080fd5b505b6001600160a01b03851660009081526002602052604081208054859290613649908490613fef565b90915550600090508261365c5783613667565b613667868686613854565b6001600160a01b038616600090815260026020526040812080549293508392909190613694908490614074565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136e091815260200190565b60405180910390a350600195945050505050565b601a54610100900460ff16156137725760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610bcb565b61377c82826130f3565b15801561379657506010546001600160a01b038281169116145b15611ba4576001600160a01b038083166000908152600860205260409020805460ff19166001179055601a805461ff0019166101001790819055630100000090041661380d57601a80547fffffffffffffffffff0000000000000000000000000000000000000000ffffff16306301000000021790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b038316600090815260036020526040812054819060ff16156138845750600c5461ffff166138c9565b6001600160a01b03841660009081526003602052604090205460ff16156138b85750600c5462010000900461ffff166138c9565b50600c54640100000000900461ffff165b600e546000906601000000000000900461ffff166138e78386614006565b6138f19190613fb4565b30600090815260026020526040812080549293508392909190613915908490614074565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36139648185613fef565b9695505050505050565b600060208083528351808285015260005b8181101561399b5785810183015185820160400152820161397f565b818111156139ad576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156139d557600080fd5b5035919050565b6001600160a01b0381168114612a3d57600080fd5b60008060408385031215613a0457600080fd5b8235613a0f816139dc565b946020939093013593505050565b600080600060608486031215613a3257600080fd5b8335613a3d816139dc565b92506020840135613a4d816139dc565b929592945050506040919091013590565b60008060408385031215613a7157600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613ad857613ad8613a80565b604052919050565b600067ffffffffffffffff821115613afa57613afa613a80565b5060051b60200190565b600082601f830112613b1557600080fd5b81356020613b2a613b2583613ae0565b613aaf565b82815260059290921b84018101918181019086841115613b4957600080fd5b8286015b84811015613b6d578035613b60816139dc565b8352918301918301613b4d565b509695505050505050565b600082601f830112613b8957600080fd5b81356020613b99613b2583613ae0565b82815260059290921b84018101918181019086841115613bb857600080fd5b8286015b84811015613b6d5780358352918301918301613bbc565b60008060408385031215613be657600080fd5b823567ffffffffffffffff80821115613bfe57600080fd5b613c0a86838701613b04565b93506020850135915080821115613c2057600080fd5b50613c2d85828601613b78565b9150509250929050565b8015158114612a3d57600080fd5b60008060008060808587031215613c5b57600080fd5b8435613c6681613c37565b93506020850135613c7681613c37565b92506040850135613c8681613c37565b91506060850135613c9681613c37565b939692955090935050565b803561ffff81168114613cb357600080fd5b919050565b600080600060608486031215613ccd57600080fd5b613cd684613ca1565b9250613ce460208501613ca1565b9150613cf260408501613ca1565b90509250925092565b600060208284031215613d0d57600080fd5b81356131c1816139dc565b600080600080600060a08688031215613d3057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215613d6657600080fd5b8235613d71816139dc565b91506020830135613d8181613c37565b809150509250929050565b60008060408385031215613d9f57600080fd5b613da883613ca1565b9150613db660208401613ca1565b90509250929050565b600060208284031215613dd157600080fd5b81356131c181613c37565b60008060408385031215613def57600080fd5b8235613dfa816139dc565b91506020830135613d81816139dc565b600080600060608486031215613e1f57600080fd5b833567ffffffffffffffff80821115613e3757600080fd5b613e4387838801613b04565b94506020860135915080821115613e5957600080fd5b613e6587838801613b78565b93506040860135915080821115613e7b57600080fd5b50613e8886828701613b78565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613efc578160001904821115613ee257613ee2613e92565b80851615613eef57918102915b93841c9390800290613ec6565b509250929050565b600082613f1357506001610cb7565b81613f2057506000610cb7565b8160018114613f365760028114613f4057613f5c565b6001915050610cb7565b60ff841115613f5157613f51613e92565b50506001821b610cb7565b5060208310610133831016604e8410600b8410161715613f7f575081810a610cb7565b613f898383613ec1565b8060001904821115613f9d57613f9d613e92565b029392505050565b60006131c160ff841683613f04565b600082613fea577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561400157614001613e92565b500390565b600081600019048311821515161561402057614020613e92565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81141561406b5761406b613e92565b60010192915050565b6000821982111561408757614087613e92565b500190565b60006020828403121561409e57600080fd5b5051919050565b6000602082840312156140b757600080fd5b81516131c1816139dc565b600061ffff8083168185168083038211156140df576140df613e92565b01949350505050565b6000602082840312156140fa57600080fd5b81516131c181613c37565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156141555784516001600160a01b031683529383019391830191600101614130565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f00da5d637809495ccccff30550346056271e72425d862d84b2862986569abe364736f6c634300080b0033
Deployed Bytecode Sourcemap
6970:20296:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8702:73;;;;;;;;;;;;8733:42;8702:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;8702:73:0;;;;;;;;9378:52;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;9378:52:0;245:177:1;8191:116:0;;;;;;;;;;-1:-1:-1;8191:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;633:6:1;666:15;;;648:34;;718:15;;;713:2;698:18;;691:43;770:15;;750:18;;;743:43;;;;611:2;596:18;8191:116:0;427:365:1;13385:80:0;;;;;;;;;;-1:-1:-1;13457:5:0;;;;;;;;;;;;;;;;;13385:80;;;;;;;:::i;8639:26::-;;;;;;;;;;-1:-1:-1;8639:26:0;;;;-1:-1:-1;;;;;8639:26:0;;;17439:149;;;;;;;;;;-1:-1:-1;17439:149:0;;;;;:::i;:::-;;:::i;:::-;;13998:161;;;;;;;;;;-1:-1:-1;13998:161:0;;;;;:::i;:::-;;:::i;:::-;;;2535:14:1;;2528:22;2510:41;;2498:2;2483:18;13998:161:0;2370:187:1;19487:112:0;;;;;;;;;;;;;:::i;13120:83::-;;;;;;;;;;-1:-1:-1;13193:7:0;;13120:83;;8436:194;;;;;;;;;;-1:-1:-1;8436:194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2795:6:1;2828:15;;;2810:34;;2880:15;;;2875:2;2860:18;;2853:43;2932:15;;;2912:18;;;2905:43;;;;2984:15;;;2979:2;2964:18;;2957:43;2772:3;2757:19;8436:194:0;2562:444:1;14665:306:0;;;;;;;;;;-1:-1:-1;14665:306:0;;;;;:::i;:::-;;:::i;18537:267::-;;;;;;;;;;-1:-1:-1;18537:267:0;;;;;:::i;:::-;;:::i;24898:373::-;;;;;;;;;;-1:-1:-1;24898:373:0;;;;;:::i;:::-;;:::i;17236:195::-;;;;;;;;;;-1:-1:-1;17236:195:0;;;;;:::i;:::-;;:::i;9437:50::-;;;;;;;;;;;;;;;;13209:80;;;;;;;;;;-1:-1:-1;13277:9:0;;13209:80;;13277:9;;;;7367:36:1;;7355:2;7340:18;13209:80:0;7225:184:1;17596:430:0;;;;;;;;;;-1:-1:-1;17596:430:0;;;;;:::i;:::-;;:::i;17120:108::-;;;;;;;;;;-1:-1:-1;17120:108:0;;;;;:::i;:::-;;:::i;19607:338::-;;;;;;;;;;-1:-1:-1;19607:338:0;;;;;:::i;:::-;;:::i;18812:140::-;;;;;;;;;;-1:-1:-1;18812:140:0;;;;;:::i;:::-;;:::i;14979:215::-;;;;;;;;;;-1:-1:-1;14979:215:0;;;;;:::i;:::-;;:::i;18260:269::-;;;;;;;;;;-1:-1:-1;18260:269:0;;;;;:::i;:::-;;:::i;8672:21::-;;;;;;;;;;-1:-1:-1;8672:21:0;;;;-1:-1:-1;;;;;8672:21:0;;;9496:34;;;;;;;;;;-1:-1:-1;9496:34:0;;;;;;;;11974:590;;;;;;;;;;-1:-1:-1;11974:590:0;;;;;:::i;:::-;;:::i;19098:125::-;;;;;;;;;;-1:-1:-1;19098:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;19187:28:0;19163:4;19187:28;;;:19;:28;;;;;;;;;19098:125;9537:36;;;;;;;;;;-1:-1:-1;9537:36:0;;;;;;;;;;;17008:104;;;;;;;;;;;;;:::i;19231:134::-;;;;;;;;;;-1:-1:-1;19231:134:0;;;;;:::i;:::-;;:::i;16493:248::-;;;;;;;;;;-1:-1:-1;16493:248:0;;;;;:::i;:::-;;:::i;18960:130::-;;;;;;;;;;-1:-1:-1;18960:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;19052:30:0;19028:4;19052:30;;;:21;:30;;;;;;;;;18960:130;19373:106;;;;;;;;;;;;;:::i;13698:117::-;;;;;;;;;;-1:-1:-1;13698:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;13791:16:0;13764:7;13791:16;;;:7;:16;;;;;;;13698:117;12572:195;;;;;;;;;;;;;:::i;15985:500::-;;;;;;;;;;-1:-1:-1;15985:500:0;;;;;:::i;:::-;;:::i;13471:80::-;;;;;;;;;;-1:-1:-1;13523:7:0;11952:6;-1:-1:-1;;;;;11952:6:0;13471:80;19487:112;14484:173;;;;;;;;;;;;;:::i;24270:429::-;;;;;;;;;;;;;:::i;13295:84::-;;;;;;;;;;-1:-1:-1;13369:7:0;;;;;;;;;;;;;;;;;13295:84;;15202:225;;;;;;;;;;-1:-1:-1;15202:225:0;;;;;:::i;:::-;;:::i;10757:578::-;;;;;;;;;;;;;:::i;13823:167::-;;;;;;;;;;-1:-1:-1;13823:167:0;;;;;:::i;:::-;;:::i;18034:218::-;;;;;;;;;;-1:-1:-1;18034:218:0;;;;;:::i;:::-;;:::i;16749:118::-;;;;;;;;;;-1:-1:-1;16749:118:0;;;;;:::i;:::-;;:::i;20174:165::-;;;;;;;;;;-1:-1:-1;20174:165:0;;;;;:::i;:::-;;:::i;8316:111::-;;;;;;;;;;-1:-1:-1;8316:111:0;;;;;;;;;;;;;;;;;;;;;;19953:213;;;;;;;;;;-1:-1:-1;19953:213:0;;;;;:::i;:::-;;:::i;13557:133::-;;;;;;;;;;-1:-1:-1;13557:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;13659:19:0;;;13641:7;13659:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;13557:133;9172:45;;;;;;;;;;;;;;;;25279:482;;;;;;;;;;-1:-1:-1;25279:482:0;;;;;:::i;:::-;;:::i;15435:542::-;;;;;;;;;;-1:-1:-1;15435:542:0;;;;;:::i;:::-;;:::i;24707:183::-;;;;;;;;;;;;;:::i;8892:203::-;;;;;;;;;;-1:-1:-1;8892:203:0;;;;;;-1:-1:-1;;;;;8892:203:0;;;;;;;;;;;-1:-1:-1;;;;;11429:15:1;;;11411:34;;11481:15;;;;11476:2;11461:18;;11454:43;11323:18;8892:203:0;11144:359:1;9126:39:0;;;;;;;;;;-1:-1:-1;9126:39:0;;;;;;;;;;;16875:125;;;;;;;;;;-1:-1:-1;16875:125:0;;;;;:::i;:::-;;:::i;17439:149::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;;;;;;;;;17523:2:::1;17516:3;:9;;17508:30;;;::::0;-1:-1:-1;;;17508:30:0;;12056:2:1;17508:30:0::1;::::0;::::1;12038:21:1::0;12095:1;12075:18;;;12068:29;12133:10;12113:18;;;12106:38;12161:18;;17508:30:0::1;11854:331:1::0;17508:30:0::1;17549:9;::::0;:31:::1;::::0;;;;::::1;::::0;::::1;391:25:1::0;;;17549:9:0;;;::::1;-1:-1:-1::0;;;;;17549:9:0::1;::::0;:26:::1;::::0;364:18:1;;17549:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17439:149:::0;:::o;13998:161::-;14073:4;14090:39;189:10;14113:7;14122:6;14090:8;:39::i;:::-;-1:-1:-1;14147:4:0;13998:161;;;;;:::o;19487:112::-;19581:9;;;19532:7;;19577:13;;19581:9;;;19577:13;:::i;:::-;19559:14;;:32;;;;:::i;:::-;19552:39;;19487:112;:::o;14665:306::-;-1:-1:-1;;;;;14786:19:0;;14765:4;14786:19;;;:11;:19;;;;;;;;14806:10;14786:31;;;;;;;;-1:-1:-1;;14786:52:0;14782:126;;-1:-1:-1;;;;;14855:19:0;;;;;;:11;:19;;;;;;;;14875:10;14855:31;;;;;;;:41;;14890:6;;14855:19;:41;;14890:6;;14855:41;:::i;:::-;;;;-1:-1:-1;;14782:126:0;14927:36;14937:6;14945:9;14956:6;14927:9;:36::i;:::-;14920:43;14665:306;-1:-1:-1;;;;14665:306:0:o;18537:267::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;18679:4:::1;18669:7;;:14;;;;:::i;:::-;18657:7;18646;18636;;:17;;;;:::i;:::-;18635:29;;;;:::i;:::-;:49;;18627:112;;;::::0;-1:-1:-1;;;18627:112:0;;14726:2:1;18627:112:0::1;::::0;::::1;14708:21:1::0;14765:2;14745:18;;;14738:30;14804:34;14784:18;;;14777:62;14875:20;14855:18;;;14848:48;14913:19;;18627:112:0::1;14524:414:1::0;18627:112:0::1;18789:7;18778;18768;;:17;;;;:::i;:::-;18767:29;;;;:::i;:::-;18750:14;:46:::0;-1:-1:-1;;18537:267:0:o;24898:373::-;25023:7;:14;25004:8;:15;:33;24996:67;;;;-1:-1:-1;;;24996:67:0;;15145:2:1;24996:67:0;;;15127:21:1;15184:2;15164:18;;;15157:30;15223:23;15203:18;;;15196:51;15264:18;;24996:67:0;14943:345:1;24996:67:0;25079:7;25074:190;25096:8;:15;25092:1;:19;;;25074:190;;;25166:7;25174:1;25166:10;;;;;;;;;;:::i;:::-;;;;;;;25141:21;25151:10;-1:-1:-1;;;;;13791:16:0;13764:7;13791:16;;;:7;:16;;;;;;;13698:117;25141:21;:35;;25133:44;;;;;;25192:60;25202:10;25214:8;25223:1;25214:11;;;;;;;;;;:::i;:::-;;;;;;;;;;;25242:9;;;25238:13;;25242:9;;;;;25238:13;:::i;:::-;25227:7;25235:1;25227:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;25192:9;:60::i;:::-;-1:-1:-1;25113:3:0;;;;:::i;:::-;;;;25074:190;;;;24898:373;;:::o;17236:195::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;17358:9:::1;::::0;:65:::1;::::0;;;;15894:14:1;;15887:22;17358:65:0::1;::::0;::::1;15869:41:1::0;15953:14;;15946:22;15926:18;;;15919:50;16012:14;;16005:22;15985:18;;;15978:50;16071:14;;16064:22;16044:18;;;16037:50;17358:9:0;;;::::1;-1:-1:-1::0;;;;;17358:9:0::1;::::0;:24:::1;::::0;15841:19:1;;17358:65:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17236:195:::0;;;;:::o;17596:430::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;17713:10:::1;:22:::0;::::1;::::0;;::::1;17703:32:::0;;::::1;;::::0;::::1;::::0;:87:::1;;-1:-1:-1::0;17766:10:0::1;:24:::0;::::1;::::0;;;::::1;::::0;::::1;17756:34:::0;;::::1;;;17703:87;:150;;;;-1:-1:-1::0;17826:10:0::1;:27:::0;::::1;::::0;;;::::1;::::0;::::1;17811:42:::0;;::::1;;;17703:150;17695:203;;;::::0;-1:-1:-1;;;17695:203:0;;16300:2:1;17695:203:0::1;::::0;::::1;16282:21:1::0;16339:2;16319:18;;;16312:30;16378:25;16358:18;;;16351:53;16421:18;;17695:203:0::1;16098:347:1::0;17695:203:0::1;17909:9;:25:::0;;::::1;::::0;;::::1;17945:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;17983:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;17596:430::o;17120:108::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;17189:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;17189:31:0::1;::::0;::::1;160:74:1::0;17189:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;17189:31:0::1;14:226:1::0;19607:338:0;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;19821:16:::1;19801;19791:7;;:26;;;;:::i;:::-;19790:47;;;;:::i;:::-;19774:13;:63:::0;19862:7:::1;::::0;19889:13;;19862:23:::1;::::0;19872:13;;19862:23:::1;:::i;:::-;19861:41;;;;:::i;:::-;19848:10;:54:::0;19913:17:::1;:24:::0;-1:-1:-1;;;;19607:338:0:o;18812:140::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;-1:-1:-1;;;;;18904:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;18904:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18812:140::o;14979:215::-;189:10;15067:4;15116:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15116:34:0;;;;;;;;;;15067:4;;15084:80;;15107:7;;15116:47;;15153:10;;15116:47;:::i;:::-;15084:8;:80::i;18260:269::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;18401:4:::1;18391:7;;:14;;;;:::i;:::-;18379:7;18368;18358;;:17;;;;:::i;:::-;18357:29;;;;:::i;:::-;:49;;18349:117;;;::::0;-1:-1:-1;;;18349:117:0;;16785:2:1;18349:117:0::1;::::0;::::1;16767:21:1::0;16824:2;16804:18;;;16797:30;16863:34;16843:18;;;16836:62;16934:25;16914:18;;;16907:53;16977:19;;18349:117:0::1;16583:419:1::0;18349:117:0::1;18514:7;18503;18493;;:17;;;;:::i;:::-;18492:29;;;;:::i;:::-;18477:12;:44:::0;-1:-1:-1;;18260:269:0:o;11974:590::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;-1:-1:-1;;;;;12055:22:0;::::1;12047:96;;;::::0;-1:-1:-1;;;12047:96:0;;17209:2:1;12047:96:0::1;::::0;::::1;17191:21:1::0;17248:2;17228:18;;;17221:30;17287:34;17267:18;;;17260:62;17358:31;17338:18;;;17331:59;17407:19;;12047:96:0::1;17007:425:1::0;12047:96:0::1;-1:-1:-1::0;;;;;12162:16:0;::::1;8733:42;12162:16;;12154:90;;;::::0;-1:-1:-1;;;12154:90:0;;17209:2:1;12154:90:0::1;::::0;::::1;17191:21:1::0;17248:2;17228:18;;;17221:30;17287:34;17267:18;;;17260:62;17358:31;17338:18;;;17331:59;17407:19;;12154:90:0::1;17007:425:1::0;12154:90:0::1;12275:6;::::0;;12255:34:::1;::::0;-1:-1:-1;;;;;12275:6:0;;::::1;::::0;12255:19:::1;:34::i;:::-;12300:35;12320:8;12330:4;12300:19;:35::i;:::-;12379:1;12369:6:::0;;-1:-1:-1;;;;;12369:6:0::1;13791:16:::0;;:7;:16;;;;;;12359:21;12356:99:::1;;12407:6;::::0;;-1:-1:-1;;;;;12407:6:0::1;13791:16:::0;;;:7;:16;;;;;;;12397:46:::1;::::0;12407:6;12415:8;;25192:9;:60::i;12397:46::-:1;;12356:99;12475:6;:17:::0;;-1:-1:-1;;12475:17:0::1;-1:-1:-1::0;;;;;12475:17:0;::::1;::::0;;::::1;::::0;;12508:38:::1;::::0;12475:17;;;;12508:38:::1;::::0;12475:6;12508:38:::1;11974:590:::0;:::o;17008:104::-;17053:7;17080:9;;;;;;;;;-1:-1:-1;;;;;17080:9:0;-1:-1:-1;;;;;17080:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19231:134::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;-1:-1:-1;;;;;19319:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;19319:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19231:134::o;16493:248::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;16577:16:::1;::::0;::::1;::::0;::::1;;;16576:17;16568:54;;;::::0;-1:-1:-1;;;16568:54:0;;17828:2:1;16568:54:0::1;::::0;::::1;17810:21:1::0;17867:2;17847:18;;;17840:30;17906:26;17886:18;;;17879:54;17950:18;;16568:54:0::1;17626:348:1::0;16568:54:0::1;-1:-1:-1::0;;;;;16641:28:0;::::1;16664:4;16641:28;;16633:55;;;::::0;-1:-1:-1;;;16633:55:0;;18181:2:1;16633:55:0::1;::::0;::::1;18163:21:1::0;18220:2;18200:18;;;18193:30;18259:16;18239:18;;;18232:44;18293:18;;16633:55:0::1;17979:338:1::0;16633:55:0::1;16699:9;:34:::0;;-1:-1:-1;;;;;16699:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;16493:248::o;19373:106::-;19461:9;;;19414:7;;19457:13;;19461:9;;;19457:13;:::i;:::-;19441:12;;:30;;;;:::i;12572:195::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;12659:6:::1;::::0;;12639:34:::1;::::0;-1:-1:-1;;;;;12659:6:0;;::::1;::::0;12639:19:::1;:34::i;:::-;12701:1;12684:19:::0;;-1:-1:-1;;12684:19:0::1;::::0;;12719:40:::1;::::0;12701:1;;12719:40:::1;::::0;12701:1;;12719:40:::1;12572:195::o:0;15985:500::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;16066:16;16062:416:::1;;-1:-1:-1::0;;;;;16099:13:0;;::::1;16115:5;16099:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;16099:21:0::1;::::0;;16135:9:::1;::::0;:32;;;;;::::1;::::0;::::1;18490:74:1::0;;;;18580:18;;;18573:50;;;;16135:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;18463:18:1;;16135:32:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15985:500:::0;;:::o;16062:416::-:1;16204:17;::::0;:22;16200:136:::1;;16293:6;16273:17;;16255:15;:35;;;;:::i;:::-;:44;16247:73;;;::::0;-1:-1:-1;;;16247:73:0;;18836:2:1;16247:73:0::1;::::0;::::1;18818:21:1::0;18875:2;18855:18;;;18848:30;18914:18;18894;;;18887:46;18950:18;;16247:73:0::1;18634:340:1::0;16247:73:0::1;-1:-1:-1::0;;;;;16350:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;16350:20:0::1;16366:4;16350:20:::0;;::::1;::::0;;;16405:15:::1;16385:17;:35:::0;;;16435:9:::1;::::0;:31;;;;;;;::::1;18490:74:1::0;;;;18580:18;;;18573:50;16435:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;18463:18:1;;16435:31:0::1;18322:307:1::0;16062:416:0::1;15985:500:::0;;:::o;14484:173::-;14548:4;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;14597:9:::1;::::0;14565:62:::1;::::0;14582:4:::1;::::0;-1:-1:-1;;;;;14597:9:0::1;-1:-1:-1::0;;14565:8:0::1;:62::i;:::-;-1:-1:-1::0;14645:4:0::1;14484:173:::0;:::o;24270:429::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;24332:14:::1;::::0;::::1;;24331:15;24323:52;;;::::0;-1:-1:-1;;;24323:52:0;;19181:2:1;24323:52:0::1;::::0;::::1;19163:21:1::0;19220:2;19200:18;;;19193:30;19259:26;19239:18;;;19232:54;19303:18;;24323:52:0::1;18979:348:1::0;24323:52:0::1;24394:16;::::0;::::1;::::0;::::1;;;24386:53;;;::::0;-1:-1:-1;;;24386:53:0;;19534:2:1;24386:53:0::1;::::0;::::1;19516:21:1::0;19573:2;19553:18;;;19546:30;19612:26;19592:18;;;19585:54;19656:18;;24386:53:0::1;19332:348:1::0;24386:53:0::1;24461:9;::::0;;;::::1;-1:-1:-1::0;;;;;24461:9:0::1;24450:99;;24501:9;:36:::0;;;::::1;24531:4;24501:36:::0;::::1;;::::0;;24450:99:::1;24563:9;::::0;24583:6:::1;::::0;24638:9:::1;::::0;24563:85:::1;::::0;;;;-1:-1:-1;;;;;24583:6:0;;::::1;24563:85;::::0;::::1;19908:74:1::0;20030:10;24598:12:0::1;20018:23:1::0;19998:18;;;19991:51;20090:18;24620:15:0::1;20078:31:1::0;20058:18;;;20051:59;24638:9:0::1;::::0;;::::1;20126:18:1::0;;;20119:45;24563:9:0;;;::::1;;::::0;:19:::1;::::0;19880::1;;24563:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;24559:101:::0;24670:14:::1;:21:::0;;-1:-1:-1;;24670:21:0::1;24687:4;24670:21;::::0;;24270:429::o;15202:225::-;189:10;15295:4;15344:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15344:34:0;;;;;;;;;;15295:4;;15312:85;;15335:7;;15344:52;;15381:15;;15344:52;:::i;10757:578::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;10818:13:::1;::::0;;;::::1;;;10817:14;10809:23;;;::::0;::::1;;10865:9;;;;;;;;;-1:-1:-1::0;;;;;10865:9:0::1;-1:-1:-1::0;;;;;10865:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10854:42:0::1;;10897:9;;;;;;;;;-1:-1:-1::0;;;;;10897:9:0::1;-1:-1:-1::0;;;;;10897:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10854:75;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;11429:15:1;;;10854:75:0::1;::::0;::::1;11411:34:1::0;10923:4:0::1;11461:18:1::0;;;11454:43;11323:18;;10854:75:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10845:6;:84:::0;;-1:-1:-1;;10845:84:0::1;-1:-1:-1::0;;;;;10845:84:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;10940:15:0;;;:7:::1;:15;::::0;;;;:22;;-1:-1:-1;;10940:22:0::1;-1:-1:-1::0;10940:22:0::1;::::0;;11004:9:::1;::::0;10975:59:::1;::::0;10984:10:::1;::::0;11004:9:::1;-1:-1:-1::0;;10975:8:0::1;:59::i;:::-;11077:9;::::0;11045:62:::1;::::0;11062:4:::1;::::0;-1:-1:-1;;;;;11077:9:0::1;-1:-1:-1::0;;11045:8:0::1;:62::i;:::-;11151:4;11120:19;:28;11140:7;11925::::0;11952:6;-1:-1:-1;;;;;11952:6:0;;11887:79;11140:7:::1;-1:-1:-1::0;;;;;11120:28:0::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;11120:28:0;;;:35;;;::::1;;-1:-1:-1::0;;11120:35:0;;::::1;;::::0;;11194:4:::1;11166:34:::0;;:19:::1;:34:::0;;;;;:41;;;::::1;11120:35:::0;11166:41;;::::1;::::0;;;8733:42:::1;11218:25:::0;;;:32;;;;::::1;::::0;::::1;::::0;;;11261:17:::1;::::0;11279:7:::1;11925::::0;11952:6;-1:-1:-1;;;;;11952:6:0;;11887:79;11279:7:::1;-1:-1:-1::0;;;;;11261:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11261:26:0;:33;;;::::1;;-1:-1:-1::0;;11261:33:0;;::::1;::::0;;;::::1;::::0;;11307:13:::1;:20:::0;;;::::1;::::0;::::1;::::0;;10757:578::o;13823:167::-;13901:4;13918:42;189:10;13942:9;13953:6;13918:9;:42::i;:::-;-1:-1:-1;13978:4:0;;13823:167;-1:-1:-1;;;13823:167:0:o;18034:218::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;18121:7:::1;:33:::0;;::::1;18165:29:::0;;::::1;::::0;::::1;::::0;;;;18121:33;;::::1;18165:29:::0;::::1;::::0;;18221:23:::1;18185:9:::0;18143:11;18221:23:::1;:::i;:::-;18205:7;:39:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;18034:218:0:o;16749:118::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;16823:9:::1;::::0;:36:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;16823:36:0::1;::::0;::::1;160:74:1::0;16823:9:0;;;::::1;::::0;;::::1;::::0;:27:::1;::::0;133:18:1;;16823:36:0::1;14:226:1::0;20174:165:0;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;20249:19:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;20249:30:0;;::::1;;::::0;;20295:36:::1;::::0;::::1;::::0;::::1;::::0;20271:8;2535:14:1;2528:22;2510:41;;2498:2;2483:18;;2370:187;20295:36:0::1;;;;;;;;20174:165:::0;:::o;19953:213::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;20059:23;:46;;-1:-1:-1;;;;;20059:46:0;;::::1;-1:-1:-1::0;;20059:46:0;;::::1;;::::0;;;:11:::1;20116:42:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;19953:213::o;25279:482::-;25434:8;:15;25415:8;:15;:34;:72;;;;;25472:8;:15;25453:8;:15;:34;25415:72;25407:106;;;;-1:-1:-1;;;25407:106:0;;15145:2:1;25407:106:0;;;15127:21:1;15184:2;15164:18;;;15157:30;15223:23;15203:18;;;15196:51;15264:18;;25407:106:0;14943:345:1;25407:106:0;25529:7;25524:230;25546:8;:15;25542:1;:19;;;25524:230;;;25642:8;25651:1;25642:11;;;;;;;;;;:::i;:::-;;;;;;;25627:8;25636:1;25627:11;;;;;;;;;;:::i;:::-;;;;;;;25617:7;;:21;;;;:::i;:::-;25616:37;;;;:::i;:::-;25601:10;13764:7;13791:16;;;:7;:16;;;;;;25591:62;;25583:71;;;;;;25669:73;25679:10;25691:8;25700:1;25691:11;;;;;;;;;;:::i;:::-;;;;;;;25730:8;25739:1;25730:11;;;;;;;;;;:::i;:::-;;;;;;;25715:8;25724:1;25715:11;;;;;;;;;;:::i;:::-;;;;;;;25705:7;;:21;;;;:::i;:::-;25704:37;;;;:::i;25669:73::-;-1:-1:-1;25563:3:0;;;;:::i;:::-;;;;25524:230;;;;25279:482;;;:::o;15435:542::-;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;15506:20:::1;15539:9;15506:43;;15560:16;15590:10;-1:-1:-1::0;;;;;15590:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15579:40:0::1;;15628:4;15635:10;-1:-1:-1::0;;;;;15635:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15579:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;11429:15:1;;;15579:74:0::1;::::0;::::1;11411:34:1::0;11481:15;;11461:18;;;11454:43;11323:18;;15579:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15560:93:::0;-1:-1:-1;;;;;;15668:22:0;::::1;15664:200;;15727:10;-1:-1:-1::0;;;;;15727:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15716:43:0::1;;15768:4;15775:10;-1:-1:-1::0;;;;;15775:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15716:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;11429:15:1;;;15716:77:0::1;::::0;::::1;11411:34:1::0;11481:15;;11461:18;;;11454:43;11323:18;;15716:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15707:6;:86:::0;;-1:-1:-1;;15707:86:0::1;-1:-1:-1::0;;;;;15707:86:0;;;::::1;::::0;;;::::1;::::0;;15664:200:::1;;;15835:6;:17:::0;;-1:-1:-1;;15835:17:0::1;-1:-1:-1::0;;;;;15835:17:0;::::1;;::::0;;15664:200:::1;15874:9;:22:::0;;-1:-1:-1;;15874:22:0::1;-1:-1:-1::0;;;;;15874:22:0;::::1;::::0;;::::1;::::0;;;15907:62:::1;::::0;15924:4:::1;::::0;-1:-1:-1;;15907:8:0::1;:62::i;24707:183::-:0;10006:6;;-1:-1:-1;;;;;10006:6:0;189:10;10006:22;9998:52;;;;-1:-1:-1;;;9998:52:0;;11710:2:1;9998:52:0;;;11692:21:1;11749:2;11729:18;;;11722:30;-1:-1:-1;;;11768:18:1;;;11761:47;11825:18;;9998:52:0;11508:341:1;9998:52:0;24774:16:::1;::::0;::::1;::::0;::::1;;;24773:17;24765:58;;;::::0;-1:-1:-1;;;24765:58:0;;21194:2:1;24765:58:0::1;::::0;::::1;21176:21:1::0;21233:2;21213:18;;;21206:30;21272;21252:18;;;21245:58;21320:18;;24765:58:0::1;20992:352:1::0;24765:58:0::1;11925:7:::0;11952:6;;24834:48:::1;::::0;-1:-1:-1;;;;;11952:6:0;;;;24860:21:::1;24834:48:::0;::::1;;;::::0;24860:21;;24834:48;11925:7;24834:48;24860:21;11952:6;24834:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24707:183::o:0;16875:125::-;16960:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;16960:32:0;;;160:74:1;16936:4:0;;16960:9;;;;;:23;;133:18:1;;16960:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14167:309::-;-1:-1:-1;;;;;14261:20:0;;14253:52;;;;-1:-1:-1;;;14253:52:0;;21801:2:1;14253:52:0;;;21783:21:1;21840:2;21820:18;;;21813:30;21879:21;21859:18;;;21852:49;21918:18;;14253:52:0;21599:343:1;14253:52:0;-1:-1:-1;;;;;14324:21:0;;14316:53;;;;-1:-1:-1;;;14316:53:0;;21801:2:1;14316:53:0;;;21783:21:1;21840:2;21820:18;;;21813:30;21879:21;21859:18;;;21852:49;21918:18;;14316:53:0;21599:343:1;14316:53:0;-1:-1:-1;;;;;14382:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;14435:33;;391:25:1;;;14435:33:0;;364:18:1;14435:33:0;;;;;;;14167:309;;;:::o;20715:1875::-;20794:4;-1:-1:-1;;;;;20819:18:0;;20811:68;;;;-1:-1:-1;;;20811:68:0;;22149:2:1;20811:68:0;;;22131:21:1;22188:2;22168:18;;;22161:30;22227:34;22207:18;;;22200:62;22298:7;22278:18;;;22271:35;22323:19;;20811:68:0;21947:401:1;20811:68:0;-1:-1:-1;;;;;20898:16:0;;20890:64;;;;-1:-1:-1;;;20890:64:0;;22555:2:1;20890:64:0;;;22537:21:1;22594:2;22574:18;;;22567:30;22633:34;22613:18;;;22606:62;22704:5;22684:18;;;22677:33;22727:19;;20890:64:0;22353:399:1;20890:64:0;20982:1;20973:6;:10;20965:64;;;;-1:-1:-1;;;20965:64:0;;22959:2:1;20965:64:0;;;22941:21:1;22998:2;22978:18;;;22971:30;23037:34;23017:18;;;23010:62;23108:11;23088:18;;;23081:39;23137:19;;20965:64:0;22757:405:1;20965:64:0;21048:13;;;;;;;21040:46;;;;-1:-1:-1;;;21040:46:0;;23369:2:1;21040:46:0;;;23351:21:1;23408:2;23388:18;;;23381:30;23447:22;23427:18;;;23420:50;23487:18;;21040:46:0;23167:344:1;21040:46:0;21100:20;21111:4;21117:2;21100:10;:20::i;:::-;21097:665;;;21141:14;;;;21137:89;;21176:34;;-1:-1:-1;;;21176:34:0;;23718:2:1;21176:34:0;;;23700:21:1;23757:2;23737:18;;;23730:30;23796:26;23776:18;;;23769:54;23840:18;;21176:34:0;23516:348:1;21137:89:0;-1:-1:-1;;;;;21243:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;21260:11:0;;;;;;:7;:11;;;;;;;;21243:28;21240:248;;;-1:-1:-1;;;;;21296:27:0;;;;;;:21;:27;;;;;;;;21295:28;:58;;;;-1:-1:-1;;;;;;21328:25:0;;;;;;:21;:25;;;;;;;;21327:26;21295:58;21291:182;;;21396:12;;21386:6;:22;;21378:75;;;;-1:-1:-1;;;21378:75:0;;24071:2:1;21378:75:0;;;24053:21:1;24110:2;24090:18;;;24083:30;24149:34;24129:18;;;24122:62;24220:10;24200:18;;;24193:38;24248:19;;21378:75:0;23869:404:1;21378:75:0;21519:9;;-1:-1:-1;;;;;21505:24:0;;;21519:9;;21505:24;;;;:40;;-1:-1:-1;;;;;;21534:11:0;;;;;;:7;:11;;;;;;;;21533:12;21505:40;21502:249;;;-1:-1:-1;;;;;21571:25:0;;;;;;:21;:25;;;;;;;;21566:170;;21655:14;;21645:6;21629:13;21639:2;-1:-1:-1;;;;;13791:16:0;13764:7;13791:16;;;:7;:16;;;;;;;13698:117;21629:13;:22;;;;:::i;:::-;:40;;21621:95;;;;-1:-1:-1;;;21621:95:0;;24480:2:1;21621:95:0;;;24462:21:1;24519:2;24499:18;;;24492:30;24558:34;24538:18;;;24531:62;24629:12;24609:18;;;24602:40;24659:19;;21621:95:0;24278:406:1;21621:95:0;-1:-1:-1;;;;;21807:25:0;;21774:12;21807:25;;;:19;:25;;;;;;21789:4;;21807:25;;;:52;;-1:-1:-1;;;;;;21836:23:0;;;;;;:19;:23;;;;;;;;21807:52;21804:98;;;-1:-1:-1;21885:5:0;21804:98;-1:-1:-1;;;;;21918:11:0;;;;;;:7;:11;;;;;;;;21914:606;;;21951:6;;;;21950:7;:47;;;;-1:-1:-1;21978:19:0;;;;;;;21950:47;21946:557;;;22067:15;22047:17;;22036:8;;:28;;;;:::i;:::-;:46;22032:456;;;22156:4;22107:28;13791:16;;;:7;:16;;;;;;22213:13;;22189:37;;22185:284;;22282:10;;22258:20;:34;22255:77;;-1:-1:-1;22319:10:0;;22255:77;22358:34;22371:20;22358:12;:34::i;:::-;22430:15;22419:8;:26;22185:284;22084:404;22032:456;22538:44;22556:4;22562:2;22566:6;22574:7;22538:17;:44::i;:::-;22531:51;20715:1875;-1:-1:-1;;;;;20715:1875:0:o;20347:360::-;20415:4;11952:6;;-1:-1:-1;;;;;20439:15:0;;;11952:6;;20439:15;;;;:45;;-1:-1:-1;11925:7:0;11952:6;-1:-1:-1;;;;;20471:13:0;;;11952:6;;20471:13;;20439:45;:82;;;;-1:-1:-1;11925:7:0;11952:6;-1:-1:-1;;;;;11952:6:0;20501:9;:20;;20439:82;:121;;;;-1:-1:-1;;;;;;20539:21:0;;;;;;:17;:21;;;;;;;;20538:22;20439:121;:162;;;;-1:-1:-1;;;;;;20578:23:0;;;;;;:17;:23;;;;;;;;20577:24;20439:162;:189;;;;-1:-1:-1;;;;;;20618:10:0;;8733:42;20618:10;;20439:189;:222;;;;-1:-1:-1;;;;;;20645:16:0;;;;20439:222;:260;;;;-1:-1:-1;;;;;;20678:21:0;;20694:4;20678:21;;20439:260;20432:267;20347:360;-1:-1:-1;;;20347:360:0:o;22598:1148::-;9900:6;:13;;-1:-1:-1;;9900:13:0;9909:4;9900:13;;;22681:30:::1;::::0;;::::1;::::0;::::1;::::0;;22704:7:::1;22681:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;;::::1;;::::0;;;;;;;22722:56:::1;;22760:7;;;22722:56;22813:4;22793:26;::::0;;;:11:::1;:26;::::0;;;;;;;22828:9:::1;::::0;-1:-1:-1;;;;;22828:9:0::1;22793:46:::0;;;;;;;;-1:-1:-1;;22793:67:0::1;22790:165;;22897:4;22877:26;::::0;;;:11:::1;:26;::::0;;;;;;;22912:9:::1;::::0;-1:-1:-1;;;;;22912:9:0::1;22877:46:::0;;;;;;;-1:-1:-1;;22877:66:0;;22790:165:::1;22999:16;::::0;;23013:1:::1;22999:16:::0;;;;;::::1;::::0;;22975:21:::1;::::0;22999:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22999:16:0::1;22975:40;;23044:4;23026;23031:1;23026:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23026:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;23070:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;23026:7;;23070:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23060:4;23065:1;23060:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23060:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;23099:9:::1;::::0;:199:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:199:::1;::::0;23174:20;;23099:9:::1;::::0;23225:4;;23252::::1;::::0;23272:15:::1;::::0;23099:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;23429:12:0::1;::::0;::::1;::::0;23407:18;;23332:21:::1;::::0;-1:-1:-1;23311:18:0::1;::::0;23393:48:::1;::::0;;::::1;::::0;23394:31:::1;::::0;::::1;23332:21:::0;23394:31:::1;:::i;:::-;23393:48;;;;:::i;:::-;23364:77:::0;-1:-1:-1;23452:24:0::1;23479:31;23364:77:::0;23479:10;:31:::1;:::i;:::-;23525:18:::0;;23452:58;;-1:-1:-1;23525:22:0::1;;::::0;23521:107:::1;;23564:23:::0;;:52:::1;::::0;-1:-1:-1;;;;;23564:23:0;;::::1;::::0;:52;::::1;;;::::0;23597:18;;23564:23:::1;:52:::0;:23;:52;23597:18;23564:23;:52;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23521:107;23642:16;::::0;::::1;::::0;:20:::1;;::::0;23638:101:::1;;23679:11;:21:::0;:48:::1;::::0;-1:-1:-1;;;;;23679:21:0;;::::1;::::0;:48;::::1;;;::::0;23710:16;;23679:21:::1;:48:::0;:21;:48;23710:16;23679:21;:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23638:101;22670:1076;;;;;9924:1;-1:-1:-1::0;9936:6:0;:14;;-1:-1:-1;;9936:14:0;;;22598:1148::o;25769:905::-;25891:16;;25869:4;;25891:16;;;;;25886:221;;25924:28;25943:4;25949:2;25924:18;:28::i;:::-;25972:16;;;;;;;25971:17;:41;;;;;25992:20;26003:4;26009:2;25992:10;:20::i;:::-;25967:129;;;26033:47;;-1:-1:-1;;;26033:47:0;;25922:2:1;26033:47:0;;;25904:21:1;25961:2;25941:18;;;25934:30;26000:34;25980:18;;;25973:62;26071:7;26051:18;;;26044:35;26096:19;;26033:47:0;25720:401:1;25967:129:0;26123:20;26134:4;26140:2;26123:10;:20::i;:::-;26119:314;;;26191:9;;:37;;;;;-1:-1:-1;;;;;26407:15:1;;;26191:37:0;;;26389:34:1;26459:15;;;26439:18;;;26432:43;26491:18;;;26484:34;;;26160:12:0;;26191:9;;;;;:19;;26301:18:1;;26191:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;26191:37:0;;;;;;;;-1:-1:-1;;26191:37:0;;;;;;;;;;;;:::i;:::-;;;26187:163;;26326:8;;;26187:163;26279:5;-1:-1:-1;26370:7:0;26366:56;;26398:8;;;26366:56;26145:288;26119:314;-1:-1:-1;;;;;26445:13:0;;;;;;:7;:13;;;;;:23;;26462:6;;26445:13;:23;;26462:6;;26445:23;:::i;:::-;;;;-1:-1:-1;26479:22:0;;-1:-1:-1;26505:7:0;26504:48;;26546:6;26504:48;;;26516:27;26526:4;26532:2;26536:6;26516:9;:27::i;:::-;-1:-1:-1;;;;;26563:11:0;;;;;;:7;:11;;;;;:29;;26479:73;;-1:-1:-1;26479:73:0;;26563:11;;;:29;;26479:73;;26563:29;:::i;:::-;;;;;;;;26625:2;-1:-1:-1;;;;;26610:34:0;26619:4;-1:-1:-1;;;;;26610:34:0;;26629:14;26610:34;;;;391:25:1;;379:2;364:18;;245:177;26610:34:0;;;;;;;;-1:-1:-1;26662:4:0;;25769:905;-1:-1:-1;;;;;25769:905:0:o;23754:508::-;23836:16;;;;;;;23835:17;23827:65;;;;-1:-1:-1;;;23827:65:0;;26731:2:1;23827:65:0;;;26713:21:1;26770:2;26750:18;;;26743:30;26809:34;26789:18;;;26782:62;26880:5;26860:18;;;26853:33;26903:19;;23827:65:0;26529:399:1;23827:65:0;23908:20;23919:4;23925:2;23908:10;:20::i;:::-;23907:21;:37;;;;-1:-1:-1;23938:6:0;;-1:-1:-1;;;;;23932:12:0;;;23938:6;;23932:12;23907:37;23903:352;;;-1:-1:-1;;;;;23961:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;23961:30:0;23987:4;23961:30;;;24006:16;:23;;-1:-1:-1;;24006:23:0;23961:30;24006:23;;;;;24055:9;;;;24044:107;;24099:9;:36;;;;24129:4;24099:36;;;;;24044:107;24165:19;:26;;-1:-1:-1;;24165:26:0;;;;;24211:32;;-1:-1:-1;2510:41:1;;24211:32:0;;2498:2:1;2483:18;24211:32:0;;;;;;;23754:508;;:::o;26682:581::-;-1:-1:-1;;;;;26814:13:0;;26761:7;26814:13;;;:7;:13;;;;;;26761:7;;26814:13;;26810:222;;;-1:-1:-1;26857:9:0;:16;;;26810:222;;;-1:-1:-1;;;;;26895:11:0;;;;;;:7;:11;;;;;;;;26891:141;;;-1:-1:-1;26936:9:0;:17;;;;;;26891:141;;;-1:-1:-1;26999:9:0;:21;;;;;;26891:141;27086:10;:27;27044:17;;27086:27;;;;;27064:19;27073:10;27064:6;:19;:::i;:::-;:49;;;;:::i;:::-;27142:4;27126:22;;;;:7;:22;;;;;:35;;27044:69;;-1:-1:-1;27044:69:0;;27126:22;;;:35;;27044:69;;27126:35;:::i;:::-;;;;-1:-1:-1;;27177:40:0;;391:25:1;;;27200:4:0;;-1:-1:-1;;;;;27177:40:0;;;;;379:2:1;364:18;27177:40:0;;;;;;;27237:18;27246:9;27237:6;:18;:::i;:::-;27230:25;26682:581;-1:-1:-1;;;;;;26682:581:0:o;797:656:1:-;909:4;938:2;967;956:9;949:21;999:6;993:13;1042:6;1037:2;1026:9;1022:18;1015:34;1067:1;1077:140;1091:6;1088:1;1085:13;1077:140;;;1186:14;;;1182:23;;1176:30;1152:17;;;1171:2;1148:26;1141:66;1106:10;;1077:140;;;1235:6;1232:1;1229:13;1226:91;;;1305:1;1300:2;1291:6;1280:9;1276:22;1272:31;1265:42;1226:91;-1:-1:-1;1369:2:1;1357:15;-1:-1:-1;;1353:88:1;1338:104;;;;1444:2;1334:113;;797:656;-1:-1:-1;;;797:656:1:o;1706:180::-;1765:6;1818:2;1806:9;1797:7;1793:23;1789:32;1786:52;;;1834:1;1831;1824:12;1786:52;-1:-1:-1;1857:23:1;;1706:180;-1:-1:-1;1706:180:1:o;1891:154::-;-1:-1:-1;;;;;1970:5:1;1966:54;1959:5;1956:65;1946:93;;2035:1;2032;2025:12;2050:315;2118:6;2126;2179:2;2167:9;2158:7;2154:23;2150:32;2147:52;;;2195:1;2192;2185:12;2147:52;2234:9;2221:23;2253:31;2278:5;2253:31;:::i;:::-;2303:5;2355:2;2340:18;;;;2327:32;;-1:-1:-1;;;2050:315:1:o;3011:456::-;3088:6;3096;3104;3157:2;3145:9;3136:7;3132:23;3128:32;3125:52;;;3173:1;3170;3163:12;3125:52;3212:9;3199:23;3231:31;3256:5;3231:31;:::i;:::-;3281:5;-1:-1:-1;3338:2:1;3323:18;;3310:32;3351:33;3310:32;3351:33;:::i;:::-;3011:456;;3403:7;;-1:-1:-1;;;3457:2:1;3442:18;;;;3429:32;;3011:456::o;3472:248::-;3540:6;3548;3601:2;3589:9;3580:7;3576:23;3572:32;3569:52;;;3617:1;3614;3607:12;3569:52;-1:-1:-1;;3640:23:1;;;3710:2;3695:18;;;3682:32;;-1:-1:-1;3472:248:1:o;3725:184::-;3777:77;3774:1;3767:88;3874:4;3871:1;3864:15;3898:4;3895:1;3888:15;3914:334;3985:2;3979:9;4041:2;4031:13;;-1:-1:-1;;4027:86:1;4015:99;;4144:18;4129:34;;4165:22;;;4126:62;4123:88;;;4191:18;;:::i;:::-;4227:2;4220:22;3914:334;;-1:-1:-1;3914:334:1:o;4253:183::-;4313:4;4346:18;4338:6;4335:30;4332:56;;;4368:18;;:::i;:::-;-1:-1:-1;4413:1:1;4409:14;4425:4;4405:25;;4253:183::o;4441:737::-;4495:5;4548:3;4541:4;4533:6;4529:17;4525:27;4515:55;;4566:1;4563;4556:12;4515:55;4602:6;4589:20;4628:4;4652:60;4668:43;4708:2;4668:43;:::i;:::-;4652:60;:::i;:::-;4746:15;;;4832:1;4828:10;;;;4816:23;;4812:32;;;4777:12;;;;4856:15;;;4853:35;;;4884:1;4881;4874:12;4853:35;4920:2;4912:6;4908:15;4932:217;4948:6;4943:3;4940:15;4932:217;;;5028:3;5015:17;5045:31;5070:5;5045:31;:::i;:::-;5089:18;;5127:12;;;;4965;;4932:217;;;-1:-1:-1;5167:5:1;4441:737;-1:-1:-1;;;;;;4441:737:1:o;5183:662::-;5237:5;5290:3;5283:4;5275:6;5271:17;5267:27;5257:55;;5308:1;5305;5298:12;5257:55;5344:6;5331:20;5370:4;5394:60;5410:43;5450:2;5410:43;:::i;5394:60::-;5488:15;;;5574:1;5570:10;;;;5558:23;;5554:32;;;5519:12;;;;5598:15;;;5595:35;;;5626:1;5623;5616:12;5595:35;5662:2;5654:6;5650:15;5674:142;5690:6;5685:3;5682:15;5674:142;;;5756:17;;5744:30;;5794:12;;;;5707;;5674:142;;5850:595;5968:6;5976;6029:2;6017:9;6008:7;6004:23;6000:32;5997:52;;;6045:1;6042;6035:12;5997:52;6085:9;6072:23;6114:18;6155:2;6147:6;6144:14;6141:34;;;6171:1;6168;6161:12;6141:34;6194:61;6247:7;6238:6;6227:9;6223:22;6194:61;:::i;:::-;6184:71;;6308:2;6297:9;6293:18;6280:32;6264:48;;6337:2;6327:8;6324:16;6321:36;;;6353:1;6350;6343:12;6321:36;;6376:63;6431:7;6420:8;6409:9;6405:24;6376:63;:::i;:::-;6366:73;;;5850:595;;;;;:::o;6450:118::-;6536:5;6529:13;6522:21;6515:5;6512:32;6502:60;;6558:1;6555;6548:12;6573:647;6647:6;6655;6663;6671;6724:3;6712:9;6703:7;6699:23;6695:33;6692:53;;;6741:1;6738;6731:12;6692:53;6780:9;6767:23;6799:28;6821:5;6799:28;:::i;:::-;6846:5;-1:-1:-1;6903:2:1;6888:18;;6875:32;6916:30;6875:32;6916:30;:::i;:::-;6965:7;-1:-1:-1;7024:2:1;7009:18;;6996:32;7037:30;6996:32;7037:30;:::i;:::-;7086:7;-1:-1:-1;7145:2:1;7130:18;;7117:32;7158:30;7117:32;7158:30;:::i;:::-;6573:647;;;;-1:-1:-1;6573:647:1;;-1:-1:-1;;6573:647:1:o;7414:159::-;7481:20;;7541:6;7530:18;;7520:29;;7510:57;;7563:1;7560;7553:12;7510:57;7414:159;;;:::o;7578:328::-;7652:6;7660;7668;7721:2;7709:9;7700:7;7696:23;7692:32;7689:52;;;7737:1;7734;7727:12;7689:52;7760:28;7778:9;7760:28;:::i;:::-;7750:38;;7807:37;7840:2;7829:9;7825:18;7807:37;:::i;:::-;7797:47;;7863:37;7896:2;7885:9;7881:18;7863:37;:::i;:::-;7853:47;;7578:328;;;;;:::o;7911:247::-;7970:6;8023:2;8011:9;8002:7;7998:23;7994:32;7991:52;;;8039:1;8036;8029:12;7991:52;8078:9;8065:23;8097:31;8122:5;8097:31;:::i;8163:454::-;8258:6;8266;8274;8282;8290;8343:3;8331:9;8322:7;8318:23;8314:33;8311:53;;;8360:1;8357;8350:12;8311:53;-1:-1:-1;;8383:23:1;;;8453:2;8438:18;;8425:32;;-1:-1:-1;8504:2:1;8489:18;;8476:32;;8555:2;8540:18;;8527:32;;-1:-1:-1;8606:3:1;8591:19;8578:33;;-1:-1:-1;8163:454:1;-1:-1:-1;8163:454:1:o;8622:382::-;8687:6;8695;8748:2;8736:9;8727:7;8723:23;8719:32;8716:52;;;8764:1;8761;8754:12;8716:52;8803:9;8790:23;8822:31;8847:5;8822:31;:::i;:::-;8872:5;-1:-1:-1;8929:2:1;8914:18;;8901:32;8942:30;8901:32;8942:30;:::i;:::-;8991:7;8981:17;;;8622:382;;;;;:::o;9009:256::-;9075:6;9083;9136:2;9124:9;9115:7;9111:23;9107:32;9104:52;;;9152:1;9149;9142:12;9104:52;9175:28;9193:9;9175:28;:::i;:::-;9165:38;;9222:37;9255:2;9244:9;9240:18;9222:37;:::i;:::-;9212:47;;9009:256;;;;;:::o;9270:241::-;9326:6;9379:2;9367:9;9358:7;9354:23;9350:32;9347:52;;;9395:1;9392;9385:12;9347:52;9434:9;9421:23;9453:28;9475:5;9453:28;:::i;9516:404::-;9600:6;9608;9661:2;9649:9;9640:7;9636:23;9632:32;9629:52;;;9677:1;9674;9667:12;9629:52;9716:9;9703:23;9735:31;9760:5;9735:31;:::i;:::-;9785:5;-1:-1:-1;9842:2:1;9827:18;;9814:32;9855:33;9814:32;9855:33;:::i;10318:821::-;10470:6;10478;10486;10539:2;10527:9;10518:7;10514:23;10510:32;10507:52;;;10555:1;10552;10545:12;10507:52;10595:9;10582:23;10624:18;10665:2;10657:6;10654:14;10651:34;;;10681:1;10678;10671:12;10651:34;10704:61;10757:7;10748:6;10737:9;10733:22;10704:61;:::i;:::-;10694:71;;10818:2;10807:9;10803:18;10790:32;10774:48;;10847:2;10837:8;10834:16;10831:36;;;10863:1;10860;10853:12;10831:36;10886:63;10941:7;10930:8;10919:9;10915:24;10886:63;:::i;:::-;10876:73;;11002:2;10991:9;10987:18;10974:32;10958:48;;11031:2;11021:8;11018:16;11015:36;;;11047:1;11044;11037:12;11015:36;;11070:63;11125:7;11114:8;11103:9;11099:24;11070:63;:::i;:::-;11060:73;;;10318:821;;;;;:::o;12190:184::-;12242:77;12239:1;12232:88;12339:4;12336:1;12329:15;12363:4;12360:1;12353:15;12379:482;12468:1;12511:5;12468:1;12525:330;12546:7;12536:8;12533:21;12525:330;;;12665:4;-1:-1:-1;;12593:77:1;12587:4;12584:87;12581:113;;;12674:18;;:::i;:::-;12724:7;12714:8;12710:22;12707:55;;;12744:16;;;;12707:55;12823:22;;;;12783:15;;;;12525:330;;;12529:3;12379:482;;;;;:::o;12866:866::-;12915:5;12945:8;12935:80;;-1:-1:-1;12986:1:1;13000:5;;12935:80;13034:4;13024:76;;-1:-1:-1;13071:1:1;13085:5;;13024:76;13116:4;13134:1;13129:59;;;;13202:1;13197:130;;;;13109:218;;13129:59;13159:1;13150:10;;13173:5;;;13197:130;13234:3;13224:8;13221:17;13218:43;;;13241:18;;:::i;:::-;-1:-1:-1;;13297:1:1;13283:16;;13312:5;;13109:218;;13411:2;13401:8;13398:16;13392:3;13386:4;13383:13;13379:36;13373:2;13363:8;13360:16;13355:2;13349:4;13346:12;13342:35;13339:77;13336:159;;;-1:-1:-1;13448:19:1;;;13480:5;;13336:159;13527:34;13552:8;13546:4;13527:34;:::i;:::-;13657:6;-1:-1:-1;;13585:79:1;13576:7;13573:92;13570:118;;;13668:18;;:::i;:::-;13706:20;;12866:866;-1:-1:-1;;;12866:866:1:o;13737:140::-;13795:5;13824:47;13865:4;13855:8;13851:19;13845:4;13824:47;:::i;13882:274::-;13922:1;13948;13938:189;;13983:77;13980:1;13973:88;14084:4;14081:1;14074:15;14112:4;14109:1;14102:15;13938:189;-1:-1:-1;14141:9:1;;13882:274::o;14161:125::-;14201:4;14229:1;14226;14223:8;14220:34;;;14234:18;;:::i;:::-;-1:-1:-1;14271:9:1;;14161:125::o;14291:228::-;14331:7;14457:1;-1:-1:-1;;14385:74:1;14382:1;14379:81;14374:1;14367:9;14360:17;14356:105;14353:131;;;14464:18;;:::i;:::-;-1:-1:-1;14504:9:1;;14291:228::o;15293:184::-;15345:77;15342:1;15335:88;15442:4;15439:1;15432:15;15466:4;15463:1;15456:15;15482:175;15519:3;15563:4;15556:5;15552:16;15592:4;15583:7;15580:17;15577:43;;;15600:18;;:::i;:::-;15649:1;15636:15;;15482:175;-1:-1:-1;;15482:175:1:o;16450:128::-;16490:3;16521:1;16517:6;16514:1;16511:13;16508:39;;;16527:18;;:::i;:::-;-1:-1:-1;16563:9:1;;16450:128::o;17437:184::-;17507:6;17560:2;17548:9;17539:7;17535:23;17531:32;17528:52;;;17576:1;17573;17566:12;17528:52;-1:-1:-1;17599:16:1;;17437:184;-1:-1:-1;17437:184:1:o;20175:251::-;20245:6;20298:2;20286:9;20277:7;20273:23;20269:32;20266:52;;;20314:1;20311;20304:12;20266:52;20346:9;20340:16;20365:31;20390:5;20365:31;:::i;20763:224::-;20802:3;20830:6;20863:2;20860:1;20856:10;20893:2;20890:1;20886:10;20924:3;20920:2;20916:12;20911:3;20908:21;20905:47;;;20932:18;;:::i;:::-;20968:13;;20763:224;-1:-1:-1;;;;20763:224:1:o;21349:245::-;21416:6;21469:2;21457:9;21448:7;21444:23;21440:32;21437:52;;;21485:1;21482;21475:12;21437:52;21517:9;21511:16;21536:28;21558:5;21536:28;:::i;24689:1026::-;24951:4;24999:3;24988:9;24984:19;25030:6;25019:9;25012:25;25056:2;25094:6;25089:2;25078:9;25074:18;25067:34;25137:3;25132:2;25121:9;25117:18;25110:31;25161:6;25196;25190:13;25227:6;25219;25212:22;25265:3;25254:9;25250:19;25243:26;;25304:2;25296:6;25292:15;25278:29;;25325:1;25335:218;25349:6;25346:1;25343:13;25335:218;;;25414:13;;-1:-1:-1;;;;;25410:62:1;25398:75;;25528:15;;;;25493:12;;;;25371:1;25364:9;25335:218;;;-1:-1:-1;;;;;;;25609:55:1;;;;25604:2;25589:18;;25582:83;-1:-1:-1;;;25696:3:1;25681:19;25674:35;25570:3;24689:1026;-1:-1:-1;;;24689:1026:1:o
Swarm Source
ipfs://f00da5d637809495ccccff30550346056271e72425d862d84b2862986569abe3
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.