CRC-20
Overview
Max Total Supply
10,000,000 SCALE
Holders
222
Market
Price
$0.00 @ 0.000000 CRO
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,068.227398069343150656 SCALEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
SCALE
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2023-03-15 */ //SPDX-License-Identifier: MIT pragma solidity ^0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } function functionCall( address target, bytes memory data ) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}( data ); return verifyCallResult(success, returndata, errorMessage); } function functionStaticCall( address target, bytes memory data ) internal view returns (bytes memory) { return functionStaticCall( target, data, "Address: low-level static call failed" ); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall( address target, bytes memory data ) internal returns (bytes memory) { return functionDelegateCall( target, data, "Address: low-level delegate call failed" ); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeERC20 { using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn( token, abi.encodeWithSelector(token.transfer.selector, to, value) ); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn( token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value) ); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, value) ); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require( oldAllowance >= value, "SafeERC20: decreased allowance below zero" ); uint256 newAllowance = oldAllowance - value; _callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall( data, "SafeERC20: low-level call failed" ); if (returndata.length > 0) { // Return data is optional require( abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed" ); } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair( address tokenA, address tokenB ) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut( uint256 amountIn, address[] calldata path ) external view returns (uint256[] memory amounts); function getAmountsIn( uint256 amountOut, address[] calldata path ) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract SCALE is ERC20, Ownable { using SafeERC20 for IERC20; using Address for address; uint256 constant MUL_CONSTANT = 10000; uint256 constant TRADING_FEE_LIMIT = 1000; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; bool private swapping; address public marketingWallet; address public maintenanceWallet; uint256 public maxTransactionAmount; uint256 public maxWallet; uint256 public swapTokensAtAmount; bool public swapEnabled = false; bool public tradingActive = false; // 1% = 100, 100% = 10000 uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyMaintenanceFee; uint256 public buyLiquidityFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellMaintenanceFee; uint256 public sellLiquidityFee; uint256 public tokensForMarketing; uint256 public tokensForMaintenance; uint256 public tokensForLiquidity; /******************/ address autoLP_collector = address(0xdead); // exlcude from fees and max transaction amount mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event MarketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event MaintenanceWalletUpdated( address indexed newWallet, address indexed oldWallet ); event OtherTaxWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("SCALE", "SCALE") { address _uniswapV2RouterCA = 0x145677FC4d9b8F19B5D56d1820c48e0443049a30; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( _uniswapV2RouterCA ); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 400; uint256 _buyMaintenanceFee = 400; uint256 _buyLiquidityFee = 200; uint256 _sellMarketingFee = 400; uint256 _sellMaintenanceFee = 400; uint256 _sellLiquidityFee = 200; uint256 totalSupply = 1 * 1e7 * 1e18; // 10 million maxTransactionAmount = (totalSupply * 50) / 10000; // 0.5% maxTransactionAmountTxn maxWallet = (totalSupply * 100) / 10000; // 1% max wallet buyMarketingFee = _buyMarketingFee; buyMaintenanceFee = _buyMaintenanceFee; buyLiquidityFee = _buyLiquidityFee; buyTotalFees = buyMarketingFee + buyMaintenanceFee + buyLiquidityFee; sellMarketingFee = _sellMarketingFee; sellMaintenanceFee = _sellMaintenanceFee; sellLiquidityFee = _sellLiquidityFee; sellTotalFees = sellMarketingFee + sellMaintenanceFee + sellLiquidityFee; marketingWallet = msg.sender; maintenanceWallet = msg.sender; swapTokensAtAmount = 1000 * 1e18; // exclude from paying fees or having max transaction amount excludeFromFees(msg.sender, true); excludeFromFees(address(this), true); excludeFromMaxTransaction(msg.sender, true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(address(0), true); _mint(msg.sender, totalSupply); } receive() external payable {} // Enable Trading function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } // Disable Trading function disableTrading() external onlyOwner { tradingActive = false; swapEnabled = false; } function setMaxTransactionAmount(uint256 newNumInEther) external onlyOwner { maxTransactionAmount = newNumInEther * (10 ** 18); } function setAutoLpCollector(address lpCollector) external onlyOwner { autoLP_collector = lpCollector; } function setMaxWalletAmount(uint256 newNumInEther) external onlyOwner { maxWallet = newNumInEther * (10 ** 18); } function setSwapTokensAtAmount( uint256 newAmountInWei ) external onlyOwner returns (bool) { swapTokensAtAmount = newAmountInWei; return true; } function excludeFromMaxTransaction( address updAds, bool isEx ) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function setBuyFees( uint256 _marketingFee, uint256 _maintenanceFee, uint256 _liquidityFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyMaintenanceFee = _maintenanceFee; buyLiquidityFee = _liquidityFee; buyTotalFees = buyMarketingFee + buyMaintenanceFee + buyLiquidityFee; require(buyTotalFees <= TRADING_FEE_LIMIT, "Total fees exceeds max fee"); } function setSellFees( uint256 _marketingFee, uint256 _maintenanceFee, uint256 _liquidityFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellMaintenanceFee = _maintenanceFee; sellLiquidityFee = _liquidityFee; sellTotalFees = sellMarketingFee + sellMaintenanceFee + sellLiquidityFee; require(sellTotalFees <= TRADING_FEE_LIMIT, "Total fees exceeds max fee"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair( address pair, bool value ) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function setMarketingWallet(address newMarketingWallet) external onlyOwner { emit MarketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; excludeFromFees(marketingWallet, true); } function setMaintenanceWallet( address newMaintenanceWallet ) external onlyOwner { emit MaintenanceWalletUpdated(newMaintenanceWallet, maintenanceWallet); maintenanceWallet = newMaintenanceWallet; excludeFromFees(maintenanceWallet, true); } function clearStuckBNBBalance(address addr) external onlyOwner { (bool sent, ) = payable(addr).call{value: (address(this).balance)}(""); require(sent); } function setOwner(address _newOwner) external onlyOwner { transferOwnership(_newOwner); excludeFromFees(_newOwner, true); } function clearStuckTokenBalance( address addr, address tokenAddress ) external onlyOwner { uint256 _bal = IERC20(tokenAddress).balanceOf(address(this)); IERC20(tokenAddress).safeTransfer(addr, _bal); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else { if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] && sellTotalFees > 0 && buyTotalFees > 0 ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; uint256 marketingFee = 0; uint256 liquidityFee = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = (amount * sellTotalFees) / MUL_CONSTANT; marketingFee = (fees * sellMarketingFee) / sellTotalFees; liquidityFee = (fees * sellLiquidityFee) / sellTotalFees; tokensForMarketing += marketingFee; tokensForLiquidity += liquidityFee; unchecked { tokensForMaintenance += (fees - marketingFee - liquidityFee); } } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = (amount * buyTotalFees) / MUL_CONSTANT; marketingFee = (fees * buyMarketingFee) / buyTotalFees; liquidityFee = (fees * buyLiquidityFee) / buyTotalFees; tokensForMarketing += marketingFee; tokensForLiquidity += liquidityFee; unchecked { tokensForMaintenance += (fees - marketingFee - liquidityFee); } } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable autoLP_collector, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForMaintenance; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = 0; unchecked { amountToSwapForETH = contractBalance - liquidityTokens; } uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = 0; unchecked { ethBalance = address(this).balance - initialETHBalance; } uint256 ethForMarketing = (ethBalance * tokensForMarketing) / totalTokensToSwap; uint256 ethForMaintenance = (ethBalance * tokensForMaintenance) / totalTokensToSwap; uint256 ethForLiquidity = 0; unchecked { ethForLiquidity = ethBalance - ethForMarketing - ethForMaintenance; } tokensForLiquidity = 0; tokensForMarketing = 0; tokensForMaintenance = 0; (bool sentForMarketing, ) = address(marketingWallet).call{ value: ethForMarketing }(""); (bool sentForMaintenance, ) = address(maintenanceWallet).call{ value: ethForMaintenance }(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } require(sentForMarketing && sentForMaintenance, "send failed"); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MaintenanceWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"OtherTaxWalletUpdated","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMaintenanceFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"clearStuckBNBBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"clearStuckTokenBalance","outputs":[],"stateMutability":"nonpayable","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":"disableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maintenanceWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMaintenanceFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"lpCollector","type":"address"}],"name":"setAutoLpCollector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_maintenanceFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMaintenanceWallet","type":"address"}],"name":"setMaintenanceWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNumInEther","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNumInEther","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_maintenanceFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmountInWei","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMaintenance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052600c805461ffff19169055601880546001600160a01b03191661dead1790553480156200003057600080fd5b506040805180820182526005808252645343414c4560d81b60208084018290528451808601909552918452908301529060036200006e8382620006fa565b5060046200007d8282620006fa565b5050506200009a620000946200039e60201b60201c565b620003a2565b73145677fc4d9b8f19b5d56d1820c48e0443049a3080620000bd816001620003f4565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000108573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012e9190620007c6565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200017c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a29190620007c6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620001f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002169190620007c6565b600680546001600160a01b0319166001600160a01b0392909216918217905562000242906001620003f4565b6006546200025b906001600160a01b031660016200046e565b6101908060c88180826a084595161401484a000000612710620002808260326200080e565b6200028c91906200082e565b6009556127106200029f8260646200080e565b620002ab91906200082e565b600a55600e879055600f869055601085905584620002ca878962000851565b620002d6919062000851565b600d5560128490556013839055601482905581620002f5848662000851565b62000301919062000851565b60115560078054336001600160a01b031991821681179092556008805490911682179055683635c9adc5dea00000600b556200033f906001620004c2565b6200034c306001620004c2565b62000359336001620003f4565b62000366306001620003f4565b6200037561dead6001620003f4565b6200038360006001620003f4565b6200038f33826200056c565b50505050505050505062000867565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620004435760405162461bcd60e51b81526020600482018190526024820152600080516020620032f983398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6001600160a01b0382166000818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031633146200050d5760405162461bcd60e51b81526020600482018190526024820152600080516020620032f983398151915260448201526064016200043a565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005c45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200043a565b8060026000828254620005d8919062000851565b90915550506001600160a01b038216600090815260208190526040812080548392906200060790849062000851565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200068157607f821691505b602082108103620006a257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200065157600081815260208120601f850160051c81016020861015620006d15750805b601f850160051c820191505b81811015620006f257828155600101620006dd565b505050505050565b81516001600160401b0381111562000716576200071662000656565b6200072e816200072784546200066c565b84620006a8565b602080601f8311600181146200076657600084156200074d5750858301515b600019600386901b1c1916600185901b178555620006f2565b600085815260208120601f198616915b82811015620007975788860151825594840194600190910190840162000776565b5085821015620007b65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620007d957600080fd5b81516001600160a01b0381168114620007f157600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620008285762000828620007f8565b92915050565b6000826200084c57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620008285762000828620007f8565b608051612a53620008a660003960008181610478015281816121f9015281816122b2015281816122ee0152818161236801526123d00152612a536000f3fe6080604052600436106103395760003560e01c806375f0a874116101ab578063afa4f3b2116100f7578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610997578063f403d599146109b7578063f6374342146109cd578063f8b45b05146109e357600080fd5b8063e2f4560514610955578063e6fb2eb01461096b578063f11a24d31461098157600080fd5b8063c0246668116100d1578063c0246668146108c3578063c8c8ebe4146108e3578063d85ba063146108f9578063dd62ed3e1461090f57600080fd5b8063afa4f3b214610854578063b62496f514610874578063bbc0c742146108a457600080fd5b80639485b9d811610164578063a28d23dc1161013e578063a28d23dc146107d4578063a457c2d7146107f4578063a67096e214610814578063a9059cbb1461083457600080fd5b80639485b9d81461077f57806395d89b411461079f5780639a7a23d6146107b457600080fd5b806375f0a874146106e05780637bce5a04146107005780638a8c523c146107165780638da5cb5b1461072b5780639213691314610749578063924de9b71461075f57600080fd5b806323b872dd116102855780635d098b38116102235780637072152c116101fd5780637072152c1461065f57806370a0823114610675578063715018a6146106ab5780637571336a146106c057600080fd5b80635d098b381461060f5780636a486a8e1461062f5780636ddd17131461064557600080fd5b806334a4a65f1161025f57806334a4a65f14610576578063395093511461059657806349bd5a5e146105b65780634fbee193146105d657600080fd5b806323b872dd1461051a57806327a14fc21461053a578063313ce5671461055a57600080fd5b806313af4035116102f257806318160ddd116102cc57806318160ddd146104af5780631a8145bb146104ce5780631e293c10146104e45780631f3fed8f1461050457600080fd5b806313af4035146104465780631694505e1461046657806317700f011461049a57600080fd5b8063057c09db1461034557806306fdde0314610382578063095ea7b3146103a45780630d075d9c146103d45780630f683e90146103f657806310d5de531461041657600080fd5b3661034057005b600080fd5b34801561035157600080fd5b50600854610365906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038e57600080fd5b506103976109f9565b60405161037991906125e4565b3480156103b057600080fd5b506103c46103bf36600461262c565b610a8b565b6040519015158152602001610379565b3480156103e057600080fd5b506103f46103ef366004612658565b610aa2565b005b34801561040257600080fd5b506103f4610411366004612658565b610b54565b34801561042257600080fd5b506103c4610431366004612684565b601a6020526000908152604090205460ff1681565b34801561045257600080fd5b506103f4610461366004612684565b610bf8565b34801561047257600080fd5b506103657f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a657600080fd5b506103f4610c39565b3480156104bb57600080fd5b506002545b604051908152602001610379565b3480156104da57600080fd5b506104c060175481565b3480156104f057600080fd5b506103f46104ff3660046126a1565b610c70565b34801561051057600080fd5b506104c060155481565b34801561052657600080fd5b506103c46105353660046126ba565b610cb2565b34801561054657600080fd5b506103f46105553660046126a1565b610d5e565b34801561056657600080fd5b5060405160128152602001610379565b34801561058257600080fd5b506103f4610591366004612684565b610da0565b3480156105a257600080fd5b506103c46105b136600461262c565b610dec565b3480156105c257600080fd5b50600654610365906001600160a01b031681565b3480156105e257600080fd5b506103c46105f1366004612684565b6001600160a01b031660009081526019602052604090205460ff1690565b34801561061b57600080fd5b506103f461062a366004612684565b610e28565b34801561063b57600080fd5b506104c060115481565b34801561065157600080fd5b50600c546103c49060ff1681565b34801561066b57600080fd5b506104c060165481565b34801561068157600080fd5b506104c0610690366004612684565b6001600160a01b031660009081526020819052604090205490565b3480156106b757600080fd5b506103f4610eb6565b3480156106cc57600080fd5b506103f46106db366004612709565b610eec565b3480156106ec57600080fd5b50600754610365906001600160a01b031681565b34801561070c57600080fd5b506104c0600e5481565b34801561072257600080fd5b506103f4610f41565b34801561073757600080fd5b506005546001600160a01b0316610365565b34801561075557600080fd5b506104c060125481565b34801561076b57600080fd5b506103f461077a366004612742565b610f7c565b34801561078b57600080fd5b506103f461079a366004612684565b610fb9565b3480156107ab57600080fd5b50610397611047565b3480156107c057600080fd5b506103f46107cf366004612709565b611056565b3480156107e057600080fd5b506103f46107ef366004612684565b61110e565b34801561080057600080fd5b506103c461080f36600461262c565b61119c565b34801561082057600080fd5b506103f461082f36600461275f565b611235565b34801561084057600080fd5b506103c461084f36600461262c565b6112e0565b34801561086057600080fd5b506103c461086f3660046126a1565b6112ed565b34801561088057600080fd5b506103c461088f366004612684565b601b6020526000908152604090205460ff1681565b3480156108b057600080fd5b50600c546103c490610100900460ff1681565b3480156108cf57600080fd5b506103f46108de366004612709565b611323565b3480156108ef57600080fd5b506104c060095481565b34801561090557600080fd5b506104c0600d5481565b34801561091b57600080fd5b506104c061092a36600461275f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561096157600080fd5b506104c0600b5481565b34801561097757600080fd5b506104c060135481565b34801561098d57600080fd5b506104c060105481565b3480156109a357600080fd5b506103f46109b2366004612684565b6113ac565b3480156109c357600080fd5b506104c0600f5481565b3480156109d957600080fd5b506104c060145481565b3480156109ef57600080fd5b506104c0600a5481565b606060038054610a089061278d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a349061278d565b8015610a815780601f10610a5657610100808354040283529160200191610a81565b820191906000526020600020905b815481529060010190602001808311610a6457829003601f168201915b5050505050905090565b6000610a98338484611444565b5060015b92915050565b6005546001600160a01b03163314610ad55760405162461bcd60e51b8152600401610acc906127c7565b60405180910390fd5b600e839055600f829055601081905580610aef8385612812565b610af99190612812565b600d8190556103e81015610b4f5760405162461bcd60e51b815260206004820152601a60248201527f546f74616c20666565732065786365656473206d6178206665650000000000006044820152606401610acc565b505050565b6005546001600160a01b03163314610b7e5760405162461bcd60e51b8152600401610acc906127c7565b60128390556013829055601481905580610b988385612812565b610ba29190612812565b60118190556103e81015610b4f5760405162461bcd60e51b815260206004820152601a60248201527f546f74616c20666565732065786365656473206d6178206665650000000000006044820152606401610acc565b6005546001600160a01b03163314610c225760405162461bcd60e51b8152600401610acc906127c7565b610c2b816113ac565b610c36816001611323565b50565b6005546001600160a01b03163314610c635760405162461bcd60e51b8152600401610acc906127c7565b600c805461ffff19169055565b6005546001600160a01b03163314610c9a5760405162461bcd60e51b8152600401610acc906127c7565b610cac81670de0b6b3a7640000612825565b60095550565b6000610cbf848484611568565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610d445760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610acc565b610d518533858403611444565b60019150505b9392505050565b6005546001600160a01b03163314610d885760405162461bcd60e51b8152600401610acc906127c7565b610d9a81670de0b6b3a7640000612825565b600a5550565b6005546001600160a01b03163314610dca5760405162461bcd60e51b8152600401610acc906127c7565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a98918590610e23908690612812565b611444565b6005546001600160a01b03163314610e525760405162461bcd60e51b8152600401610acc906127c7565b6007546040516001600160a01b03918216918316907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a3600780546001600160a01b0319166001600160a01b038316908117909155610c36906001611323565b6005546001600160a01b03163314610ee05760405162461bcd60e51b8152600401610acc906127c7565b610eea6000611c4a565b565b6005546001600160a01b03163314610f165760405162461bcd60e51b8152600401610acc906127c7565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f6b5760405162461bcd60e51b8152600401610acc906127c7565b600c805461ffff1916610101179055565b6005546001600160a01b03163314610fa65760405162461bcd60e51b8152600401610acc906127c7565b600c805460ff1916911515919091179055565b6005546001600160a01b03163314610fe35760405162461bcd60e51b8152600401610acc906127c7565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114611030576040519150601f19603f3d011682016040523d82523d6000602084013e611035565b606091505b505090508061104357600080fd5b5050565b606060048054610a089061278d565b6005546001600160a01b031633146110805760405162461bcd60e51b8152600401610acc906127c7565b6006546001600160a01b03908116908316036111045760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610acc565b6110438282611c9c565b6005546001600160a01b031633146111385760405162461bcd60e51b8152600401610acc906127c7565b6008546040516001600160a01b03918216918316907f2d44b5390a882ce82b45cc7b7481a8e213f611b5eda9ae36ad1e40de1450ece590600090a3600880546001600160a01b0319166001600160a01b038316908117909155610c36906001611323565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561121e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610acc565b61122b3385858403611444565b5060019392505050565b6005546001600160a01b0316331461125f5760405162461bcd60e51b8152600401610acc906127c7565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156112a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ca919061283c565b9050610b4f6001600160a01b0383168483611cf0565b6000610a98338484611568565b6005546000906001600160a01b0316331461131a5760405162461bcd60e51b8152600401610acc906127c7565b50600b55600190565b6005546001600160a01b0316331461134d5760405162461bcd60e51b8152600401610acc906127c7565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113d65760405162461bcd60e51b8152600401610acc906127c7565b6001600160a01b03811661143b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610acc565b610c3681611c4a565b6001600160a01b0383166114a65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610acc565b6001600160a01b0382166115075760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610acc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661158e5760405162461bcd60e51b8152600401610acc90612855565b6001600160a01b0382166115b45760405162461bcd60e51b8152600401610acc9061289a565b806000036115c857610b4f83836000611d42565b6005546001600160a01b038481169116148015906115f457506005546001600160a01b03838116911614155b801561160857506001600160a01b03821615155b801561161f57506001600160a01b03821661dead14155b80156116355750600654600160a01b900460ff16155b1561193357600c54610100900460ff166116cd576001600160a01b03831660009081526019602052604090205460ff168061168857506001600160a01b03821660009081526019602052604090205460ff165b6116cd5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610acc565b6001600160a01b0383166000908152601b602052604090205460ff16801561170e57506001600160a01b0382166000908152601a602052604090205460ff16155b156117f2576009548111156117835760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610acc565b600a546001600160a01b0383166000908152602081905260409020546117a99083612812565b11156117ed5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610acc565b611933565b6001600160a01b0382166000908152601b602052604090205460ff16801561183357506001600160a01b0383166000908152601a602052604090205460ff16155b156118a9576009548111156117ed5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610acc565b6001600160a01b0382166000908152601a602052604090205460ff1661193357600a546001600160a01b0383166000908152602081905260409020546118ef9083612812565b11156119335760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610acc565b30600090815260208190526040902054600b54811080159081906119595750600c5460ff165b801561196f5750600654600160a01b900460ff16155b801561199457506001600160a01b0385166000908152601b602052604090205460ff16155b80156119b957506001600160a01b03851660009081526019602052604090205460ff16155b80156119de57506001600160a01b03841660009081526019602052604090205460ff16155b80156119ec57506000601154115b80156119fa57506000600d54115b15611a28576006805460ff60a01b1916600160a01b179055611a1a611e97565b6006805460ff60a01b191690555b6006546001600160a01b03861660009081526019602052604090205460ff600160a01b909204821615911680611a7657506001600160a01b03851660009081526019602052604090205460ff165b15611a7f575060005b60008060008315611c34576001600160a01b0388166000908152601b602052604090205460ff168015611ab457506000601154115b15611b525761271060115488611aca9190612825565b611ad491906128dd565b925060115460125484611ae79190612825565b611af191906128dd565b915060115460145484611b049190612825565b611b0e91906128dd565b90508160156000828254611b229190612812565b925050819055508060176000828254611b3b9190612812565b909155505060168054838503839003019055611c16565b6001600160a01b0389166000908152601b602052604090205460ff168015611b7c57506000600d54115b15611c1657612710600d5488611b929190612825565b611b9c91906128dd565b9250600d54600e5484611baf9190612825565b611bb991906128dd565b9150600d5460105484611bcc9190612825565b611bd691906128dd565b90508160156000828254611bea9190612812565b925050819055508060176000828254611c039190612812565b9091555050601680548385038390030190555b8215611c2757611c27893085611d42565b611c3183886128ff565b96505b611c3f898989611d42565b505050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610b4f9084906120d0565b6001600160a01b038316611d685760405162461bcd60e51b8152600401610acc90612855565b6001600160a01b038216611d8e5760405162461bcd60e51b8152600401610acc9061289a565b6001600160a01b03831660009081526020819052604090205481811015611e065760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610acc565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611e3d908490612812565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e8991815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601654601554601754611ebe9190612812565b611ec89190612812565b9050811580611ed5575080155b15611ede575050565b600060028260175485611ef19190612825565b611efb91906128dd565b611f0591906128dd565b905080830347611f14826121a2565b6000814703905060008560155483611f2c9190612825565b611f3691906128dd565b905060008660165484611f499190612825565b611f5391906128dd565b6000601781905560158190556016819055600754604051929350848603849003926001600160a01b039091169085908381818185875af1925050503d8060008114611fba576040519150601f19603f3d011682016040523d82523d6000602084013e611fbf565b606091505b50506008546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114612013576040519150601f19603f3d011682016040523d82523d6000602084013e612018565b606091505b5050905060008911801561202c5750600083115b1561207f5761203b8984612362565b601754604080518a81526020810186905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b8180156120895750805b6120c35760405162461bcd60e51b815260206004820152600b60248201526a1cd95b990819985a5b195960aa1b6044820152606401610acc565b5050505050505050505050565b6000612125826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166124489092919063ffffffff16565b805190915015610b4f57808060200190518101906121439190612912565b610b4f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610acc565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121d7576121d761292f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122799190612945565b8160018151811061228c5761228c61292f565b60200260200101906001600160a01b031690816001600160a01b0316815250506122d7307f000000000000000000000000000000000000000000000000000000000000000084611444565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061232c908590600090869030904290600401612962565b600060405180830381600087803b15801561234657600080fd5b505af115801561235a573d6000803e3d6000fd5b505050505050565b61238d307f000000000000000000000000000000000000000000000000000000000000000084611444565b60185460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990839060c40160606040518083038185885af115801561241c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061244191906129d3565b5050505050565b6060612457848460008561245f565b949350505050565b6060824710156124c05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610acc565b843b61250e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610acc565b600080866001600160a01b0316858760405161252a9190612a01565b60006040518083038185875af1925050503d8060008114612567576040519150601f19603f3d011682016040523d82523d6000602084013e61256c565b606091505b509150915061257c828286612587565b979650505050505050565b60608315612596575081610d57565b8251156125a65782518084602001fd5b8160405162461bcd60e51b8152600401610acc91906125e4565b60005b838110156125db5781810151838201526020016125c3565b50506000910152565b60208152600082518060208401526126038160408501602087016125c0565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610c3657600080fd5b6000806040838503121561263f57600080fd5b823561264a81612617565b946020939093013593505050565b60008060006060848603121561266d57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561269657600080fd5b8135610d5781612617565b6000602082840312156126b357600080fd5b5035919050565b6000806000606084860312156126cf57600080fd5b83356126da81612617565b925060208401356126ea81612617565b929592945050506040919091013590565b8015158114610c3657600080fd5b6000806040838503121561271c57600080fd5b823561272781612617565b91506020830135612737816126fb565b809150509250929050565b60006020828403121561275457600080fd5b8135610d57816126fb565b6000806040838503121561277257600080fd5b823561277d81612617565b9150602083013561273781612617565b600181811c908216806127a157607f821691505b6020821081036127c157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a9c57610a9c6127fc565b8082028115828204841417610a9c57610a9c6127fc565b60006020828403121561284e57600080fd5b5051919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000826128fa57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610a9c57610a9c6127fc565b60006020828403121561292457600080fd5b8151610d57816126fb565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561295757600080fd5b8151610d5781612617565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129b25784516001600160a01b03168352938301939183019160010161298d565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156129e857600080fd5b8351925060208401519150604084015190509250925092565b60008251612a138184602087016125c0565b919091019291505056fea26469706673582212204cb3b5f8bac436e9ab789fb0133426d83e1e8045237958c0cb32522ca47f1f0864736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106103395760003560e01c806375f0a874116101ab578063afa4f3b2116100f7578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610997578063f403d599146109b7578063f6374342146109cd578063f8b45b05146109e357600080fd5b8063e2f4560514610955578063e6fb2eb01461096b578063f11a24d31461098157600080fd5b8063c0246668116100d1578063c0246668146108c3578063c8c8ebe4146108e3578063d85ba063146108f9578063dd62ed3e1461090f57600080fd5b8063afa4f3b214610854578063b62496f514610874578063bbc0c742146108a457600080fd5b80639485b9d811610164578063a28d23dc1161013e578063a28d23dc146107d4578063a457c2d7146107f4578063a67096e214610814578063a9059cbb1461083457600080fd5b80639485b9d81461077f57806395d89b411461079f5780639a7a23d6146107b457600080fd5b806375f0a874146106e05780637bce5a04146107005780638a8c523c146107165780638da5cb5b1461072b5780639213691314610749578063924de9b71461075f57600080fd5b806323b872dd116102855780635d098b38116102235780637072152c116101fd5780637072152c1461065f57806370a0823114610675578063715018a6146106ab5780637571336a146106c057600080fd5b80635d098b381461060f5780636a486a8e1461062f5780636ddd17131461064557600080fd5b806334a4a65f1161025f57806334a4a65f14610576578063395093511461059657806349bd5a5e146105b65780634fbee193146105d657600080fd5b806323b872dd1461051a57806327a14fc21461053a578063313ce5671461055a57600080fd5b806313af4035116102f257806318160ddd116102cc57806318160ddd146104af5780631a8145bb146104ce5780631e293c10146104e45780631f3fed8f1461050457600080fd5b806313af4035146104465780631694505e1461046657806317700f011461049a57600080fd5b8063057c09db1461034557806306fdde0314610382578063095ea7b3146103a45780630d075d9c146103d45780630f683e90146103f657806310d5de531461041657600080fd5b3661034057005b600080fd5b34801561035157600080fd5b50600854610365906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038e57600080fd5b506103976109f9565b60405161037991906125e4565b3480156103b057600080fd5b506103c46103bf36600461262c565b610a8b565b6040519015158152602001610379565b3480156103e057600080fd5b506103f46103ef366004612658565b610aa2565b005b34801561040257600080fd5b506103f4610411366004612658565b610b54565b34801561042257600080fd5b506103c4610431366004612684565b601a6020526000908152604090205460ff1681565b34801561045257600080fd5b506103f4610461366004612684565b610bf8565b34801561047257600080fd5b506103657f000000000000000000000000145677fc4d9b8f19b5d56d1820c48e0443049a3081565b3480156104a657600080fd5b506103f4610c39565b3480156104bb57600080fd5b506002545b604051908152602001610379565b3480156104da57600080fd5b506104c060175481565b3480156104f057600080fd5b506103f46104ff3660046126a1565b610c70565b34801561051057600080fd5b506104c060155481565b34801561052657600080fd5b506103c46105353660046126ba565b610cb2565b34801561054657600080fd5b506103f46105553660046126a1565b610d5e565b34801561056657600080fd5b5060405160128152602001610379565b34801561058257600080fd5b506103f4610591366004612684565b610da0565b3480156105a257600080fd5b506103c46105b136600461262c565b610dec565b3480156105c257600080fd5b50600654610365906001600160a01b031681565b3480156105e257600080fd5b506103c46105f1366004612684565b6001600160a01b031660009081526019602052604090205460ff1690565b34801561061b57600080fd5b506103f461062a366004612684565b610e28565b34801561063b57600080fd5b506104c060115481565b34801561065157600080fd5b50600c546103c49060ff1681565b34801561066b57600080fd5b506104c060165481565b34801561068157600080fd5b506104c0610690366004612684565b6001600160a01b031660009081526020819052604090205490565b3480156106b757600080fd5b506103f4610eb6565b3480156106cc57600080fd5b506103f46106db366004612709565b610eec565b3480156106ec57600080fd5b50600754610365906001600160a01b031681565b34801561070c57600080fd5b506104c0600e5481565b34801561072257600080fd5b506103f4610f41565b34801561073757600080fd5b506005546001600160a01b0316610365565b34801561075557600080fd5b506104c060125481565b34801561076b57600080fd5b506103f461077a366004612742565b610f7c565b34801561078b57600080fd5b506103f461079a366004612684565b610fb9565b3480156107ab57600080fd5b50610397611047565b3480156107c057600080fd5b506103f46107cf366004612709565b611056565b3480156107e057600080fd5b506103f46107ef366004612684565b61110e565b34801561080057600080fd5b506103c461080f36600461262c565b61119c565b34801561082057600080fd5b506103f461082f36600461275f565b611235565b34801561084057600080fd5b506103c461084f36600461262c565b6112e0565b34801561086057600080fd5b506103c461086f3660046126a1565b6112ed565b34801561088057600080fd5b506103c461088f366004612684565b601b6020526000908152604090205460ff1681565b3480156108b057600080fd5b50600c546103c490610100900460ff1681565b3480156108cf57600080fd5b506103f46108de366004612709565b611323565b3480156108ef57600080fd5b506104c060095481565b34801561090557600080fd5b506104c0600d5481565b34801561091b57600080fd5b506104c061092a36600461275f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561096157600080fd5b506104c0600b5481565b34801561097757600080fd5b506104c060135481565b34801561098d57600080fd5b506104c060105481565b3480156109a357600080fd5b506103f46109b2366004612684565b6113ac565b3480156109c357600080fd5b506104c0600f5481565b3480156109d957600080fd5b506104c060145481565b3480156109ef57600080fd5b506104c0600a5481565b606060038054610a089061278d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a349061278d565b8015610a815780601f10610a5657610100808354040283529160200191610a81565b820191906000526020600020905b815481529060010190602001808311610a6457829003601f168201915b5050505050905090565b6000610a98338484611444565b5060015b92915050565b6005546001600160a01b03163314610ad55760405162461bcd60e51b8152600401610acc906127c7565b60405180910390fd5b600e839055600f829055601081905580610aef8385612812565b610af99190612812565b600d8190556103e81015610b4f5760405162461bcd60e51b815260206004820152601a60248201527f546f74616c20666565732065786365656473206d6178206665650000000000006044820152606401610acc565b505050565b6005546001600160a01b03163314610b7e5760405162461bcd60e51b8152600401610acc906127c7565b60128390556013829055601481905580610b988385612812565b610ba29190612812565b60118190556103e81015610b4f5760405162461bcd60e51b815260206004820152601a60248201527f546f74616c20666565732065786365656473206d6178206665650000000000006044820152606401610acc565b6005546001600160a01b03163314610c225760405162461bcd60e51b8152600401610acc906127c7565b610c2b816113ac565b610c36816001611323565b50565b6005546001600160a01b03163314610c635760405162461bcd60e51b8152600401610acc906127c7565b600c805461ffff19169055565b6005546001600160a01b03163314610c9a5760405162461bcd60e51b8152600401610acc906127c7565b610cac81670de0b6b3a7640000612825565b60095550565b6000610cbf848484611568565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610d445760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610acc565b610d518533858403611444565b60019150505b9392505050565b6005546001600160a01b03163314610d885760405162461bcd60e51b8152600401610acc906127c7565b610d9a81670de0b6b3a7640000612825565b600a5550565b6005546001600160a01b03163314610dca5760405162461bcd60e51b8152600401610acc906127c7565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a98918590610e23908690612812565b611444565b6005546001600160a01b03163314610e525760405162461bcd60e51b8152600401610acc906127c7565b6007546040516001600160a01b03918216918316907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a3600780546001600160a01b0319166001600160a01b038316908117909155610c36906001611323565b6005546001600160a01b03163314610ee05760405162461bcd60e51b8152600401610acc906127c7565b610eea6000611c4a565b565b6005546001600160a01b03163314610f165760405162461bcd60e51b8152600401610acc906127c7565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f6b5760405162461bcd60e51b8152600401610acc906127c7565b600c805461ffff1916610101179055565b6005546001600160a01b03163314610fa65760405162461bcd60e51b8152600401610acc906127c7565b600c805460ff1916911515919091179055565b6005546001600160a01b03163314610fe35760405162461bcd60e51b8152600401610acc906127c7565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114611030576040519150601f19603f3d011682016040523d82523d6000602084013e611035565b606091505b505090508061104357600080fd5b5050565b606060048054610a089061278d565b6005546001600160a01b031633146110805760405162461bcd60e51b8152600401610acc906127c7565b6006546001600160a01b03908116908316036111045760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610acc565b6110438282611c9c565b6005546001600160a01b031633146111385760405162461bcd60e51b8152600401610acc906127c7565b6008546040516001600160a01b03918216918316907f2d44b5390a882ce82b45cc7b7481a8e213f611b5eda9ae36ad1e40de1450ece590600090a3600880546001600160a01b0319166001600160a01b038316908117909155610c36906001611323565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561121e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610acc565b61122b3385858403611444565b5060019392505050565b6005546001600160a01b0316331461125f5760405162461bcd60e51b8152600401610acc906127c7565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156112a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ca919061283c565b9050610b4f6001600160a01b0383168483611cf0565b6000610a98338484611568565b6005546000906001600160a01b0316331461131a5760405162461bcd60e51b8152600401610acc906127c7565b50600b55600190565b6005546001600160a01b0316331461134d5760405162461bcd60e51b8152600401610acc906127c7565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113d65760405162461bcd60e51b8152600401610acc906127c7565b6001600160a01b03811661143b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610acc565b610c3681611c4a565b6001600160a01b0383166114a65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610acc565b6001600160a01b0382166115075760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610acc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661158e5760405162461bcd60e51b8152600401610acc90612855565b6001600160a01b0382166115b45760405162461bcd60e51b8152600401610acc9061289a565b806000036115c857610b4f83836000611d42565b6005546001600160a01b038481169116148015906115f457506005546001600160a01b03838116911614155b801561160857506001600160a01b03821615155b801561161f57506001600160a01b03821661dead14155b80156116355750600654600160a01b900460ff16155b1561193357600c54610100900460ff166116cd576001600160a01b03831660009081526019602052604090205460ff168061168857506001600160a01b03821660009081526019602052604090205460ff165b6116cd5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610acc565b6001600160a01b0383166000908152601b602052604090205460ff16801561170e57506001600160a01b0382166000908152601a602052604090205460ff16155b156117f2576009548111156117835760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610acc565b600a546001600160a01b0383166000908152602081905260409020546117a99083612812565b11156117ed5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610acc565b611933565b6001600160a01b0382166000908152601b602052604090205460ff16801561183357506001600160a01b0383166000908152601a602052604090205460ff16155b156118a9576009548111156117ed5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610acc565b6001600160a01b0382166000908152601a602052604090205460ff1661193357600a546001600160a01b0383166000908152602081905260409020546118ef9083612812565b11156119335760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610acc565b30600090815260208190526040902054600b54811080159081906119595750600c5460ff165b801561196f5750600654600160a01b900460ff16155b801561199457506001600160a01b0385166000908152601b602052604090205460ff16155b80156119b957506001600160a01b03851660009081526019602052604090205460ff16155b80156119de57506001600160a01b03841660009081526019602052604090205460ff16155b80156119ec57506000601154115b80156119fa57506000600d54115b15611a28576006805460ff60a01b1916600160a01b179055611a1a611e97565b6006805460ff60a01b191690555b6006546001600160a01b03861660009081526019602052604090205460ff600160a01b909204821615911680611a7657506001600160a01b03851660009081526019602052604090205460ff165b15611a7f575060005b60008060008315611c34576001600160a01b0388166000908152601b602052604090205460ff168015611ab457506000601154115b15611b525761271060115488611aca9190612825565b611ad491906128dd565b925060115460125484611ae79190612825565b611af191906128dd565b915060115460145484611b049190612825565b611b0e91906128dd565b90508160156000828254611b229190612812565b925050819055508060176000828254611b3b9190612812565b909155505060168054838503839003019055611c16565b6001600160a01b0389166000908152601b602052604090205460ff168015611b7c57506000600d54115b15611c1657612710600d5488611b929190612825565b611b9c91906128dd565b9250600d54600e5484611baf9190612825565b611bb991906128dd565b9150600d5460105484611bcc9190612825565b611bd691906128dd565b90508160156000828254611bea9190612812565b925050819055508060176000828254611c039190612812565b9091555050601680548385038390030190555b8215611c2757611c27893085611d42565b611c3183886128ff565b96505b611c3f898989611d42565b505050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610b4f9084906120d0565b6001600160a01b038316611d685760405162461bcd60e51b8152600401610acc90612855565b6001600160a01b038216611d8e5760405162461bcd60e51b8152600401610acc9061289a565b6001600160a01b03831660009081526020819052604090205481811015611e065760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610acc565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611e3d908490612812565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e8991815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601654601554601754611ebe9190612812565b611ec89190612812565b9050811580611ed5575080155b15611ede575050565b600060028260175485611ef19190612825565b611efb91906128dd565b611f0591906128dd565b905080830347611f14826121a2565b6000814703905060008560155483611f2c9190612825565b611f3691906128dd565b905060008660165484611f499190612825565b611f5391906128dd565b6000601781905560158190556016819055600754604051929350848603849003926001600160a01b039091169085908381818185875af1925050503d8060008114611fba576040519150601f19603f3d011682016040523d82523d6000602084013e611fbf565b606091505b50506008546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114612013576040519150601f19603f3d011682016040523d82523d6000602084013e612018565b606091505b5050905060008911801561202c5750600083115b1561207f5761203b8984612362565b601754604080518a81526020810186905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b8180156120895750805b6120c35760405162461bcd60e51b815260206004820152600b60248201526a1cd95b990819985a5b195960aa1b6044820152606401610acc565b5050505050505050505050565b6000612125826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166124489092919063ffffffff16565b805190915015610b4f57808060200190518101906121439190612912565b610b4f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610acc565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121d7576121d761292f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000145677fc4d9b8f19b5d56d1820c48e0443049a306001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122799190612945565b8160018151811061228c5761228c61292f565b60200260200101906001600160a01b031690816001600160a01b0316815250506122d7307f000000000000000000000000145677fc4d9b8f19b5d56d1820c48e0443049a3084611444565b60405163791ac94760e01b81526001600160a01b037f000000000000000000000000145677fc4d9b8f19b5d56d1820c48e0443049a30169063791ac9479061232c908590600090869030904290600401612962565b600060405180830381600087803b15801561234657600080fd5b505af115801561235a573d6000803e3d6000fd5b505050505050565b61238d307f000000000000000000000000145677fc4d9b8f19b5d56d1820c48e0443049a3084611444565b60185460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f000000000000000000000000145677fc4d9b8f19b5d56d1820c48e0443049a309091169063f305d71990839060c40160606040518083038185885af115801561241c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061244191906129d3565b5050505050565b6060612457848460008561245f565b949350505050565b6060824710156124c05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610acc565b843b61250e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610acc565b600080866001600160a01b0316858760405161252a9190612a01565b60006040518083038185875af1925050503d8060008114612567576040519150601f19603f3d011682016040523d82523d6000602084013e61256c565b606091505b509150915061257c828286612587565b979650505050505050565b60608315612596575081610d57565b8251156125a65782518084602001fd5b8160405162461bcd60e51b8152600401610acc91906125e4565b60005b838110156125db5781810151838201526020016125c3565b50506000910152565b60208152600082518060208401526126038160408501602087016125c0565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610c3657600080fd5b6000806040838503121561263f57600080fd5b823561264a81612617565b946020939093013593505050565b60008060006060848603121561266d57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561269657600080fd5b8135610d5781612617565b6000602082840312156126b357600080fd5b5035919050565b6000806000606084860312156126cf57600080fd5b83356126da81612617565b925060208401356126ea81612617565b929592945050506040919091013590565b8015158114610c3657600080fd5b6000806040838503121561271c57600080fd5b823561272781612617565b91506020830135612737816126fb565b809150509250929050565b60006020828403121561275457600080fd5b8135610d57816126fb565b6000806040838503121561277257600080fd5b823561277d81612617565b9150602083013561273781612617565b600181811c908216806127a157607f821691505b6020821081036127c157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a9c57610a9c6127fc565b8082028115828204841417610a9c57610a9c6127fc565b60006020828403121561284e57600080fd5b5051919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000826128fa57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610a9c57610a9c6127fc565b60006020828403121561292457600080fd5b8151610d57816126fb565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561295757600080fd5b8151610d5781612617565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129b25784516001600160a01b03168352938301939183019160010161298d565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156129e857600080fd5b8351925060208401519150604084015190509250925092565b60008251612a138184602087016125c0565b919091019291505056fea26469706673582212204cb3b5f8bac436e9ab789fb0133426d83e1e8045237958c0cb32522ca47f1f0864736f6c63430008130033
Deployed Bytecode Sourcemap
20573:16167:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20934:32;;;;;;;;;;-1:-1:-1;20934:32:0;;;;-1:-1:-1;;;;;20934:32:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;20934:32:0;;;;;;;;6746:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7726:194::-;;;;;;;;;;-1:-1:-1;7726:194:0;;;;;:::i;:::-;;:::i;:::-;;;1499:14:1;;1492:22;1474:41;;1462:2;1447:18;7726:194:0;1334:187:1;26325:446:0;;;;;;;;;;-1:-1:-1;26325:446:0;;;;;:::i;:::-;;:::i;:::-;;26779:492;;;;;;;;;;-1:-1:-1;26779:492:0;;;;;:::i;:::-;;:::i;21814:63::-;;;;;;;;;;-1:-1:-1;21814:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28719:146;;;;;;;;;;-1:-1:-1;28719:146:0;;;;;:::i;:::-;;:::i;20772:51::-;;;;;;;;;;;;;;;25229:115;;;;;;;;;;;;;:::i;7067:108::-;;;;;;;;;;-1:-1:-1;7155:12:0;;7067:108;;;2480:25:1;;;2468:2;2453:18;7067:108:0;2334:177:1;21583:33:0;;;;;;;;;;;;;;;;25352:143;;;;;;;;;;-1:-1:-1;25352:143:0;;;;;:::i;:::-;;:::i;21501:33::-;;;;;;;;;;;;;;;;7928:529;;;;;;;;;;-1:-1:-1;7928:529:0;;;;;:::i;:::-;;:::i;25628:127::-;;;;;;;;;;-1:-1:-1;25628:127:0;;;;;:::i;:::-;;:::i;6966:93::-;;;;;;;;;;-1:-1:-1;6966:93:0;;7049:2;3304:36:1;;3292:2;3277:18;6966:93:0;3162:184:1;25503:117:0;;;;;;;;;;-1:-1:-1;25503:117:0;;;;;:::i;:::-;;:::i;8465:290::-;;;;;;;;;;-1:-1:-1;8465:290:0;;;;;:::i;:::-;;:::i;20830:28::-;;;;;;;;;;-1:-1:-1;20830:28:0;;;;-1:-1:-1;;;;;20830:28:0;;;29128:126;;;;;;;;;;-1:-1:-1;29128:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;29218:28:0;29194:4;29218:28;;;:19;:28;;;;;;;;;29128:126;27979:254;;;;;;;;;;-1:-1:-1;27979:254:0;;;;;:::i;:::-;;:::i;21348:28::-;;;;;;;;;;;;;;;;21088:31;;;;;;;;;;-1:-1:-1;21088:31:0;;;;;;;;21541:35;;;;;;;;;;;;;;;;7183:143;;;;;;;;;;-1:-1:-1;7183:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7300:18:0;7273:7;7300:18;;;;;;;;;;;;7183:143;786:94;;;;;;;;;;;;;:::i;25952:169::-;;;;;;;;;;-1:-1:-1;25952:169:0;;;;;:::i;:::-;;:::i;20897:30::-;;;;;;;;;;-1:-1:-1;20897:30:0;;;;-1:-1:-1;;;;;20897:30:0;;;21233;;;;;;;;;;;;;;;;25085:112;;;;;;;;;;;;;:::i;563:87::-;;;;;;;;;;-1:-1:-1;636:6:0;;-1:-1:-1;;;;;636:6:0;563:87;;21383:31;;;;;;;;;;;;;;;;26217:100;;;;;;;;;;-1:-1:-1;26217:100:0;;;;;:::i;:::-;;:::i;28535:176::-;;;;;;;;;;-1:-1:-1;28535:176:0;;;;;:::i;:::-;;:::i;6854:104::-;;;;;;;;;;;;;:::i;27469:306::-;;;;;;;;;;-1:-1:-1;27469:306:0;;;;;:::i;:::-;;:::i;28241:286::-;;;;;;;;;;-1:-1:-1;28241:286:0;;;;;:::i;:::-;;:::i;8763:475::-;;;;;;;;;;-1:-1:-1;8763:475:0;;;;;:::i;:::-;;:::i;28873:247::-;;;;;;;;;;-1:-1:-1;28873:247:0;;;;;:::i;:::-;;:::i;7334:200::-;;;;;;;;;;-1:-1:-1;7334:200:0;;;;;:::i;:::-;;:::i;25763:181::-;;;;;;;;;;-1:-1:-1;25763:181:0;;;;;:::i;:::-;;:::i;22035:57::-;;;;;;;;;;-1:-1:-1;22035:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21126:33;;;;;;;;;;-1:-1:-1;21126:33:0;;;;;;;;;;;27279:182;;;;;;;;;;-1:-1:-1;27279:182:0;;;;;:::i;:::-;;:::i;20973:35::-;;;;;;;;;;;;;;;;21199:27;;;;;;;;;;;;;;;;7542:176;;;;;;;;;;-1:-1:-1;7542:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;7683:18:0;;;7656:7;7683:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7542:176;21046:33;;;;;;;;;;;;;;;;21421;;;;;;;;;;;;;;;;21309:30;;;;;;;;;;;;;;;;888:229;;;;;;;;;;-1:-1:-1;888:229:0;;;;;:::i;:::-;;:::i;21270:32::-;;;;;;;;;;;;;;;;21461:31;;;;;;;;;;;;;;;;21015:24;;;;;;;;;;;;;;;;6746:100;6800:13;6833:5;6826:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6746:100;:::o;7726:194::-;7834:4;7851:39;173:10;7874:7;7883:6;7851:8;:39::i;:::-;-1:-1:-1;7908:4:0;7726:194;;;;;:::o;26325:446::-;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;;;;;;;;;26480:15:::1;:31:::0;;;26522:17:::1;:35:::0;;;26568:15:::1;:31:::0;;;26586:13;26625:35:::1;26542:15:::0;26498:13;26625:35:::1;:::i;:::-;:53;;;;:::i;:::-;26610:12;:68:::0;;;20761:4:::1;-1:-1:-1::0;26699:33:0::1;26691:72;;;::::0;-1:-1:-1;;;26691:72:0;;5710:2:1;26691:72:0::1;::::0;::::1;5692:21:1::0;5749:2;5729:18;;;5722:30;5788:28;5768:18;;;5761:56;5834:18;;26691:72:0::1;5508:350:1::0;26691:72:0::1;26325:446:::0;;;:::o;26779:492::-;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;26935:16:::1;:32:::0;;;26978:18:::1;:36:::0;;;27025:16:::1;:32:::0;;;27044:13;27097:50:::1;26999:15:::0;26954:13;27097:50:::1;:::i;:::-;:82;;;;:::i;:::-;27068:13;:111:::0;;;20761:4:::1;-1:-1:-1::0;27198:34:0::1;27190:73;;;::::0;-1:-1:-1;;;27190:73:0;;5710:2:1;27190:73:0::1;::::0;::::1;5692:21:1::0;5749:2;5729:18;;;5722:30;5788:28;5768:18;;;5761:56;5834:18;;27190:73:0::1;5508:350:1::0;28719:146:0;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;28786:28:::1;28804:9;28786:17;:28::i;:::-;28825:32;28841:9;28852:4;28825:15;:32::i;:::-;28719:146:::0;:::o;25229:115::-;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;25285:13:::1;:21:::0;;-1:-1:-1;;25317:19:0;;;25229:115::o;25352:143::-;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;25461:26:::1;:13:::0;25478:8:::1;25461:26;:::i;:::-;25438:20;:49:::0;-1:-1:-1;25352:143:0:o;7928:529::-;8068:4;8085:36;8095:6;8103:9;8114:6;8085:9;:36::i;:::-;-1:-1:-1;;;;;8161:19:0;;8134:24;8161:19;;;:11;:19;;;;;;;;173:10;8161:33;;;;;;;;8227:26;;;;8205:116;;;;-1:-1:-1;;;8205:116:0;;6238:2:1;8205:116:0;;;6220:21:1;6277:2;6257:18;;;6250:30;6316:34;6296:18;;;6289:62;-1:-1:-1;;;6367:18:1;;;6360:38;6415:19;;8205:116:0;6036:404:1;8205:116:0;8357:57;8366:6;173:10;8407:6;8388:16;:25;8357:8;:57::i;:::-;8445:4;8438:11;;;7928:529;;;;;;:::o;25628:127::-;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;25721:26:::1;:13:::0;25738:8:::1;25721:26;:::i;:::-;25709:9;:38:::0;-1:-1:-1;25628:127:0:o;25503:117::-;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;25582:16:::1;:30:::0;;-1:-1:-1;;;;;;25582:30:0::1;-1:-1:-1::0;;;;;25582:30:0;;;::::1;::::0;;;::::1;::::0;;25503:117::o;8465:290::-;173:10;8578:4;8667:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8667:34:0;;;;;;;;;;8578:4;;8595:130;;8645:7;;8667:47;;8704:10;;8667:47;:::i;:::-;8595:8;:130::i;27979:254::-;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;28113:15:::1;::::0;28070:59:::1;::::0;-1:-1:-1;;;;;28113:15:0;;::::1;::::0;28070:59;::::1;::::0;::::1;::::0;28113:15:::1;::::0;28070:59:::1;28140:15;:36:::0;;-1:-1:-1;;;;;;28140:36:0::1;-1:-1:-1::0;;;;;28140:36:0;::::1;::::0;;::::1;::::0;;;28187:38:::1;::::0;-1:-1:-1;28187:15:0::1;:38::i;786:94::-:0;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;851:21:::1;869:1;851:9;:21::i;:::-;786:94::o:0;25952:169::-;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26067:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;26067:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25952:169::o;25085:112::-;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;25140:13:::1;:20:::0;;-1:-1:-1;;25171:18:0;;;;;25085:112::o;26217:100::-;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;26288:11:::1;:21:::0;;-1:-1:-1;;26288:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26217:100::o;28535:176::-;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;28610:9:::1;28633:4;-1:-1:-1::0;;;;;28625:18:0::1;28652:21;28625:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28609:70;;;28698:4;28690:13;;;::::0;::::1;;28598:113;28535:176:::0;:::o;6854:104::-;6910:13;6943:7;6936:14;;;;;:::i;27469:306::-;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;27615:13:::1;::::0;-1:-1:-1;;;;;27615:13:0;;::::1;27607:21:::0;;::::1;::::0;27585:128:::1;;;::::0;-1:-1:-1;;;27585:128:0;;6857:2:1;27585:128:0::1;::::0;::::1;6839:21:1::0;6896:2;6876:18;;;6869:30;6935:34;6915:18;;;6908:62;7006:27;6986:18;;;6979:55;7051:19;;27585:128:0::1;6655:421:1::0;27585:128:0::1;27726:41;27755:4;27761:5;27726:28;:41::i;28241:286::-:0;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;28399:17:::1;::::0;28352:65:::1;::::0;-1:-1:-1;;;;;28399:17:0;;::::1;::::0;28352:65;::::1;::::0;::::1;::::0;28399:17:::1;::::0;28352:65:::1;28428:17;:40:::0;;-1:-1:-1;;;;;;28428:40:0::1;-1:-1:-1::0;;;;;28428:40:0;::::1;::::0;;::::1;::::0;;;28479::::1;::::0;-1:-1:-1;28479:15:0::1;:40::i;8763:475::-:0;173:10;8881:4;8925:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8925:34:0;;;;;;;;;;8992:35;;;;8970:122;;;;-1:-1:-1;;;8970:122:0;;7283:2:1;8970:122:0;;;7265:21:1;7322:2;7302:18;;;7295:30;7361:34;7341:18;;;7334:62;-1:-1:-1;;;7412:18:1;;;7405:35;7457:19;;8970:122:0;7081:401:1;8970:122:0;9128:67;173:10;9151:7;9179:15;9160:16;:34;9128:8;:67::i;:::-;-1:-1:-1;9226:4:0;;8763:475;-1:-1:-1;;;8763:475:0:o;28873:247::-;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;29011:45:::1;::::0;-1:-1:-1;;;29011:45:0;;29050:4:::1;29011:45;::::0;::::1;160:51:1::0;28996:12:0::1;::::0;-1:-1:-1;;;;;29011:30:0;::::1;::::0;::::1;::::0;133:18:1;;29011:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28996:60:::0;-1:-1:-1;29067:45:0::1;-1:-1:-1::0;;;;;29067:33:0;::::1;29101:4:::0;28996:60;29067:33:::1;:45::i;7334:200::-:0;7445:4;7462:42;173:10;7486:9;7497:6;7462:9;:42::i;25763:181::-;636:6;;25862:4;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;-1:-1:-1;25879:18:0::1;:35:::0;25932:4:::1;::::0;25763:181::o;27279:182::-;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27364:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;27364:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;27419:34;;1474:41:1;;;27419:34:0::1;::::0;1447:18:1;27419:34:0::1;;;;;;;27279:182:::0;;:::o;888:229::-;636:6;;-1:-1:-1;;;;;636:6:0;173:10;698:23;690:68;;;;-1:-1:-1;;;690:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;991:22:0;::::1;969:110;;;::::0;-1:-1:-1;;;969:110:0;;7878:2:1;969:110:0::1;::::0;::::1;7860:21:1::0;7917:2;7897:18;;;7890:30;7956:34;7936:18;;;7929:62;-1:-1:-1;;;8007:18:1;;;8000:36;8053:19;;969:110:0::1;7676:402:1::0;969:110:0::1;1090:19;1100:8;1090:9;:19::i;11030:380::-:0;-1:-1:-1;;;;;11166:19:0;;11158:68;;;;-1:-1:-1;;;11158:68:0;;8285:2:1;11158:68:0;;;8267:21:1;8324:2;8304:18;;;8297:30;8363:34;8343:18;;;8336:62;-1:-1:-1;;;8414:18:1;;;8407:34;8458:19;;11158:68:0;8083:400:1;11158:68:0;-1:-1:-1;;;;;11245:21:0;;11237:68;;;;-1:-1:-1;;;11237:68:0;;8690:2:1;11237:68:0;;;8672:21:1;8729:2;8709:18;;;8702:30;8768:34;8748:18;;;8741:62;-1:-1:-1;;;8819:18:1;;;8812:32;8861:19;;11237:68:0;8488:398:1;11237:68:0;-1:-1:-1;;;;;11318:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11370:32;;2480:25:1;;;11370:32:0;;2453:18:1;11370:32:0;;;;;;;11030:380;;;:::o;29312:4319::-;-1:-1:-1;;;;;29444:18:0;;29436:68;;;;-1:-1:-1;;;29436:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29523:16:0;;29515:64;;;;-1:-1:-1;;;29515:64:0;;;;;;;:::i;:::-;29596:6;29606:1;29596:11;29592:93;;29624:28;29640:4;29646:2;29650:1;29624:15;:28::i;29592:93::-;636:6;;-1:-1:-1;;;;;29715:15:0;;;636:6;;29715:15;;;;:45;;-1:-1:-1;636:6:0;;-1:-1:-1;;;;;29747:13:0;;;636:6;;29747:13;;29715:45;:78;;;;-1:-1:-1;;;;;;29777:16:0;;;;29715:78;:116;;;;-1:-1:-1;;;;;;29810:21:0;;29824:6;29810:21;;29715:116;:142;;;;-1:-1:-1;29849:8:0;;-1:-1:-1;;;29849:8:0;;;;29848:9;29715:142;29697:1534;;;29889:13;;;;;;;29884:203;;-1:-1:-1;;;;;29953:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;29982:23:0;;;;;;:19;:23;;;;;;;;29953:52;29923:148;;;;-1:-1:-1;;;29923:148:0;;9903:2:1;29923:148:0;;;9885:21:1;9942:2;9922:18;;;9915:30;-1:-1:-1;;;9961:18:1;;;9954:52;10023:18;;29923:148:0;9701:346:1;29923:148:0;-1:-1:-1;;;;;30149:31:0;;;;;;:25;:31;;;;;;;;:88;;;;-1:-1:-1;;;;;;30202:35:0;;;;;;:31;:35;;;;;;;;30201:36;30149:88;30127:1093;;;30312:20;;30302:6;:30;;30272:157;;;;-1:-1:-1;;;30272:157:0;;10254:2:1;30272:157:0;;;10236:21:1;10293:2;10273:18;;;10266:30;10332:34;10312:18;;;10305:62;-1:-1:-1;;;10383:18:1;;;10376:51;10444:19;;30272:157:0;10052:417:1;30272:157:0;30504:9;;-1:-1:-1;;;;;7300:18:0;;7273:7;7300:18;;;;;;;;;;;30478:22;;:6;:22;:::i;:::-;:35;;30448:128;;;;-1:-1:-1;;;30448:128:0;;10676:2:1;30448:128:0;;;10658:21:1;10715:2;10695:18;;;10688:30;-1:-1:-1;;;10734:18:1;;;10727:49;10793:18;;30448:128:0;10474:343:1;30448:128:0;30127:1093;;;-1:-1:-1;;;;;30658:29:0;;;;;;:25;:29;;;;;;;;:88;;;;-1:-1:-1;;;;;;30709:37:0;;;;;;:31;:37;;;;;;;;30708:38;30658:88;30636:584;;;30821:20;;30811:6;:30;;30781:158;;;;-1:-1:-1;;;30781:158:0;;11024:2:1;30781:158:0;;;11006:21:1;11063:2;11043:18;;;11036:30;11102:34;11082:18;;;11075:62;-1:-1:-1;;;11153:18:1;;;11146:52;11215:19;;30781:158:0;10822:418:1;30636:584:0;-1:-1:-1;;;;;30985:35:0;;;;;;:31;:35;;;;;;;;30980:225;;31105:9;;-1:-1:-1;;;;;7300:18:0;;7273:7;7300:18;;;;;;;;;;;31079:22;;:6;:22;:::i;:::-;:35;;31045:140;;;;-1:-1:-1;;;31045:140:0;;10676:2:1;31045:140:0;;;10658:21:1;10715:2;10695:18;;;10688:30;-1:-1:-1;;;10734:18:1;;;10727:49;10793:18;;31045:140:0;10474:343:1;31045:140:0;31292:4;31243:28;7300:18;;;;;;;;;;;31350;;31326:42;;;;;;;31399:35;;-1:-1:-1;31423:11:0;;;;31399:35;:61;;;;-1:-1:-1;31452:8:0;;-1:-1:-1;;;31452:8:0;;;;31451:9;31399:61;:110;;;;-1:-1:-1;;;;;;31478:31:0;;;;;;:25;:31;;;;;;;;31477:32;31399:110;:153;;;;-1:-1:-1;;;;;;31527:25:0;;;;;;:19;:25;;;;;;;;31526:26;31399:153;:194;;;;-1:-1:-1;;;;;;31570:23:0;;;;;;:19;:23;;;;;;;;31569:24;31399:194;:228;;;;;31626:1;31610:13;;:17;31399:228;:261;;;;;31659:1;31644:12;;:16;31399:261;31381:393;;;31687:8;:15;;-1:-1:-1;;;;31687:15:0;-1:-1:-1;;;31687:15:0;;;31719:10;:8;:10::i;:::-;31746:8;:16;;-1:-1:-1;;;;31746:16:0;;;31381:393;31802:8;;-1:-1:-1;;;;;31912:25:0;;31786:12;31912:25;;;:19;:25;;;;;;31802:8;-1:-1:-1;;;31802:8:0;;;;;31801:9;;31912:25;;:52;;-1:-1:-1;;;;;;31941:23:0;;;;;;:19;:23;;;;;;;;31912:52;31908:100;;;-1:-1:-1;31991:5:0;31908:100;32020:12;32047:20;32082;32195:7;32191:1387;;;-1:-1:-1;;;;;32247:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;32296:1;32280:13;;:17;32247:50;32243:1186;;;20712:5;32335:13;;32326:6;:22;;;;:::i;:::-;32325:39;;;;:::i;:::-;32318:46;;32426:13;;32406:16;;32399:4;:23;;;;:::i;:::-;32398:41;;;;:::i;:::-;32383:56;;32501:13;;32481:16;;32474:4;:23;;;;:::i;:::-;32473:41;;;;:::i;:::-;32458:56;;32555:12;32533:18;;:34;;;;;;;:::i;:::-;;;;;;;;32608:12;32586:18;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;32672:20:0;:110;;32697:44;;;:84;;;32672:110;;;32243:1186;;;-1:-1:-1;;;;;32863:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;32913:1;32898:12;;:16;32863:51;32859:570;;;20712:5;32952:12;;32943:6;:21;;;;:::i;:::-;32942:38;;;;:::i;:::-;32935:45;;33041:12;;33022:15;;33015:4;:22;;;;:::i;:::-;33014:39;;;;:::i;:::-;32999:54;;33114:12;;33095:15;;33088:4;:22;;;;:::i;:::-;33087:39;;;;:::i;:::-;33072:54;;33167:12;33145:18;;:34;;;;;;;:::i;:::-;;;;;;;;33220:12;33198:18;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;33284:20:0;:110;;33309:44;;;:84;;;33284:110;;;32859:570;33449:8;;33445:91;;33478:42;33494:4;33508;33515;33478:15;:42::i;:::-;33552:14;33562:4;33552:14;;:::i;:::-;;;32191:1387;33590:33;33606:4;33612:2;33616:6;33590:15;:33::i;:::-;29425:4206;;;;;;29312:4319;;;:::o;1125:173::-;1200:6;;;-1:-1:-1;;;;;1217:17:0;;;-1:-1:-1;;;;;;1217:17:0;;;;;;;1250:40;;1200:6;;;1217:17;1200:6;;1250:40;;1181:16;;1250:40;1170:128;1125:173;:::o;27783:188::-;-1:-1:-1;;;;;27866:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;27866:39:0;;;;;;;;;;27923:40;;27866:39;;:31;27923:40;;;27783:188;;:::o;11741:214::-;11878:58;;;-1:-1:-1;;;;;11792:32:1;;11878:58:0;;;11774:51:1;11841:18;;;;11834:34;;;11878:58:0;;;;;;;;;;11747:18:1;;;;11878:58:0;;;;;;;;-1:-1:-1;;;;;11878:58:0;-1:-1:-1;;;11878:58:0;;;11824:123;;11858:5;;11824:19;:123::i;9246:770::-;-1:-1:-1;;;;;9386:20:0;;9378:70;;;;-1:-1:-1;;;9378:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9467:23:0;;9459:71;;;;-1:-1:-1;;;9459:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9627:17:0;;9603:21;9627:17;;;;;;;;;;;9677:23;;;;9655:111;;;;-1:-1:-1;;;9655:111:0;;12081:2:1;9655:111:0;;;12063:21:1;12120:2;12100:18;;;12093:30;12159:34;12139:18;;;12132:62;-1:-1:-1;;;12210:18:1;;;12203:36;12256:19;;9655:111:0;11879:402:1;9655:111:0;-1:-1:-1;;;;;9802:17:0;;;:9;:17;;;;;;;;;;;9822:22;;;9802:42;;9866:20;;;;;;;;:30;;9838:6;;9802:9;9866:30;;9838:6;;9866:30;:::i;:::-;;;;;;;;9931:9;-1:-1:-1;;;;;9914:35:0;9923:6;-1:-1:-1;;;;;9914:35:0;;9942:6;9914:35;;;;2480:25:1;;2468:2;2453:18;;2334:177;9914:35:0;;;;;;;;9367:649;9246:770;;;:::o;34766:1971::-;34849:4;34805:23;7300:18;;;;;;;;;;;34805:50;;34866:25;34962:20;;34928:18;;34894;;:52;;;;:::i;:::-;:88;;;;:::i;:::-;34866:116;-1:-1:-1;34999:20:0;;;:46;;-1:-1:-1;35023:22:0;;34999:46;34995:85;;;35062:7;;34766:1971::o;34995:85::-;35141:23;35254:1;35221:17;35186:18;;35168:15;:36;;;;:::i;:::-;35167:71;;;;:::i;:::-;:88;;;;:::i;:::-;35141:114;-1:-1:-1;35355:33:0;;;35440:21;35474:36;35355:33;35474:16;:36::i;:::-;35523:18;35620:17;35596:21;:41;35583:54;;35661:23;35736:17;35701:18;;35688:10;:31;;;;:::i;:::-;35687:66;;;;:::i;:::-;35661:92;;35764:25;35843:17;35806:20;;35793:10;:33;;;;:::i;:::-;35792:68;;;;:::i;:::-;35873:23;36028:18;:22;;;36061:18;:22;;;36094:20;:24;;;36167:15;;36159:81;;35764:96;;-1:-1:-1;35956:28:0;;;:48;;;;-1:-1:-1;;;;;36167:15:0;;;;35956:28;;35873:23;36159:81;35873:23;36159:81;35956:28;36167:15;36159:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;36289:17:0;;36281:85;;36131:109;;-1:-1:-1;36252:23:0;;-1:-1:-1;;;;;36289:17:0;;;;36334;;36252:23;36281:85;36252:23;36281:85;36334:17;36289;36281:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36251:115;;;36401:1;36383:15;:19;:42;;;;;36424:1;36406:15;:19;36383:42;36379:278;;;36442:46;36455:15;36472;36442:12;:46::i;:::-;36612:18;;36508:137;;;12488:25:1;;;12544:2;12529:18;;12522:34;;;12572:18;;;12565:34;;;;36508:137:0;;;;;;12476:2:1;36508:137:0;;;36379:278;36675:16;:38;;;;;36695:18;36675:38;36667:62;;;;-1:-1:-1;;;36667:62:0;;12812:2:1;36667:62:0;;;12794:21:1;12851:2;12831:18;;;12824:30;-1:-1:-1;;;12870:18:1;;;12863:41;12921:18;;36667:62:0;12610:335:1;36667:62:0;34794:1943;;;;;;;;;;;34766:1971::o;13810:459::-;13891:23;13917:106;13959:4;13917:106;;;;;;;;;;;;;;;;;13925:5;-1:-1:-1;;;;;13917:27:0;;;:106;;;;;:::i;:::-;14038:17;;13891:132;;-1:-1:-1;14038:21:0;14034:228;;14153:10;14142:30;;;;;;;;;;;;:::i;:::-;14116:134;;;;-1:-1:-1;;;14116:134:0;;13402:2:1;14116:134:0;;;13384:21:1;13441:2;13421:18;;;13414:30;13480:34;13460:18;;;13453:62;-1:-1:-1;;;13531:18:1;;;13524:40;13581:19;;14116:134:0;13200:406:1;33639:589:0;33789:16;;;33803:1;33789:16;;;;;;;;33765:21;;33789:16;;;;;;;;;;-1:-1:-1;33789:16:0;33765:40;;33834:4;33816;33821:1;33816:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;33816:23:0;;;-1:-1:-1;;;;;33816:23:0;;;;;33860:15;-1:-1:-1;;;;;33860:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33850:4;33855:1;33850:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;33850:32:0;;;-1:-1:-1;;;;;33850:32:0;;;;;33895:62;33912:4;33927:15;33945:11;33895:8;:62::i;:::-;33996:224;;-1:-1:-1;;;33996:224:0;;-1:-1:-1;;;;;33996:15:0;:66;;;;:224;;34077:11;;34103:1;;34147:4;;34174;;34194:15;;33996:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33694:534;33639:589;:::o;34236:522::-;34384:62;34401:4;34416:15;34434:11;34384:8;:62::i;:::-;34693:16;;34489:261;;-1:-1:-1;;;34489:261:0;;34561:4;34489:261;;;15457:34:1;15507:18;;;15500:34;;;34607:1:0;15550:18:1;;;15543:34;;;15593:18;;;15586:34;-1:-1:-1;;;;;34693:16:0;;;15636:19:1;;;15629:44;34724:15:0;15689:19:1;;;15682:35;34489:15:0;:31;;;;;;34528:9;;15391:19:1;;34489:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;34236:522;;:::o;2948:229::-;3085:12;3117:52;3139:6;3147:4;3153:1;3156:12;3117:21;:52::i;:::-;3110:59;2948:229;-1:-1:-1;;;;2948:229:0:o;3549:571::-;3719:12;3791:5;3766:21;:30;;3744:118;;;;-1:-1:-1;;;3744:118:0;;16241:2:1;3744:118:0;;;16223:21:1;16280:2;16260:18;;;16253:30;16319:34;16299:18;;;16292:62;-1:-1:-1;;;16370:18:1;;;16363:36;16416:19;;3744:118:0;16039:402:1;3744:118:0;2269:20;;3873:60;;;;-1:-1:-1;;;3873:60:0;;16648:2:1;3873:60:0;;;16630:21:1;16687:2;16667:18;;;16660:30;16726:31;16706:18;;;16699:59;16775:18;;3873:60:0;16446:353:1;3873:60:0;3947:12;3961:23;3988:6;-1:-1:-1;;;;;3988:11:0;4007:5;4028:4;3988:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3946:97;;;;4061:51;4078:7;4087:10;4099:12;4061:16;:51::i;:::-;4054:58;3549:571;-1:-1:-1;;;;;;;3549:571:0:o;5558:550::-;5708:12;5737:7;5733:368;;;-1:-1:-1;5768:10:0;5761:17;;5733:368;5815:17;;:21;5811:279;;5918:10;5912:17;5979:15;5966:10;5962:2;5958:19;5951:44;5811:279;6061:12;6054:20;;-1:-1:-1;;;6054:20:0;;;;;;;;:::i;222:250:1:-;307:1;317:113;331:6;328:1;325:13;317:113;;;407:11;;;401:18;388:11;;;381:39;353:2;346:10;317:113;;;-1:-1:-1;;464:1:1;446:16;;439:27;222:250::o;477:396::-;626:2;615:9;608:21;589:4;658:6;652:13;701:6;696:2;685:9;681:18;674:34;717:79;789:6;784:2;773:9;769:18;764:2;756:6;752:15;717:79;:::i;:::-;857:2;836:15;-1:-1:-1;;832:29:1;817:45;;;;864:2;813:54;;477:396;-1:-1:-1;;477:396:1:o;878:131::-;-1:-1:-1;;;;;953:31:1;;943:42;;933:70;;999:1;996;989:12;1014:315;1082:6;1090;1143:2;1131:9;1122:7;1118:23;1114:32;1111:52;;;1159:1;1156;1149:12;1111:52;1198:9;1185:23;1217:31;1242:5;1217:31;:::i;:::-;1267:5;1319:2;1304:18;;;;1291:32;;-1:-1:-1;;;1014:315:1:o;1526:316::-;1603:6;1611;1619;1672:2;1660:9;1651:7;1647:23;1643:32;1640:52;;;1688:1;1685;1678:12;1640:52;-1:-1:-1;;1711:23:1;;;1781:2;1766:18;;1753:32;;-1:-1:-1;1832:2:1;1817:18;;;1804:32;;1526:316;-1:-1:-1;1526:316:1:o;1847:247::-;1906:6;1959:2;1947:9;1938:7;1934:23;1930:32;1927:52;;;1975:1;1972;1965:12;1927:52;2014:9;2001:23;2033:31;2058:5;2033:31;:::i;2516:180::-;2575:6;2628:2;2616:9;2607:7;2603:23;2599:32;2596:52;;;2644:1;2641;2634:12;2596:52;-1:-1:-1;2667:23:1;;2516:180;-1:-1:-1;2516:180:1:o;2701:456::-;2778:6;2786;2794;2847:2;2835:9;2826:7;2822:23;2818:32;2815:52;;;2863:1;2860;2853:12;2815:52;2902:9;2889:23;2921:31;2946:5;2921:31;:::i;:::-;2971:5;-1:-1:-1;3028:2:1;3013:18;;3000:32;3041:33;3000:32;3041:33;:::i;:::-;2701:456;;3093:7;;-1:-1:-1;;;3147:2:1;3132:18;;;;3119:32;;2701:456::o;3351:118::-;3437:5;3430:13;3423:21;3416:5;3413:32;3403:60;;3459:1;3456;3449:12;3474:382;3539:6;3547;3600:2;3588:9;3579:7;3575:23;3571:32;3568:52;;;3616:1;3613;3606:12;3568:52;3655:9;3642:23;3674:31;3699:5;3674:31;:::i;:::-;3724:5;-1:-1:-1;3781:2:1;3766:18;;3753:32;3794:30;3753:32;3794:30;:::i;:::-;3843:7;3833:17;;;3474:382;;;;;:::o;3861:241::-;3917:6;3970:2;3958:9;3949:7;3945:23;3941:32;3938:52;;;3986:1;3983;3976:12;3938:52;4025:9;4012:23;4044:28;4066:5;4044:28;:::i;4107:388::-;4175:6;4183;4236:2;4224:9;4215:7;4211:23;4207:32;4204:52;;;4252:1;4249;4242:12;4204:52;4291:9;4278:23;4310:31;4335:5;4310:31;:::i;:::-;4360:5;-1:-1:-1;4417:2:1;4402:18;;4389:32;4430:33;4389:32;4430:33;:::i;4500:380::-;4579:1;4575:12;;;;4622;;;4643:61;;4697:4;4689:6;4685:17;4675:27;;4643:61;4750:2;4742:6;4739:14;4719:18;4716:38;4713:161;;4796:10;4791:3;4787:20;4784:1;4777:31;4831:4;4828:1;4821:15;4859:4;4856:1;4849:15;4713:161;;4500:380;;;:::o;4885:356::-;5087:2;5069:21;;;5106:18;;;5099:30;5165:34;5160:2;5145:18;;5138:62;5232:2;5217:18;;4885:356::o;5246:127::-;5307:10;5302:3;5298:20;5295:1;5288:31;5338:4;5335:1;5328:15;5362:4;5359:1;5352:15;5378:125;5443:9;;;5464:10;;;5461:36;;;5477:18;;:::i;5863:168::-;5936:9;;;5967;;5984:15;;;5978:22;;5964:37;5954:71;;6005:18;;:::i;7487:184::-;7557:6;7610:2;7598:9;7589:7;7585:23;7581:32;7578:52;;;7626:1;7623;7616:12;7578:52;-1:-1:-1;7649:16:1;;7487:184;-1:-1:-1;7487:184:1:o;8891:401::-;9093:2;9075:21;;;9132:2;9112:18;;;9105:30;9171:34;9166:2;9151:18;;9144:62;-1:-1:-1;;;9237:2:1;9222:18;;9215:35;9282:3;9267:19;;8891:401::o;9297:399::-;9499:2;9481:21;;;9538:2;9518:18;;;9511:30;9577:34;9572:2;9557:18;;9550:62;-1:-1:-1;;;9643:2:1;9628:18;;9621:33;9686:3;9671:19;;9297:399::o;11245:217::-;11285:1;11311;11301:132;;11355:10;11350:3;11346:20;11343:1;11336:31;11390:4;11387:1;11380:15;11418:4;11415:1;11408:15;11301:132;-1:-1:-1;11447:9:1;;11245:217::o;11467:128::-;11534:9;;;11555:11;;;11552:37;;;11569:18;;:::i;12950:245::-;13017:6;13070:2;13058:9;13049:7;13045:23;13041:32;13038:52;;;13086:1;13083;13076:12;13038:52;13118:9;13112:16;13137:28;13159:5;13137:28;:::i;13743:127::-;13804:10;13799:3;13795:20;13792:1;13785:31;13835:4;13832:1;13825:15;13859:4;13856:1;13849:15;13875:251;13945:6;13998:2;13986:9;13977:7;13973:23;13969:32;13966:52;;;14014:1;14011;14004:12;13966:52;14046:9;14040:16;14065:31;14090:5;14065:31;:::i;14131:980::-;14393:4;14441:3;14430:9;14426:19;14472:6;14461:9;14454:25;14498:2;14536:6;14531:2;14520:9;14516:18;14509:34;14579:3;14574:2;14563:9;14559:18;14552:31;14603:6;14638;14632:13;14669:6;14661;14654:22;14707:3;14696:9;14692:19;14685:26;;14746:2;14738:6;14734:15;14720:29;;14767:1;14777:195;14791:6;14788:1;14785:13;14777:195;;;14856:13;;-1:-1:-1;;;;;14852:39:1;14840:52;;14947:15;;;;14912:12;;;;14888:1;14806:9;14777:195;;;-1:-1:-1;;;;;;;15028:32:1;;;;15023:2;15008:18;;15001:60;-1:-1:-1;;;15092:3:1;15077:19;15070:35;14989:3;14131:980;-1:-1:-1;;;14131:980:1:o;15728:306::-;15816:6;15824;15832;15885:2;15873:9;15864:7;15860:23;15856:32;15853:52;;;15901:1;15898;15891:12;15853:52;15930:9;15924:16;15914:26;;15980:2;15969:9;15965:18;15959:25;15949:35;;16024:2;16013:9;16009:18;16003:25;15993:35;;15728:306;;;;;:::o;16804:287::-;16933:3;16971:6;16965:13;16987:66;17046:6;17041:3;17034:4;17026:6;17022:17;16987:66;:::i;:::-;17069:16;;;;;16804:287;-1:-1:-1;;16804:287:1:o
Swarm Source
ipfs://4cb3b5f8bac436e9ab789fb0133426d83e1e8045237958c0cb32522ca47f1f08
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.