ERC-20
Overview
Max Total Supply
700,000,000,000,000 FNX
Holders
545
Market
Price
$0.00 @ 0.000000 MATIC
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
914.709470722 FNXValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
Token
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-11-17 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.17; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } 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 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); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; 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 9; } 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); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); 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); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(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 = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract Token is ERC20, Ownable { IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; address payable public StakingWallet = payable(0);//StakeWallet address payable public MarketingWallet = payable(0); //m wallet address payable public BurnAddress = payable (0); //input 0x00000000dead address public contractAddress = address(this); uint256 public maxTransactionAmount = 5000000000000e9; uint256 public swapTokensAtAmount = 10000000000; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; bool public antiBotEnabled = false; mapping(address => uint256) private _holderLastTransferTimestamp; mapping (address => uint256) private _holderFirstBuyTimestamp; mapping (address => bool) public _blacklist; bool public transferDelayEnabled = false; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyStakingFee; uint256 public buyBurnFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellStakingFee; uint256 public sellBurnFee; uint256 public tokensForMarketing; uint256 public tokensForStaking; uint256 public tokensForBurn; uint256 launchedAt; mapping (address => bool) public _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; mapping (address => bool) public _isExcludedMaxWalletAmount; 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 StakingWalletUpdated(address indexed newWallet, address indexed oldWallet); event BurnAddressUpdated(address indexed newWallet, address indexed oldWallet); constructor() ERC20("ProjectFeenix", "FNX") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff); excludeFromMaxTransaction(address(_uniswapV2Router), true); excludeFromMaxWallet(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); excludeFromMaxWallet(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 3; uint256 _buyStakingFee = 3; uint256 _buyBurnfee = 0; uint256 _sellMarketingFee = 3; uint256 _sellStakingFee = 3; uint256 _sellBurnfee = 0; uint256 totalSupply = 700000000000000e9; buyMarketingFee = _buyMarketingFee; buyStakingFee = _buyStakingFee; buyBurnFee = _buyBurnfee; buyTotalFees = buyMarketingFee + buyStakingFee + buyBurnFee; sellMarketingFee = _sellMarketingFee; sellStakingFee = _sellStakingFee; sellBurnFee = _sellBurnfee; sellTotalFees = sellMarketingFee + sellStakingFee + sellBurnFee; excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(MarketingWallet, true); excludeFromFees(StakingWallet, true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(MarketingWallet, true); excludeFromMaxTransaction(StakingWallet, true); excludeFromMaxWallet(owner(), true); excludeFromMaxWallet(address(this), true); excludeFromMaxWallet(address(0xdead), true); excludeFromMaxWallet(MarketingWallet, true); excludeFromMaxWallet(StakingWallet, true); _mint(owner(), totalSupply*100/100); } receive() external payable { } function enableTrading() external onlyOwner { tradingActive = true; launchedAt = block.number; } function areLimitsInEffect(bool limits) external onlyOwner returns (bool){ limitsInEffect = limits; return limits; } function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNumofTokens) external onlyOwner { maxTransactionAmount = newNumofTokens; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function excludeFromMaxWallet(address updAds, bool isEx) public onlyOwner { _isExcludedMaxWalletAmount[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees(uint256 _MarketingFee, uint256 _StakingFee, uint256 _BurnFee) external onlyOwner { buyMarketingFee = _MarketingFee; buyStakingFee = _StakingFee; buyBurnFee = _BurnFee; buyTotalFees = buyMarketingFee + buyStakingFee + buyBurnFee; require(buyTotalFees <= 6, "Must keep fees at 6% or less"); } function updateSellFees(uint256 _MarketingFee, uint256 _StakingFee, uint256 _BurnFee) external onlyOwner { sellMarketingFee = _MarketingFee; sellStakingFee = _StakingFee; sellBurnFee = _BurnFee; sellTotalFees = sellMarketingFee + sellStakingFee + sellBurnFee; require(sellTotalFees <= 6, "Must keep fees at 6% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function antiBotIsEnabled(bool enabled) public onlyOwner{ antiBotEnabled = enabled; } 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 updateMarketingWallet(address newMarketingWallet) external onlyOwner { MarketingWallet = payable(newMarketingWallet); } function updateStakingWallet(address newWallet) external onlyOwner { StakingWallet = payable(newWallet); } function updateBurnAddress(address newWallet) external onlyOwner { BurnAddress = payable(newWallet); } 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"); require(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } } } if ( antiBotEnabled && to != uniswapV2Pair && to != address(0x10ED43C718714eb63d5aA57B78B54704E256024E) ) { _blacklist[to] = true; } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && automatedMarketMakerPairs[to] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if(takeFee){ if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount*sellTotalFees/100; tokensForStaking += fees * sellStakingFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; tokensForBurn += fees * sellBurnFee / sellTotalFees; } else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount*buyTotalFees/100; tokensForStaking += fees * buyStakingFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; tokensForBurn += fees *buyBurnFee/ buyTotalFees; } if(fees > 10){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForMarketing + tokensForStaking + tokensForBurn; if(contractBalance == 0 || totalTokensToSwap == 100) {return;} uint256 amountToSwapForETH = contractBalance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance; uint256 ethForMarketing = ethBalance*tokensForMarketing/totalTokensToSwap; uint256 ethForStaking = ethBalance*tokensForStaking/totalTokensToSwap; uint256 ethForBurn = ethBalance*tokensForBurn/totalTokensToSwap; payable(MarketingWallet).transfer(ethForMarketing); payable(StakingWallet).transfer(ethForStaking); payable(BurnAddress).transfer(ethForBurn); tokensForBurn = 0; tokensForMarketing = 0; tokensForStaking = 0; } function recoverAllTokens() external onlyOwner { super._transfer(address(this), owner(), balanceOf(contractAddress)); } function recoverAllETH() external onlyOwner { payable(owner()).transfer(address(this).balance); } }
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":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"BurnAddressUpdated","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":"MarketingWalletUpdated","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":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"StakingWalletUpdated","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":[],"name":"BurnAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MarketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"StakingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxWalletAmount","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":[],"name":"antiBotEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"antiBotIsEnabled","outputs":[],"stateMutability":"nonpayable","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":"bool","name":"limits","type":"bool"}],"name":"areLimitsInEffect","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":"buyBurnFee","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":"buyStakingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxWallet","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":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","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":"recoverAllETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverAllTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellStakingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForStaking","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"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":"address","name":"newWallet","type":"address"}],"name":"updateBurnAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MarketingFee","type":"uint256"},{"internalType":"uint256","name":"_StakingFee","type":"uint256"},{"internalType":"uint256","name":"_BurnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNumofTokens","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MarketingFee","type":"uint256"},{"internalType":"uint256","name":"_StakingFee","type":"uint256"},{"internalType":"uint256","name":"_BurnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateStakingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555069010f0cf064dd59200000600a556402540be400600b556001600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff0219169083151502179055506000600c60026101000a81548160ff0219169083151502179055506000600c60036101000a81548160ff0219169083151502179055506000601060006101000a81548160ff021916908315150217905550348015620001b657600080fd5b506040518060400160405280600d81526020017f50726f6a6563744665656e6978000000000000000000000000000000000000008152506040518060400160405280600381526020017f464e5800000000000000000000000000000000000000000000000000000000008152508160039081620002349190620010aa565b508060049081620002469190620010aa565b50505060006200025b6200084b60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073a5e0829caced8ffdd4de3c43696c57f7d7a678ff9050620003268160016200085360201b60201c565b620003398160016200095060201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df9190620011fb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000447573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046d9190620011fb565b6040518363ffffffff1660e01b81526004016200048c9291906200123e565b6020604051808303816000875af1158015620004ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d29190620011fb565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200051a60a05160016200085360201b60201c565b6200052f60a05160016200095060201b60201c565b6200054460a051600162000a4d60201b60201c565b6000600390506000600390506000806003905060006003905060008069943b1377290cbd80000090508660128190555085601381905550846014819055506014546013546012546200059791906200129a565b620005a391906200129a565b601181905550836016819055508260178190555081601881905550601854601754601654620005d391906200129a565b620005df91906200129a565b60158190555062000607620005f962000aee60201b60201c565b600162000b1860201b60201c565b6200061a30600162000b1860201b60201c565b6200062f61dead600162000b1860201b60201c565b62000664600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000b1860201b60201c565b62000699600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000b1860201b60201c565b620006bb620006ad62000aee60201b60201c565b60016200085360201b60201c565b620006ce3060016200085360201b60201c565b620006e361dead60016200085360201b60201c565b62000718600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200085360201b60201c565b6200074d600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200085360201b60201c565b6200076f6200076162000aee60201b60201c565b60016200095060201b60201c565b620007823060016200095060201b60201c565b6200079761dead60016200095060201b60201c565b620007cc600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200095060201b60201c565b62000801600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200095060201b60201c565b6200083d6200081562000aee60201b60201c565b60648084620008259190620012d5565b6200083191906200134f565b62000c6560201b60201c565b5050505050505050620014e4565b600033905090565b620008636200084b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ec90620013e8565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b620009606200084b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009e990620013e8565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000b286200084b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bb190620013e8565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000c59919062001427565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000cd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cce9062001494565b60405180910390fd5b62000ceb6000838362000e1360201b60201c565b62000d078160025462000e1860201b620028eb1790919060201c565b60028190555062000d65816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000e1860201b620028eb1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000e079190620014c7565b60405180910390a35050565b505050565b6000818362000e2891906200129a565b905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000eb257607f821691505b60208210810362000ec85762000ec762000e6a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000f327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ef3565b62000f3e868362000ef3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000f8b62000f8562000f7f8462000f56565b62000f60565b62000f56565b9050919050565b6000819050919050565b62000fa78362000f6a565b62000fbf62000fb68262000f92565b84845462000f00565b825550505050565b600090565b62000fd662000fc7565b62000fe381848462000f9c565b505050565b5b818110156200100b5762000fff60008262000fcc565b60018101905062000fe9565b5050565b601f8211156200105a57620010248162000ece565b6200102f8462000ee3565b810160208510156200103f578190505b620010576200104e8562000ee3565b83018262000fe8565b50505b505050565b600082821c905092915050565b60006200107f600019846008026200105f565b1980831691505092915050565b60006200109a83836200106c565b9150826002028217905092915050565b620010b58262000e30565b67ffffffffffffffff811115620010d157620010d062000e3b565b5b620010dd825462000e99565b620010ea8282856200100f565b600060209050601f8311600181146200112257600084156200110d578287015190505b6200111985826200108c565b86555062001189565b601f198416620011328662000ece565b60005b828110156200115c5784890151825560018201915060208501945060208101905062001135565b868310156200117c578489015162001178601f8916826200106c565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011c38262001196565b9050919050565b620011d581620011b6565b8114620011e157600080fd5b50565b600081519050620011f581620011ca565b92915050565b60006020828403121562001214576200121362001191565b5b60006200122484828501620011e4565b91505092915050565b6200123881620011b6565b82525050565b60006040820190506200125560008301856200122d565b6200126460208301846200122d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620012a78262000f56565b9150620012b48362000f56565b9250828201905080821115620012cf57620012ce6200126b565b5b92915050565b6000620012e28262000f56565b9150620012ef8362000f56565b9250828202620012ff8162000f56565b915082820484148315176200131957620013186200126b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200135c8262000f56565b9150620013698362000f56565b9250826200137c576200137b62001320565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620013d060208362001387565b9150620013dd8262001398565b602082019050919050565b600060208201905081810360008301526200140381620013c1565b9050919050565b60008115159050919050565b62001421816200140a565b82525050565b60006020820190506200143e600083018462001416565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200147c601f8362001387565b9150620014898262001444565b602082019050919050565b60006020820190508181036000830152620014af816200146d565b9050919050565b620014c18162000f56565b82525050565b6000602082019050620014de6000830184620014b6565b92915050565b60805160a0516150436200153b600039600081816112f401528181611bea01528181612f6a015261328101526000818161105801528181612f1201528181613e7701528181613f580152613f7f01526150436000f3fe6080604052600436106103b15760003560e01c806395d89b41116101e7578063cabcc7181161010d578063e0bf7fd1116100a0578063e884f2601161006f578063e884f26014610e23578063edbb3b2c14610e4e578063f2fde38b14610e77578063f6b4dfb414610ea0576103b8565b8063e0bf7fd114610d65578063e2f4560514610da2578063e6b63a8d14610dcd578063e71dc3f514610df8576103b8565b8063d2fcc001116100dc578063d2fcc00114610ca9578063d85ba06314610cd2578063d8c6404b14610cfd578063dd62ed3e14610d28576103b8565b8063cabcc71814610bed578063d10268ad14610c18578063d257b34f14610c41578063d25e5ea114610c7e576103b8565b8063adb873bd11610185578063c024666811610154578063c024666814610b45578063c17b5b8c14610b6e578063c876d0b914610b97578063c8c8ebe414610bc2576103b8565b8063adb873bd14610a9b578063b31efe4a14610ac6578063b62496f514610add578063bbc0c74214610b1a576103b8565b8063a20623ce116101c1578063a20623ce146109bb578063a457c2d7146109f8578063a9059cbb14610a35578063aacebbe314610a72576103b8565b806395d89b411461092a57806396880b17146109555780639a7a23d614610992576103b8565b80634a62bb65116102d7578063742bd2a51161026a5780638a8c523c116102395780638a8c523c146108945780638da5cb5b146108ab57806392136913146108d6578063924de9b714610901576103b8565b8063742bd2a5146107ec5780637571336a146108175780637bce5a04146108405780638095d5641461086b576103b8565b80636bd89cdd116102a65780636bd89cdd146107445780636ddd17131461076d57806370a0823114610798578063715018a6146107d5576103b8565b80634a62bb651461069a5780634fbee193146106c55780635945267a146107025780636a486a8e14610719576103b8565b80631f3fed8f1161034f578063313ce5671161031e578063313ce567146105dc5780633950935114610607578063439be3511461064457806349bd5a5e1461066f576103b8565b80631f3fed8f14610520578063203e727e1461054b57806323b872dd146105745780632598cdb2146105b1576103b8565b806310d5de531161038b57806310d5de53146104625780631694505e1461049f57806318160ddd146104ca5780631d777856146104f5576103b8565b806301b70dab146103bd57806306fdde03146103fa578063095ea7b314610425576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103e460048036038101906103df9190614052565b610ecb565b6040516103f1919061408e565b60405180910390f35b34801561040657600080fd5b5061040f610f86565b60405161041c9190614139565b60405180910390f35b34801561043157600080fd5b5061044c600480360381019061044791906141ef565b611018565b604051610459919061408e565b60405180910390f35b34801561046e57600080fd5b506104896004803603810190610484919061422f565b611036565b604051610496919061408e565b60405180910390f35b3480156104ab57600080fd5b506104b4611056565b6040516104c191906142bb565b60405180910390f35b3480156104d657600080fd5b506104df61107a565b6040516104ec91906142e5565b60405180910390f35b34801561050157600080fd5b5061050a611084565b60405161051791906142e5565b60405180910390f35b34801561052c57600080fd5b5061053561108a565b60405161054291906142e5565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190614300565b611090565b005b34801561058057600080fd5b5061059b6004803603810190610596919061432d565b611131565b6040516105a8919061408e565b60405180910390f35b3480156105bd57600080fd5b506105c661120a565b6040516105d391906143a1565b60405180910390f35b3480156105e857600080fd5b506105f1611230565b6040516105fe91906143d8565b60405180910390f35b34801561061357600080fd5b5061062e600480360381019061062991906141ef565b611239565b60405161063b919061408e565b60405180910390f35b34801561065057600080fd5b506106596112ec565b60405161066691906142e5565b60405180910390f35b34801561067b57600080fd5b506106846112f2565b6040516106919190614402565b60405180910390f35b3480156106a657600080fd5b506106af611316565b6040516106bc919061408e565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e7919061422f565b611329565b6040516106f9919061408e565b60405180910390f35b34801561070e57600080fd5b5061071761137f565b005b34801561072557600080fd5b5061072e611454565b60405161073b91906142e5565b60405180910390f35b34801561075057600080fd5b5061076b6004803603810190610766919061422f565b61145a565b005b34801561077957600080fd5b50610782611535565b60405161078f919061408e565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba919061422f565b611548565b6040516107cc91906142e5565b60405180910390f35b3480156107e157600080fd5b506107ea611590565b005b3480156107f857600080fd5b506108016116e8565b60405161080e91906142e5565b60405180910390f35b34801561082357600080fd5b5061083e6004803603810190610839919061441d565b6116ee565b005b34801561084c57600080fd5b506108556117e0565b60405161086291906142e5565b60405180910390f35b34801561087757600080fd5b50610892600480360381019061088d919061445d565b6117e6565b005b3480156108a057600080fd5b506108a9611900565b005b3480156108b757600080fd5b506108c06119bb565b6040516108cd9190614402565b60405180910390f35b3480156108e257600080fd5b506108eb6119e5565b6040516108f891906142e5565b60405180910390f35b34801561090d57600080fd5b5061092860048036038101906109239190614052565b6119eb565b005b34801561093657600080fd5b5061093f611a9f565b60405161094c9190614139565b60405180910390f35b34801561096157600080fd5b5061097c6004803603810190610977919061422f565b611b31565b604051610989919061408e565b60405180910390f35b34801561099e57600080fd5b506109b960048036038101906109b4919061441d565b611b51565b005b3480156109c757600080fd5b506109e260048036038101906109dd919061422f565b611c84565b6040516109ef919061408e565b60405180910390f35b348015610a0457600080fd5b50610a1f6004803603810190610a1a91906141ef565b611ca4565b604051610a2c919061408e565b60405180910390f35b348015610a4157600080fd5b50610a5c6004803603810190610a5791906141ef565b611d71565b604051610a69919061408e565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a94919061422f565b611d8f565b005b348015610aa757600080fd5b50610ab0611e6a565b604051610abd91906142e5565b60405180910390f35b348015610ad257600080fd5b50610adb611e70565b005b348015610ae957600080fd5b50610b046004803603810190610aff919061422f565b611f57565b604051610b11919061408e565b60405180910390f35b348015610b2657600080fd5b50610b2f611f76565b604051610b3c919061408e565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b67919061441d565b611f89565b005b348015610b7a57600080fd5b50610b956004803603810190610b90919061445d565b6120c9565b005b348015610ba357600080fd5b50610bac6121e3565b604051610bb9919061408e565b60405180910390f35b348015610bce57600080fd5b50610bd76121f6565b604051610be491906142e5565b60405180910390f35b348015610bf957600080fd5b50610c026121fc565b604051610c0f91906143a1565b60405180910390f35b348015610c2457600080fd5b50610c3f6004803603810190610c3a9190614052565b612222565b005b348015610c4d57600080fd5b50610c686004803603810190610c639190614300565b6122d6565b604051610c75919061408e565b60405180910390f35b348015610c8a57600080fd5b50610c9361237f565b604051610ca091906142e5565b60405180910390f35b348015610cb557600080fd5b50610cd06004803603810190610ccb919061441d565b612385565b005b348015610cde57600080fd5b50610ce7612477565b604051610cf491906142e5565b60405180910390f35b348015610d0957600080fd5b50610d1261247d565b604051610d1f919061408e565b60405180910390f35b348015610d3457600080fd5b50610d4f6004803603810190610d4a91906144b0565b612490565b604051610d5c91906142e5565b60405180910390f35b348015610d7157600080fd5b50610d8c6004803603810190610d87919061422f565b612517565b604051610d99919061408e565b60405180910390f35b348015610dae57600080fd5b50610db7612537565b604051610dc491906142e5565b60405180910390f35b348015610dd957600080fd5b50610de261253d565b604051610def91906143a1565b60405180910390f35b348015610e0457600080fd5b50610e0d612563565b604051610e1a91906142e5565b60405180910390f35b348015610e2f57600080fd5b50610e38612569565b604051610e45919061408e565b60405180910390f35b348015610e5a57600080fd5b50610e756004803603810190610e70919061422f565b612624565b005b348015610e8357600080fd5b50610e9e6004803603810190610e99919061422f565b6126ff565b005b348015610eac57600080fd5b50610eb56128c5565b604051610ec29190614402565b60405180910390f35b6000610ed5612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b9061453c565b60405180910390fd5b81600c60006101000a81548160ff021916908315150217905550819050919050565b606060038054610f959061458b565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc19061458b565b801561100e5780601f10610fe35761010080835404028352916020019161100e565b820191906000526020600020905b815481529060010190602001808311610ff157829003601f168201915b5050505050905090565b600061102c611025612901565b8484612909565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b601b5481565b60195481565b611098612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e9061453c565b60405180910390fd5b80600a8190555050565b600061113e848484612ad2565b6111ff8461114a612901565b6111fa85604051806060016040528060288152602001614fc160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111b0612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b612909565b600190509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009905090565b60006112e2611246612901565b846112dd8560016000611257612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128eb90919063ffffffff16565b612909565b6001905092915050565b60135481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611387612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140d9061453c565b60405180910390fd5b611452306114226119bb565b61144d600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611548565b61388f565b565b60155481565b611462612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e89061453c565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611598612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e9061453c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60175481565b6116f6612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c9061453c565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b6117ee612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118749061453c565b60405180910390fd5b8260128190555081601381905550806014819055506014546013546012546118a591906145eb565b6118af91906145eb565b601181905550600660115411156118fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f29061466b565b60405180910390fd5b505050565b611908612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198e9061453c565b60405180910390fd5b6001600c60016101000a81548160ff02191690831515021790555043601c81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b6119f3612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a799061453c565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b606060048054611aae9061458b565b80601f0160208091040260200160405190810160405280929190818152602001828054611ada9061458b565b8015611b275780601f10611afc57610100808354040283529160200191611b27565b820191906000526020600020905b815481529060010190602001808311611b0a57829003601f168201915b5050505050905090565b601f6020528060005260406000206000915054906101000a900460ff1681565b611b59612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdf9061453c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d906146fd565b60405180910390fd5b611c808282613b22565b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b6000611d67611cb1612901565b84611d6285604051806060016040528060258152602001614fe96025913960016000611cdb612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b612909565b6001905092915050565b6000611d85611d7e612901565b8484612ad2565b6001905092915050565b611d97612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1d9061453c565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b611e78612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efe9061453c565b60405180910390fd5b611f0f6119bb565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611f54573d6000803e3d6000fd5b50565b602080528060005260406000206000915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b611f91612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612020576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120179061453c565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120bd919061408e565b60405180910390a25050565b6120d1612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612160576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121579061453c565b60405180910390fd5b82601681905550816017819055508060188190555060185460175460165461218891906145eb565b61219291906145eb565b601581905550600660155411156121de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d59061466b565b60405180910390fd5b505050565b601060009054906101000a900460ff1681565b600a5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61222a612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b09061453c565b60405180910390fd5b80600c60036101000a81548160ff02191690831515021790555050565b60006122e0612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461236f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123669061453c565b60405180910390fd5b81600b8190555060019050919050565b601a5481565b61238d612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461241c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124139061453c565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b600c60039054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b600b5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b6000612573612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f99061453c565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b61262c612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b29061453c565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612707612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278d9061453c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fc9061478f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081836128f991906145eb565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f90614821565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129de906148b3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ac591906142e5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3890614945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba7906149d7565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c545750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8a90614a69565b60405180910390fd5b60008103612cac57612ca78383600061388f565b613835565b600c60009054906101000a900460ff161561326857612cc96119bb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d375750612d076119bb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d705750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612daa575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612dc35750600560149054906101000a900460ff16155b1561326757600c60019054906101000a900460ff16612ebd57601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e7d5750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb390614ad5565b60405180910390fd5b5b601060009054906101000a900460ff161561308557612eda6119bb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612f6157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fb957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156130845743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061303f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303690614b8d565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131285750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561317757600a54811115613172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316990614c1f565b60405180910390fd5b613266565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561321a5750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561326557600a54811115613264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325b90614cb1565b60405180910390fd5b5b5b5b5b600c60039054906101000a900460ff1680156132d057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561331c57507310ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561337a576001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061338530611548565b90506000600b5482101590508080156133aa5750600c60029054906101000a900460ff165b80156133c35750600560149054906101000a900460ff16155b80156134185750602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561346e5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134c45750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613508576001600560146101000a81548160ff0219169083151502179055506134ec613bc3565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135be5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135c857600090505b6000811561382557602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561362b57506000601554115b156136ea576064601554866136409190614cd1565b61364a9190614d42565b90506015546017548261365d9190614cd1565b6136679190614d42565b601a600082825461367891906145eb565b92505081905550601554601654826136909190614cd1565b61369a9190614d42565b601960008282546136ab91906145eb565b92505081905550601554601854826136c39190614cd1565b6136cd9190614d42565b601b60008282546136de91906145eb565b92505081905550613801565b602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561374557506000601154115b156138005760646011548661375a9190614cd1565b6137649190614d42565b9050601154601354826137779190614cd1565b6137819190614d42565b601a600082825461379291906145eb565b92505081905550601154601254826137aa9190614cd1565b6137b49190614d42565b601960008282546137c591906145eb565b92505081905550601154601454826137dd9190614cd1565b6137e79190614d42565b601b60008282546137f891906145eb565b925050819055505b5b600a8111156138165761381587308361388f565b5b80856138229190614d73565b94505b61383087878761388f565b505050505b505050565b6000838311158290613882576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138799190614139565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036138fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138f590614945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361396d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613964906149d7565b60405180910390fd5b613978838383613dd3565b6139e381604051806060016040528060268152602001614f9b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a76816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128eb90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b1591906142e5565b60405180910390a3505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613bce30611548565b90506000601b54601a54601954613be591906145eb565b613bef91906145eb565b90506000821480613c005750606481145b15613c0c575050613dd1565b6000829050613c1a81613dd8565b600047905060008360195483613c309190614cd1565b613c3a9190614d42565b9050600084601a5484613c4d9190614cd1565b613c579190614d42565b9050600085601b5485613c6a9190614cd1565b613c749190614d42565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613cde573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613d47573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613db0573d6000803e3d6000fd5b506000601b8190555060006019819055506000601a81905550505050505050505b565b505050565b6000600267ffffffffffffffff811115613df557613df4614da7565b5b604051908082528060200260200182016040528015613e235781602001602082028036833780820191505090505b5090503081600081518110613e3b57613e3a614dd6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f049190614e1a565b81600181518110613f1857613f17614dd6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f7d307f000000000000000000000000000000000000000000000000000000000000000084612909565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fdf959493929190614f40565b600060405180830381600087803b158015613ff957600080fd5b505af115801561400d573d6000803e3d6000fd5b505050505050565b600080fd5b60008115159050919050565b61402f8161401a565b811461403a57600080fd5b50565b60008135905061404c81614026565b92915050565b60006020828403121561406857614067614015565b5b60006140768482850161403d565b91505092915050565b6140888161401a565b82525050565b60006020820190506140a3600083018461407f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140e35780820151818401526020810190506140c8565b60008484015250505050565b6000601f19601f8301169050919050565b600061410b826140a9565b61411581856140b4565b93506141258185602086016140c5565b61412e816140ef565b840191505092915050565b600060208201905081810360008301526141538184614100565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141868261415b565b9050919050565b6141968161417b565b81146141a157600080fd5b50565b6000813590506141b38161418d565b92915050565b6000819050919050565b6141cc816141b9565b81146141d757600080fd5b50565b6000813590506141e9816141c3565b92915050565b6000806040838503121561420657614205614015565b5b6000614214858286016141a4565b9250506020614225858286016141da565b9150509250929050565b60006020828403121561424557614244614015565b5b6000614253848285016141a4565b91505092915050565b6000819050919050565b600061428161427c6142778461415b565b61425c565b61415b565b9050919050565b600061429382614266565b9050919050565b60006142a582614288565b9050919050565b6142b58161429a565b82525050565b60006020820190506142d060008301846142ac565b92915050565b6142df816141b9565b82525050565b60006020820190506142fa60008301846142d6565b92915050565b60006020828403121561431657614315614015565b5b6000614324848285016141da565b91505092915050565b60008060006060848603121561434657614345614015565b5b6000614354868287016141a4565b9350506020614365868287016141a4565b9250506040614376868287016141da565b9150509250925092565b600061438b8261415b565b9050919050565b61439b81614380565b82525050565b60006020820190506143b66000830184614392565b92915050565b600060ff82169050919050565b6143d2816143bc565b82525050565b60006020820190506143ed60008301846143c9565b92915050565b6143fc8161417b565b82525050565b600060208201905061441760008301846143f3565b92915050565b6000806040838503121561443457614433614015565b5b6000614442858286016141a4565b92505060206144538582860161403d565b9150509250929050565b60008060006060848603121561447657614475614015565b5b6000614484868287016141da565b9350506020614495868287016141da565b92505060406144a6868287016141da565b9150509250925092565b600080604083850312156144c7576144c6614015565b5b60006144d5858286016141a4565b92505060206144e6858286016141a4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145266020836140b4565b9150614531826144f0565b602082019050919050565b6000602082019050818103600083015261455581614519565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145a357607f821691505b6020821081036145b6576145b561455c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145f6826141b9565b9150614601836141b9565b9250828201905080821115614619576146186145bc565b5b92915050565b7f4d757374206b6565702066656573206174203625206f72206c65737300000000600082015250565b6000614655601c836140b4565b91506146608261461f565b602082019050919050565b6000602082019050818103600083015261468481614648565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006146e76039836140b4565b91506146f28261468b565b604082019050919050565b60006020820190508181036000830152614716816146da565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147796026836140b4565b91506147848261471d565b604082019050919050565b600060208201905081810360008301526147a88161476c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061480b6024836140b4565b9150614816826147af565b604082019050919050565b6000602082019050818103600083015261483a816147fe565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061489d6022836140b4565b91506148a882614841565b604082019050919050565b600060208201905081810360008301526148cc81614890565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061492f6025836140b4565b915061493a826148d3565b604082019050919050565b6000602082019050818103600083015261495e81614922565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006149c16023836140b4565b91506149cc82614965565b604082019050919050565b600060208201905081810360008301526149f0816149b4565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614a536031836140b4565b9150614a5e826149f7565b604082019050919050565b60006020820190508181036000830152614a8281614a46565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614abf6016836140b4565b9150614aca82614a89565b602082019050919050565b60006020820190508181036000830152614aee81614ab2565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614b776049836140b4565b9150614b8282614af5565b606082019050919050565b60006020820190508181036000830152614ba681614b6a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614c096035836140b4565b9150614c1482614bad565b604082019050919050565b60006020820190508181036000830152614c3881614bfc565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614c9b6036836140b4565b9150614ca682614c3f565b604082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b6000614cdc826141b9565b9150614ce7836141b9565b9250828202614cf5816141b9565b91508282048414831517614d0c57614d0b6145bc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d4d826141b9565b9150614d58836141b9565b925082614d6857614d67614d13565b5b828204905092915050565b6000614d7e826141b9565b9150614d89836141b9565b9250828203905081811115614da157614da06145bc565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614e148161418d565b92915050565b600060208284031215614e3057614e2f614015565b5b6000614e3e84828501614e05565b91505092915050565b6000819050919050565b6000614e6c614e67614e6284614e47565b61425c565b6141b9565b9050919050565b614e7c81614e51565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614eb78161417b565b82525050565b6000614ec98383614eae565b60208301905092915050565b6000602082019050919050565b6000614eed82614e82565b614ef78185614e8d565b9350614f0283614e9e565b8060005b83811015614f33578151614f1a8882614ebd565b9750614f2583614ed5565b925050600181019050614f06565b5085935050505092915050565b600060a082019050614f5560008301886142d6565b614f626020830187614e73565b8181036040830152614f748186614ee2565b9050614f8360608301856143f3565b614f9060808301846142d6565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a01ffb842b5d4d4d172d54a1b6b995fdf45e47b949b39ffcec3d56d2e23a7e7364736f6c63430008110033
Deployed Bytecode
0x6080604052600436106103b15760003560e01c806395d89b41116101e7578063cabcc7181161010d578063e0bf7fd1116100a0578063e884f2601161006f578063e884f26014610e23578063edbb3b2c14610e4e578063f2fde38b14610e77578063f6b4dfb414610ea0576103b8565b8063e0bf7fd114610d65578063e2f4560514610da2578063e6b63a8d14610dcd578063e71dc3f514610df8576103b8565b8063d2fcc001116100dc578063d2fcc00114610ca9578063d85ba06314610cd2578063d8c6404b14610cfd578063dd62ed3e14610d28576103b8565b8063cabcc71814610bed578063d10268ad14610c18578063d257b34f14610c41578063d25e5ea114610c7e576103b8565b8063adb873bd11610185578063c024666811610154578063c024666814610b45578063c17b5b8c14610b6e578063c876d0b914610b97578063c8c8ebe414610bc2576103b8565b8063adb873bd14610a9b578063b31efe4a14610ac6578063b62496f514610add578063bbc0c74214610b1a576103b8565b8063a20623ce116101c1578063a20623ce146109bb578063a457c2d7146109f8578063a9059cbb14610a35578063aacebbe314610a72576103b8565b806395d89b411461092a57806396880b17146109555780639a7a23d614610992576103b8565b80634a62bb65116102d7578063742bd2a51161026a5780638a8c523c116102395780638a8c523c146108945780638da5cb5b146108ab57806392136913146108d6578063924de9b714610901576103b8565b8063742bd2a5146107ec5780637571336a146108175780637bce5a04146108405780638095d5641461086b576103b8565b80636bd89cdd116102a65780636bd89cdd146107445780636ddd17131461076d57806370a0823114610798578063715018a6146107d5576103b8565b80634a62bb651461069a5780634fbee193146106c55780635945267a146107025780636a486a8e14610719576103b8565b80631f3fed8f1161034f578063313ce5671161031e578063313ce567146105dc5780633950935114610607578063439be3511461064457806349bd5a5e1461066f576103b8565b80631f3fed8f14610520578063203e727e1461054b57806323b872dd146105745780632598cdb2146105b1576103b8565b806310d5de531161038b57806310d5de53146104625780631694505e1461049f57806318160ddd146104ca5780631d777856146104f5576103b8565b806301b70dab146103bd57806306fdde03146103fa578063095ea7b314610425576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103e460048036038101906103df9190614052565b610ecb565b6040516103f1919061408e565b60405180910390f35b34801561040657600080fd5b5061040f610f86565b60405161041c9190614139565b60405180910390f35b34801561043157600080fd5b5061044c600480360381019061044791906141ef565b611018565b604051610459919061408e565b60405180910390f35b34801561046e57600080fd5b506104896004803603810190610484919061422f565b611036565b604051610496919061408e565b60405180910390f35b3480156104ab57600080fd5b506104b4611056565b6040516104c191906142bb565b60405180910390f35b3480156104d657600080fd5b506104df61107a565b6040516104ec91906142e5565b60405180910390f35b34801561050157600080fd5b5061050a611084565b60405161051791906142e5565b60405180910390f35b34801561052c57600080fd5b5061053561108a565b60405161054291906142e5565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190614300565b611090565b005b34801561058057600080fd5b5061059b6004803603810190610596919061432d565b611131565b6040516105a8919061408e565b60405180910390f35b3480156105bd57600080fd5b506105c661120a565b6040516105d391906143a1565b60405180910390f35b3480156105e857600080fd5b506105f1611230565b6040516105fe91906143d8565b60405180910390f35b34801561061357600080fd5b5061062e600480360381019061062991906141ef565b611239565b60405161063b919061408e565b60405180910390f35b34801561065057600080fd5b506106596112ec565b60405161066691906142e5565b60405180910390f35b34801561067b57600080fd5b506106846112f2565b6040516106919190614402565b60405180910390f35b3480156106a657600080fd5b506106af611316565b6040516106bc919061408e565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e7919061422f565b611329565b6040516106f9919061408e565b60405180910390f35b34801561070e57600080fd5b5061071761137f565b005b34801561072557600080fd5b5061072e611454565b60405161073b91906142e5565b60405180910390f35b34801561075057600080fd5b5061076b6004803603810190610766919061422f565b61145a565b005b34801561077957600080fd5b50610782611535565b60405161078f919061408e565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba919061422f565b611548565b6040516107cc91906142e5565b60405180910390f35b3480156107e157600080fd5b506107ea611590565b005b3480156107f857600080fd5b506108016116e8565b60405161080e91906142e5565b60405180910390f35b34801561082357600080fd5b5061083e6004803603810190610839919061441d565b6116ee565b005b34801561084c57600080fd5b506108556117e0565b60405161086291906142e5565b60405180910390f35b34801561087757600080fd5b50610892600480360381019061088d919061445d565b6117e6565b005b3480156108a057600080fd5b506108a9611900565b005b3480156108b757600080fd5b506108c06119bb565b6040516108cd9190614402565b60405180910390f35b3480156108e257600080fd5b506108eb6119e5565b6040516108f891906142e5565b60405180910390f35b34801561090d57600080fd5b5061092860048036038101906109239190614052565b6119eb565b005b34801561093657600080fd5b5061093f611a9f565b60405161094c9190614139565b60405180910390f35b34801561096157600080fd5b5061097c6004803603810190610977919061422f565b611b31565b604051610989919061408e565b60405180910390f35b34801561099e57600080fd5b506109b960048036038101906109b4919061441d565b611b51565b005b3480156109c757600080fd5b506109e260048036038101906109dd919061422f565b611c84565b6040516109ef919061408e565b60405180910390f35b348015610a0457600080fd5b50610a1f6004803603810190610a1a91906141ef565b611ca4565b604051610a2c919061408e565b60405180910390f35b348015610a4157600080fd5b50610a5c6004803603810190610a5791906141ef565b611d71565b604051610a69919061408e565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a94919061422f565b611d8f565b005b348015610aa757600080fd5b50610ab0611e6a565b604051610abd91906142e5565b60405180910390f35b348015610ad257600080fd5b50610adb611e70565b005b348015610ae957600080fd5b50610b046004803603810190610aff919061422f565b611f57565b604051610b11919061408e565b60405180910390f35b348015610b2657600080fd5b50610b2f611f76565b604051610b3c919061408e565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b67919061441d565b611f89565b005b348015610b7a57600080fd5b50610b956004803603810190610b90919061445d565b6120c9565b005b348015610ba357600080fd5b50610bac6121e3565b604051610bb9919061408e565b60405180910390f35b348015610bce57600080fd5b50610bd76121f6565b604051610be491906142e5565b60405180910390f35b348015610bf957600080fd5b50610c026121fc565b604051610c0f91906143a1565b60405180910390f35b348015610c2457600080fd5b50610c3f6004803603810190610c3a9190614052565b612222565b005b348015610c4d57600080fd5b50610c686004803603810190610c639190614300565b6122d6565b604051610c75919061408e565b60405180910390f35b348015610c8a57600080fd5b50610c9361237f565b604051610ca091906142e5565b60405180910390f35b348015610cb557600080fd5b50610cd06004803603810190610ccb919061441d565b612385565b005b348015610cde57600080fd5b50610ce7612477565b604051610cf491906142e5565b60405180910390f35b348015610d0957600080fd5b50610d1261247d565b604051610d1f919061408e565b60405180910390f35b348015610d3457600080fd5b50610d4f6004803603810190610d4a91906144b0565b612490565b604051610d5c91906142e5565b60405180910390f35b348015610d7157600080fd5b50610d8c6004803603810190610d87919061422f565b612517565b604051610d99919061408e565b60405180910390f35b348015610dae57600080fd5b50610db7612537565b604051610dc491906142e5565b60405180910390f35b348015610dd957600080fd5b50610de261253d565b604051610def91906143a1565b60405180910390f35b348015610e0457600080fd5b50610e0d612563565b604051610e1a91906142e5565b60405180910390f35b348015610e2f57600080fd5b50610e38612569565b604051610e45919061408e565b60405180910390f35b348015610e5a57600080fd5b50610e756004803603810190610e70919061422f565b612624565b005b348015610e8357600080fd5b50610e9e6004803603810190610e99919061422f565b6126ff565b005b348015610eac57600080fd5b50610eb56128c5565b604051610ec29190614402565b60405180910390f35b6000610ed5612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b9061453c565b60405180910390fd5b81600c60006101000a81548160ff021916908315150217905550819050919050565b606060038054610f959061458b565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc19061458b565b801561100e5780601f10610fe35761010080835404028352916020019161100e565b820191906000526020600020905b815481529060010190602001808311610ff157829003601f168201915b5050505050905090565b600061102c611025612901565b8484612909565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff81565b6000600254905090565b601b5481565b60195481565b611098612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e9061453c565b60405180910390fd5b80600a8190555050565b600061113e848484612ad2565b6111ff8461114a612901565b6111fa85604051806060016040528060288152602001614fc160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111b0612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b612909565b600190509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009905090565b60006112e2611246612901565b846112dd8560016000611257612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128eb90919063ffffffff16565b612909565b6001905092915050565b60135481565b7f0000000000000000000000005221dd1dd22cb4cf5ccc8e6c05fdd7781cd2282c81565b600c60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611387612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140d9061453c565b60405180910390fd5b611452306114226119bb565b61144d600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611548565b61388f565b565b60155481565b611462612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e89061453c565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611598612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e9061453c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60175481565b6116f6612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c9061453c565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b6117ee612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118749061453c565b60405180910390fd5b8260128190555081601381905550806014819055506014546013546012546118a591906145eb565b6118af91906145eb565b601181905550600660115411156118fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f29061466b565b60405180910390fd5b505050565b611908612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198e9061453c565b60405180910390fd5b6001600c60016101000a81548160ff02191690831515021790555043601c81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b6119f3612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a799061453c565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b606060048054611aae9061458b565b80601f0160208091040260200160405190810160405280929190818152602001828054611ada9061458b565b8015611b275780601f10611afc57610100808354040283529160200191611b27565b820191906000526020600020905b815481529060010190602001808311611b0a57829003601f168201915b5050505050905090565b601f6020528060005260406000206000915054906101000a900460ff1681565b611b59612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdf9061453c565b60405180910390fd5b7f0000000000000000000000005221dd1dd22cb4cf5ccc8e6c05fdd7781cd2282c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d906146fd565b60405180910390fd5b611c808282613b22565b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b6000611d67611cb1612901565b84611d6285604051806060016040528060258152602001614fe96025913960016000611cdb612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b612909565b6001905092915050565b6000611d85611d7e612901565b8484612ad2565b6001905092915050565b611d97612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1d9061453c565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b611e78612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efe9061453c565b60405180910390fd5b611f0f6119bb565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611f54573d6000803e3d6000fd5b50565b602080528060005260406000206000915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b611f91612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612020576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120179061453c565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120bd919061408e565b60405180910390a25050565b6120d1612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612160576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121579061453c565b60405180910390fd5b82601681905550816017819055508060188190555060185460175460165461218891906145eb565b61219291906145eb565b601581905550600660155411156121de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d59061466b565b60405180910390fd5b505050565b601060009054906101000a900460ff1681565b600a5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61222a612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b09061453c565b60405180910390fd5b80600c60036101000a81548160ff02191690831515021790555050565b60006122e0612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461236f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123669061453c565b60405180910390fd5b81600b8190555060019050919050565b601a5481565b61238d612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461241c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124139061453c565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b600c60039054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b600b5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b6000612573612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f99061453c565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b61262c612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b29061453c565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612707612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278d9061453c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fc9061478f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081836128f991906145eb565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f90614821565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129de906148b3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ac591906142e5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3890614945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba7906149d7565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c545750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8a90614a69565b60405180910390fd5b60008103612cac57612ca78383600061388f565b613835565b600c60009054906101000a900460ff161561326857612cc96119bb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d375750612d076119bb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d705750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612daa575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612dc35750600560149054906101000a900460ff16155b1561326757600c60019054906101000a900460ff16612ebd57601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e7d5750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb390614ad5565b60405180910390fd5b5b601060009054906101000a900460ff161561308557612eda6119bb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612f6157507f000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fb957507f0000000000000000000000005221dd1dd22cb4cf5ccc8e6c05fdd7781cd2282c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156130845743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061303f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303690614b8d565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131285750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561317757600a54811115613172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316990614c1f565b60405180910390fd5b613266565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561321a5750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561326557600a54811115613264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325b90614cb1565b60405180910390fd5b5b5b5b5b600c60039054906101000a900460ff1680156132d057507f0000000000000000000000005221dd1dd22cb4cf5ccc8e6c05fdd7781cd2282c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561331c57507310ed43c718714eb63d5aa57b78b54704e256024e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561337a576001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061338530611548565b90506000600b5482101590508080156133aa5750600c60029054906101000a900460ff165b80156133c35750600560149054906101000a900460ff16155b80156134185750602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561346e5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134c45750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613508576001600560146101000a81548160ff0219169083151502179055506134ec613bc3565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135be5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135c857600090505b6000811561382557602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561362b57506000601554115b156136ea576064601554866136409190614cd1565b61364a9190614d42565b90506015546017548261365d9190614cd1565b6136679190614d42565b601a600082825461367891906145eb565b92505081905550601554601654826136909190614cd1565b61369a9190614d42565b601960008282546136ab91906145eb565b92505081905550601554601854826136c39190614cd1565b6136cd9190614d42565b601b60008282546136de91906145eb565b92505081905550613801565b602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561374557506000601154115b156138005760646011548661375a9190614cd1565b6137649190614d42565b9050601154601354826137779190614cd1565b6137819190614d42565b601a600082825461379291906145eb565b92505081905550601154601254826137aa9190614cd1565b6137b49190614d42565b601960008282546137c591906145eb565b92505081905550601154601454826137dd9190614cd1565b6137e79190614d42565b601b60008282546137f891906145eb565b925050819055505b5b600a8111156138165761381587308361388f565b5b80856138229190614d73565b94505b61383087878761388f565b505050505b505050565b6000838311158290613882576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138799190614139565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036138fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138f590614945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361396d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613964906149d7565b60405180910390fd5b613978838383613dd3565b6139e381604051806060016040528060268152602001614f9b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a76816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128eb90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b1591906142e5565b60405180910390a3505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613bce30611548565b90506000601b54601a54601954613be591906145eb565b613bef91906145eb565b90506000821480613c005750606481145b15613c0c575050613dd1565b6000829050613c1a81613dd8565b600047905060008360195483613c309190614cd1565b613c3a9190614d42565b9050600084601a5484613c4d9190614cd1565b613c579190614d42565b9050600085601b5485613c6a9190614cd1565b613c749190614d42565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613cde573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613d47573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613db0573d6000803e3d6000fd5b506000601b8190555060006019819055506000601a81905550505050505050505b565b505050565b6000600267ffffffffffffffff811115613df557613df4614da7565b5b604051908082528060200260200182016040528015613e235781602001602082028036833780820191505090505b5090503081600081518110613e3b57613e3a614dd6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f049190614e1a565b81600181518110613f1857613f17614dd6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f7d307f000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff84612909565b7f000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fdf959493929190614f40565b600060405180830381600087803b158015613ff957600080fd5b505af115801561400d573d6000803e3d6000fd5b505050505050565b600080fd5b60008115159050919050565b61402f8161401a565b811461403a57600080fd5b50565b60008135905061404c81614026565b92915050565b60006020828403121561406857614067614015565b5b60006140768482850161403d565b91505092915050565b6140888161401a565b82525050565b60006020820190506140a3600083018461407f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140e35780820151818401526020810190506140c8565b60008484015250505050565b6000601f19601f8301169050919050565b600061410b826140a9565b61411581856140b4565b93506141258185602086016140c5565b61412e816140ef565b840191505092915050565b600060208201905081810360008301526141538184614100565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141868261415b565b9050919050565b6141968161417b565b81146141a157600080fd5b50565b6000813590506141b38161418d565b92915050565b6000819050919050565b6141cc816141b9565b81146141d757600080fd5b50565b6000813590506141e9816141c3565b92915050565b6000806040838503121561420657614205614015565b5b6000614214858286016141a4565b9250506020614225858286016141da565b9150509250929050565b60006020828403121561424557614244614015565b5b6000614253848285016141a4565b91505092915050565b6000819050919050565b600061428161427c6142778461415b565b61425c565b61415b565b9050919050565b600061429382614266565b9050919050565b60006142a582614288565b9050919050565b6142b58161429a565b82525050565b60006020820190506142d060008301846142ac565b92915050565b6142df816141b9565b82525050565b60006020820190506142fa60008301846142d6565b92915050565b60006020828403121561431657614315614015565b5b6000614324848285016141da565b91505092915050565b60008060006060848603121561434657614345614015565b5b6000614354868287016141a4565b9350506020614365868287016141a4565b9250506040614376868287016141da565b9150509250925092565b600061438b8261415b565b9050919050565b61439b81614380565b82525050565b60006020820190506143b66000830184614392565b92915050565b600060ff82169050919050565b6143d2816143bc565b82525050565b60006020820190506143ed60008301846143c9565b92915050565b6143fc8161417b565b82525050565b600060208201905061441760008301846143f3565b92915050565b6000806040838503121561443457614433614015565b5b6000614442858286016141a4565b92505060206144538582860161403d565b9150509250929050565b60008060006060848603121561447657614475614015565b5b6000614484868287016141da565b9350506020614495868287016141da565b92505060406144a6868287016141da565b9150509250925092565b600080604083850312156144c7576144c6614015565b5b60006144d5858286016141a4565b92505060206144e6858286016141a4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145266020836140b4565b9150614531826144f0565b602082019050919050565b6000602082019050818103600083015261455581614519565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145a357607f821691505b6020821081036145b6576145b561455c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145f6826141b9565b9150614601836141b9565b9250828201905080821115614619576146186145bc565b5b92915050565b7f4d757374206b6565702066656573206174203625206f72206c65737300000000600082015250565b6000614655601c836140b4565b91506146608261461f565b602082019050919050565b6000602082019050818103600083015261468481614648565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006146e76039836140b4565b91506146f28261468b565b604082019050919050565b60006020820190508181036000830152614716816146da565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147796026836140b4565b91506147848261471d565b604082019050919050565b600060208201905081810360008301526147a88161476c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061480b6024836140b4565b9150614816826147af565b604082019050919050565b6000602082019050818103600083015261483a816147fe565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061489d6022836140b4565b91506148a882614841565b604082019050919050565b600060208201905081810360008301526148cc81614890565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061492f6025836140b4565b915061493a826148d3565b604082019050919050565b6000602082019050818103600083015261495e81614922565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006149c16023836140b4565b91506149cc82614965565b604082019050919050565b600060208201905081810360008301526149f0816149b4565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614a536031836140b4565b9150614a5e826149f7565b604082019050919050565b60006020820190508181036000830152614a8281614a46565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614abf6016836140b4565b9150614aca82614a89565b602082019050919050565b60006020820190508181036000830152614aee81614ab2565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614b776049836140b4565b9150614b8282614af5565b606082019050919050565b60006020820190508181036000830152614ba681614b6a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614c096035836140b4565b9150614c1482614bad565b604082019050919050565b60006020820190508181036000830152614c3881614bfc565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614c9b6036836140b4565b9150614ca682614c3f565b604082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b6000614cdc826141b9565b9150614ce7836141b9565b9250828202614cf5816141b9565b91508282048414831517614d0c57614d0b6145bc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d4d826141b9565b9150614d58836141b9565b925082614d6857614d67614d13565b5b828204905092915050565b6000614d7e826141b9565b9150614d89836141b9565b9250828203905081811115614da157614da06145bc565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614e148161418d565b92915050565b600060208284031215614e3057614e2f614015565b5b6000614e3e84828501614e05565b91505092915050565b6000819050919050565b6000614e6c614e67614e6284614e47565b61425c565b6141b9565b9050919050565b614e7c81614e51565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614eb78161417b565b82525050565b6000614ec98383614eae565b60208301905092915050565b6000602082019050919050565b6000614eed82614e82565b614ef78185614e8d565b9350614f0283614e9e565b8060005b83811015614f33578151614f1a8882614ebd565b9750614f2583614ed5565b925050600181019050614f06565b5085935050505092915050565b600060a082019050614f5560008301886142d6565b614f626020830187614e73565b8181036040830152614f748186614ee2565b9050614f8360608301856143f3565b614f9060808301846142d6565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a01ffb842b5d4d4d172d54a1b6b995fdf45e47b949b39ffcec3d56d2e23a7e7364736f6c63430008110033
Deployed Bytecode Sourcemap
18329:13326:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22843:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8658:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9571:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19785:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18375:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8978:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19662:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19584:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23297:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9748:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18579:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8878:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10111:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19371:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18433:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18899:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25737:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31400:134;;;;;;;;;;;;;:::i;:::-;;19440:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25612:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18979:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9094:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13061:148;;;;;;;;;;;;;:::i;:::-;;19513:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23434:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19334:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23837:363;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22716:119;;;;;;;;;;;;;:::i;:::-;;12847:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19475:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23728:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8766:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19856:59;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24885:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19201:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10337:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9229:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25333:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19549:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31542:110;;;;;;;;;;;;;:::i;:::-;;19922:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18939:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24588:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24208:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19251:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18781:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18648:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24778:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23132:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19624:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23586:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19300:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19017:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9412:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19726:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18843:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18510:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19406:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22990:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25483:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13217:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18726:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22843:139;22911:4;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22944:6:::1;22927:14;;:23;;;;;;;;;;;;;;;;;;22968:6;22961:13;;22843:139:::0;;;:::o;8658:100::-;8712:13;8745:5;8738:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8658:100;:::o;9571:169::-;9654:4;9671:39;9680:12;:10;:12::i;:::-;9694:7;9703:6;9671:8;:39::i;:::-;9728:4;9721:11;;9571:169;;;;:::o;19785:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;18375:51::-;;;:::o;8978:108::-;9039:7;9066:12;;9059:19;;8978:108;:::o;19662:28::-;;;;:::o;19584:33::-;;;;:::o;23297:127::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23402:14:::1;23379:20;:37;;;;23297:127:::0;:::o;9748:355::-;9888:4;9905:36;9915:6;9923:9;9934:6;9905:9;:36::i;:::-;9952:121;9961:6;9969:12;:10;:12::i;:::-;9983:89;10021:6;9983:89;;;;;;;;;;;;;;;;;:11;:19;9995:6;9983:19;;;;;;;;;;;;;;;:33;10003:12;:10;:12::i;:::-;9983:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;9952:8;:121::i;:::-;10091:4;10084:11;;9748:355;;;;;:::o;18579:51::-;;;;;;;;;;;;;:::o;8878:92::-;8936:5;8961:1;8954:8;;8878:92;:::o;10111:218::-;10199:4;10216:83;10225:12;:10;:12::i;:::-;10239:7;10248:50;10287:10;10248:11;:25;10260:12;:10;:12::i;:::-;10248:25;;;;;;;;;;;;;;;:34;10274:7;10248:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;10216:8;:83::i;:::-;10317:4;10310:11;;10111:218;;;;:::o;19371:28::-;;;;:::o;18433:38::-;;;:::o;18899:33::-;;;;;;;;;;;;;:::o;25737:125::-;25802:4;25826:19;:28;25846:7;25826:28;;;;;;;;;;;;;;;;;;;;;;;;;25819:35;;25737:125;;;:::o;31400:134::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31459::::1;31483:4;31490:7;:5;:7::i;:::-;31499:26;31509:15;;;;;;;;;;;31499:9;:26::i;:::-;31459:15;:67::i;:::-;31400:134::o:0;19440:28::-;;;;:::o;25612:116::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25710:9:::1;25688:11;;:32;;;;;;;;;;;;;;;;;;25612:116:::0;:::o;18979:31::-;;;;;;;;;;;;;:::o;9094:127::-;9168:7;9195:9;:18;9205:7;9195:18;;;;;;;;;;;;;;;;9188:25;;9094:127;;;:::o;13061:148::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13168:1:::1;13131:40;;13152:6;;;;;;;;;;;13131:40;;;;;;;;;;;;13199:1;13182:6;;:19;;;;;;;;;;;;;;;;;;13061:148::o:0;19513:29::-;;;;:::o;23434:144::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23566:4:::1;23524:31;:39;23556:6;23524:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23434:144:::0;;:::o;19334:30::-;;;;:::o;23837:363::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23970:13:::1;23952:15;:31;;;;24010:11;23994:13;:27;;;;24045:8;24032:10;:21;;;;24113:10;;24097:13;;24079:15;;:31;;;;:::i;:::-;:44;;;;:::i;:::-;24064:12;:59;;;;24158:1;24142:12;;:17;;24134:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;23837:363:::0;;;:::o;22716:119::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22787:4:::1;22771:13;;:20;;;;;;;;;;;;;;;;;;22815:12;22802:10;:25;;;;22716:119::o:0;12847:79::-;12885:7;12912:6;;;;;;;;;;;12905:13;;12847:79;:::o;19475:31::-;;;;:::o;23728:101::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23814:7:::1;23800:11;;:21;;;;;;;;;;;;;;;;;;23728:101:::0;:::o;8766:104::-;8822:13;8855:7;8848:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8766:104;:::o;19856:59::-;;;;;;;;;;;;;;;;;;;;;;:::o;24885:244::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24992:13:::1;24984:21;;:4;:21;;::::0;24976:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25080:41;25109:4;25115:5;25080:28;:41::i;:::-;24885:244:::0;;:::o;19201:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;10337:269::-;10430:4;10447:129;10456:12;:10;:12::i;:::-;10470:7;10479:96;10518:15;10479:96;;;;;;;;;;;;;;;;;:11;:25;10491:12;:10;:12::i;:::-;10479:25;;;;;;;;;;;;;;;:34;10505:7;10479:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;10447:8;:129::i;:::-;10594:4;10587:11;;10337:269;;;;:::o;9229:175::-;9315:4;9332:42;9342:12;:10;:12::i;:::-;9356:9;9367:6;9332:9;:42::i;:::-;9392:4;9385:11;;9229:175;;;;:::o;25333:142::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25448:18:::1;25422:15;;:45;;;;;;;;;;;;;;;;;;25333:142:::0;:::o;19549:26::-;;;;:::o;31542:110::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31604:7:::1;:5;:7::i;:::-;31596:25;;:48;31622:21;31596:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;31542:110::o:0;19922:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;18939:33::-;;;;;;;;;;;;;:::o;24588:182::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24704:8:::1;24673:19;:28;24693:7;24673:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24744:7;24728:34;;;24753:8;24728:34;;;;;;:::i;:::-;;;;;;;;24588:182:::0;;:::o;24208:372::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24343:13:::1;24324:16;:32;;;;24384:11;24367:14;:28;;;;24420:8;24406:11;:22;;;;24491:11;;24474:14;;24455:16;;:33;;;;:::i;:::-;:47;;;;:::i;:::-;24439:13;:63;;;;24538:1;24521:13;;:18;;24513:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;24208:372:::0;;;:::o;19251:40::-;;;;;;;;;;;;;:::o;18781:54::-;;;;:::o;18648:48::-;;;;;;;;;;;;;:::o;24778:99::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24862:7:::1;24845:14;;:24;;;;;;;;;;;;;;;;;;24778:99:::0;:::o;23132:157::-;23213:4;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23250:9:::1;23229:18;:30;;;;23277:4;23270:11;;23132:157:::0;;;:::o;19624:31::-;;;;:::o;23586:134::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23708:4:::1;23671:26;:34;23698:6;23671:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;23586:134:::0;;:::o;19300:27::-;;;;:::o;19017:34::-;;;;;;;;;;;;;:::o;9412:151::-;9501:7;9528:11;:18;9540:5;9528:18;;;;;;;;;;;;;;;:27;9547:7;9528:27;;;;;;;;;;;;;;;;9521:34;;9412:151;;;;:::o;19726:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;18843:47::-;;;;:::o;18510:49::-;;;;;;;;;;;;;:::o;19406:25::-;;;;:::o;22990:134::-;23050:4;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23089:5:::1;23066:20;;:28;;;;;;;;;;;;;;;;;;23112:4;23105:11;;22990:134:::0;:::o;25483:120::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25585:9:::1;25561:13;;:34;;;;;;;;;;;;;;;;;;25483:120:::0;:::o;13217:244::-;12984:12;:10;:12::i;:::-;12974:22;;:6;;;;;;;;;;;:22;;;12966:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13326:1:::1;13306:22;;:8;:22;;::::0;13298:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13416:8;13387:38;;13408:6;;;;;;;;;;;13387:38;;;;;;;;;;;;13445:8;13436:6;;:17;;;;;;;;;;;;;;;;;;13217:244:::0;:::o;18726:46::-;;;;;;;;;;;;;:::o;5409:98::-;5467:7;5498:1;5494;:5;;;;:::i;:::-;5487:12;;5409:98;;;;:::o;93:::-;146:7;173:10;166:17;;93:98;:::o;12007:380::-;12160:1;12143:19;;:5;:19;;;12135:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12241:1;12222:21;;:7;:21;;;12214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12325:6;12295:11;:18;12307:5;12295:18;;;;;;;;;;;;;;;:27;12314:7;12295:27;;;;;;;;;;;;;;;:36;;;;12363:7;12347:32;;12356:5;12347:32;;;12372:6;12347:32;;;;;;:::i;:::-;;;;;;;;12007:380;;;:::o;25920:3613::-;26068:1;26052:18;;:4;:18;;;26044:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26145:1;26131:16;;:2;:16;;;26123:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26207:10;:14;26218:2;26207:14;;;;;;;;;;;;;;;;;;;;;;;;;26206:15;:36;;;;;26226:10;:16;26237:4;26226:16;;;;;;;;;;;;;;;;;;;;;;;;;26225:17;26206:36;26198:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;26321:1;26311:6;:11;26308:92;;26339:28;26355:4;26361:2;26365:1;26339:15;:28::i;:::-;26382:7;;26308:92;26413:14;;;;;;;;;;;26410:1337;;;26473:7;:5;:7::i;:::-;26465:15;;:4;:15;;;;:49;;;;;26507:7;:5;:7::i;:::-;26501:13;;:2;:13;;;;26465:49;:86;;;;;26549:1;26535:16;;:2;:16;;;;26465:86;:128;;;;;26586:6;26572:21;;:2;:21;;;;26465:128;:158;;;;;26615:8;;;;;;;;;;;26614:9;26465:158;26443:1293;;;26662:13;;;;;;;;;;;26658:148;;26707:19;:25;26727:4;26707:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26736:19;:23;26756:2;26736:23;;;;;;;;;;;;;;;;;;;;;;;;;26707:52;26699:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;26658:148;26828:20;;;;;;;;;;;26824:423;;;26882:7;:5;:7::i;:::-;26876:13;;:2;:13;;;;:47;;;;;26907:15;26893:30;;:2;:30;;;;26876:47;:79;;;;;26941:13;26927:28;;:2;:28;;;;26876:79;26872:356;;;27033:12;26991:28;:39;27020:9;26991:39;;;;;;;;;;;;;;;;:54;26983:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27192:12;27150:28;:39;27179:9;27150:39;;;;;;;;;;;;;;;:54;;;;26872:356;26824:423;27269:25;:31;27295:4;27269:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;27305:31;:35;27337:2;27305:35;;;;;;;;;;;;;;;;;;;;;;;;;27304:36;27269:71;27265:456;;;27383:20;;27373:6;:30;;27365:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;27265:456;;;27508:25;:29;27534:2;27508:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;27542:31;:37;27574:4;27542:37;;;;;;;;;;;;;;;;;;;;;;;;;27541:38;27508:71;27504:217;;;27622:20;;27612:6;:30;;27604:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;27504:217;27265:456;26443:1293;26410:1337;27775:14;;;;;;;;;;;:51;;;;;27813:13;27807:19;;:2;:19;;;;27775:51;:126;;;;;27858:42;27844:57;;:2;:57;;;;27775:126;27757:205;;;27946:4;27929:10;:14;27940:2;27929:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;27757:205;27972:28;28003:24;28021:4;28003:9;:24::i;:::-;27972:55;;28038:12;28077:18;;28053:20;:42;;28038:57;;28123:7;:35;;;;;28147:11;;;;;;;;;;;28123:35;:61;;;;;28176:8;;;;;;;;;;;28175:9;28123:61;:107;;;;;28201:25;:29;28227:2;28201:29;;;;;;;;;;;;;;;;;;;;;;;;;28123:107;:150;;;;;28248:19;:25;28268:4;28248:25;;;;;;;;;;;;;;;;;;;;;;;;;28247:26;28123:150;:191;;;;;28291:19;:23;28311:2;28291:23;;;;;;;;;;;;;;;;;;;;;;;;;28290:24;28123:191;28106:318;;;28352:4;28341:8;;:15;;;;;;;;;;;;;;;;;;28371:10;:8;:10::i;:::-;28407:5;28396:8;;:16;;;;;;;;;;;;;;;;;;28106:318;28434:12;28450:8;;;;;;;;;;;28449:9;28434:24;;28472:19;:25;28492:4;28472:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28501:19;:23;28521:2;28501:23;;;;;;;;;;;;;;;;;;;;;;;;;28472:52;28469:99;;;28551:5;28541:15;;28469:99;28580:12;28610:7;28607:875;;;28637:25;:29;28663:2;28637:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;28686:1;28670:13;;:17;28637:50;28633:705;;;28735:3;28721:13;;28714:6;:20;;;;:::i;:::-;:24;;;;:::i;:::-;28707:31;;28801:13;;28784:14;;28777:4;:21;;;;:::i;:::-;:37;;;;:::i;:::-;28757:16;;:57;;;;;;;:::i;:::-;;;;;;;;28881:13;;28862:16;;28855:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;28833:18;;:61;;;;;;;:::i;:::-;;;;;;;;28951:13;;28937:11;;28930:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;28913:13;;:51;;;;;;;:::i;:::-;;;;;;;;28633:705;;;29002:25;:31;29028:4;29002:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;29052:1;29037:12;;:16;29002:51;28999:339;;;29101:3;29088:12;;29081:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;29074:30;;29166:12;;29150:13;;29143:4;:20;;;;:::i;:::-;:35;;;;:::i;:::-;29123:16;;:55;;;;;;;:::i;:::-;;;;;;;;29244:12;;29226:15;;29219:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;29197:18;;:59;;;;;;;:::i;:::-;;;;;;;;29310:12;;29298:10;;29292:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;29275:13;;:47;;;;;;;:::i;:::-;;;;;;;;28999:339;28633:705;29362:2;29355:4;:9;29352:90;;;29384:42;29400:4;29414;29421;29384:15;:42::i;:::-;29352:90;29466:4;29456:14;;;;;:::i;:::-;;;28607:875;29492:33;29508:4;29514:2;29518:6;29492:15;:33::i;:::-;26033:3500;;;;25920:3613;;;;:::o;5928:240::-;6048:7;6106:1;6101;:6;;6109:12;6093:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6148:1;6144;:5;6137:12;;5928:240;;;;;:::o;10614:573::-;10772:1;10754:20;;:6;:20;;;10746:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10856:1;10835:23;;:9;:23;;;10827:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10911:47;10932:6;10940:9;10951:6;10911:20;:47::i;:::-;10991:71;11013:6;10991:71;;;;;;;;;;;;;;;;;:9;:17;11001:6;10991:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;10971:9;:17;10981:6;10971:17;;;;;;;;;;;;;;;:91;;;;11096:32;11121:6;11096:9;:20;11106:9;11096:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11073:9;:20;11083:9;11073:20;;;;;;;;;;;;;;;:55;;;;11161:9;11144:35;;11153:6;11144:35;;;11172:6;11144:35;;;;;;:::i;:::-;;;;;;;;10614:573;;;:::o;25137:188::-;25254:5;25220:25;:31;25246:4;25220:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25311:5;25277:40;;25305:4;25277:40;;;;;;;;;;;;25137:188;;:::o;30463:929::-;30502:23;30528:24;30546:4;30528:9;:24::i;:::-;30502:50;;30563:25;30631:13;;30612:16;;30591:18;;:37;;;;:::i;:::-;:53;;;;:::i;:::-;30563:81;;30679:1;30660:15;:20;:48;;;;30705:3;30684:17;:24;30660:48;30657:62;;;30711:7;;;;30657:62;30731:26;30760:15;30731:44;;30788:36;30805:18;30788:16;:36::i;:::-;30838:18;30859:21;30838:42;;30893:23;30949:17;30930:18;;30919:10;:29;;;;:::i;:::-;:47;;;;:::i;:::-;30893:73;;30977:21;31029:17;31012:16;;31001:10;:27;;;;:::i;:::-;:45;;;;:::i;:::-;30977:69;;31057:18;31103:17;31089:13;;31078:10;:24;;;;:::i;:::-;:42;;;;:::i;:::-;31057:63;;31141:15;;;;;;;;;;;31133:33;;:50;31167:15;31133:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31202:13;;;;;;;;;;;31194:31;;:46;31226:13;31194:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31259:11;;;;;;;;;;;31251:29;;:41;31281:10;31251:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31319:1;31303:13;:17;;;;31352:1;31331:18;:22;;;;31383:1;31364:16;:20;;;;30491:901;;;;;;;30463:929;:::o;12395:125::-;;;;:::o;29541:476::-;29607:21;29645:1;29631:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29607:40;;29676:4;29658;29663:1;29658:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29702:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29692:4;29697:1;29692:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29737:62;29754:4;29769:15;29787:11;29737:8;:62::i;:::-;29810:15;:66;;;29891:11;29917:1;29934:4;29961;29981:15;29810:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29596:421;29541:476;:::o;88:117:1:-;197:1;194;187:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:323::-;747:6;796:2;784:9;775:7;771:23;767:32;764:119;;;802:79;;:::i;:::-;764:119;922:1;947:50;989:7;980:6;969:9;965:22;947:50;:::i;:::-;937:60;;893:114;691:323;;;;:::o;1020:109::-;1101:21;1116:5;1101:21;:::i;:::-;1096:3;1089:34;1020:109;;:::o;1135:210::-;1222:4;1260:2;1249:9;1245:18;1237:26;;1273:65;1335:1;1324:9;1320:17;1311:6;1273:65;:::i;:::-;1135:210;;;;:::o;1351:99::-;1403:6;1437:5;1431:12;1421:22;;1351:99;;;:::o;1456:169::-;1540:11;1574:6;1569:3;1562:19;1614:4;1609:3;1605:14;1590:29;;1456:169;;;;:::o;1631:246::-;1712:1;1722:113;1736:6;1733:1;1730:13;1722:113;;;1821:1;1816:3;1812:11;1806:18;1802:1;1797:3;1793:11;1786:39;1758:2;1755:1;1751:10;1746:15;;1722:113;;;1869:1;1860:6;1855:3;1851:16;1844:27;1693:184;1631:246;;;:::o;1883:102::-;1924:6;1975:2;1971:7;1966:2;1959:5;1955:14;1951:28;1941:38;;1883:102;;;:::o;1991:377::-;2079:3;2107:39;2140:5;2107:39;:::i;:::-;2162:71;2226:6;2221:3;2162:71;:::i;:::-;2155:78;;2242:65;2300:6;2295:3;2288:4;2281:5;2277:16;2242:65;:::i;:::-;2332:29;2354:6;2332:29;:::i;:::-;2327:3;2323:39;2316:46;;2083:285;1991:377;;;;:::o;2374:313::-;2487:4;2525:2;2514:9;2510:18;2502:26;;2574:9;2568:4;2564:20;2560:1;2549:9;2545:17;2538:47;2602:78;2675:4;2666:6;2602:78;:::i;:::-;2594:86;;2374:313;;;;:::o;2693:126::-;2730:7;2770:42;2763:5;2759:54;2748:65;;2693:126;;;:::o;2825:96::-;2862:7;2891:24;2909:5;2891:24;:::i;:::-;2880:35;;2825:96;;;:::o;2927:122::-;3000:24;3018:5;3000:24;:::i;:::-;2993:5;2990:35;2980:63;;3039:1;3036;3029:12;2980:63;2927:122;:::o;3055:139::-;3101:5;3139:6;3126:20;3117:29;;3155:33;3182:5;3155:33;:::i;:::-;3055:139;;;;:::o;3200:77::-;3237:7;3266:5;3255:16;;3200:77;;;:::o;3283:122::-;3356:24;3374:5;3356:24;:::i;:::-;3349:5;3346:35;3336:63;;3395:1;3392;3385:12;3336:63;3283:122;:::o;3411:139::-;3457:5;3495:6;3482:20;3473:29;;3511:33;3538:5;3511:33;:::i;:::-;3411:139;;;;:::o;3556:474::-;3624:6;3632;3681:2;3669:9;3660:7;3656:23;3652:32;3649:119;;;3687:79;;:::i;:::-;3649:119;3807:1;3832:53;3877:7;3868:6;3857:9;3853:22;3832:53;:::i;:::-;3822:63;;3778:117;3934:2;3960:53;4005:7;3996:6;3985:9;3981:22;3960:53;:::i;:::-;3950:63;;3905:118;3556:474;;;;;:::o;4036:329::-;4095:6;4144:2;4132:9;4123:7;4119:23;4115:32;4112:119;;;4150:79;;:::i;:::-;4112:119;4270:1;4295:53;4340:7;4331:6;4320:9;4316:22;4295:53;:::i;:::-;4285:63;;4241:117;4036:329;;;;:::o;4371:60::-;4399:3;4420:5;4413:12;;4371:60;;;:::o;4437:142::-;4487:9;4520:53;4538:34;4547:24;4565:5;4547:24;:::i;:::-;4538:34;:::i;:::-;4520:53;:::i;:::-;4507:66;;4437:142;;;:::o;4585:126::-;4635:9;4668:37;4699:5;4668:37;:::i;:::-;4655:50;;4585:126;;;:::o;4717:153::-;4794:9;4827:37;4858:5;4827:37;:::i;:::-;4814:50;;4717:153;;;:::o;4876:185::-;4990:64;5048:5;4990:64;:::i;:::-;4985:3;4978:77;4876:185;;:::o;5067:276::-;5187:4;5225:2;5214:9;5210:18;5202:26;;5238:98;5333:1;5322:9;5318:17;5309:6;5238:98;:::i;:::-;5067:276;;;;:::o;5349:118::-;5436:24;5454:5;5436:24;:::i;:::-;5431:3;5424:37;5349:118;;:::o;5473:222::-;5566:4;5604:2;5593:9;5589:18;5581:26;;5617:71;5685:1;5674:9;5670:17;5661:6;5617:71;:::i;:::-;5473:222;;;;:::o;5701:329::-;5760:6;5809:2;5797:9;5788:7;5784:23;5780:32;5777:119;;;5815:79;;:::i;:::-;5777:119;5935:1;5960:53;6005:7;5996:6;5985:9;5981:22;5960:53;:::i;:::-;5950:63;;5906:117;5701:329;;;;:::o;6036:619::-;6113:6;6121;6129;6178:2;6166:9;6157:7;6153:23;6149:32;6146:119;;;6184:79;;:::i;:::-;6146:119;6304:1;6329:53;6374:7;6365:6;6354:9;6350:22;6329:53;:::i;:::-;6319:63;;6275:117;6431:2;6457:53;6502:7;6493:6;6482:9;6478:22;6457:53;:::i;:::-;6447:63;;6402:118;6559:2;6585:53;6630:7;6621:6;6610:9;6606:22;6585:53;:::i;:::-;6575:63;;6530:118;6036:619;;;;;:::o;6661:104::-;6706:7;6735:24;6753:5;6735:24;:::i;:::-;6724:35;;6661:104;;;:::o;6771:142::-;6874:32;6900:5;6874:32;:::i;:::-;6869:3;6862:45;6771:142;;:::o;6919:254::-;7028:4;7066:2;7055:9;7051:18;7043:26;;7079:87;7163:1;7152:9;7148:17;7139:6;7079:87;:::i;:::-;6919:254;;;;:::o;7179:86::-;7214:7;7254:4;7247:5;7243:16;7232:27;;7179:86;;;:::o;7271:112::-;7354:22;7370:5;7354:22;:::i;:::-;7349:3;7342:35;7271:112;;:::o;7389:214::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:67;7593:1;7582:9;7578:17;7569:6;7529:67;:::i;:::-;7389:214;;;;:::o;7609:118::-;7696:24;7714:5;7696:24;:::i;:::-;7691:3;7684:37;7609:118;;:::o;7733:222::-;7826:4;7864:2;7853:9;7849:18;7841:26;;7877:71;7945:1;7934:9;7930:17;7921:6;7877:71;:::i;:::-;7733:222;;;;:::o;7961:468::-;8026:6;8034;8083:2;8071:9;8062:7;8058:23;8054:32;8051:119;;;8089:79;;:::i;:::-;8051:119;8209:1;8234:53;8279:7;8270:6;8259:9;8255:22;8234:53;:::i;:::-;8224:63;;8180:117;8336:2;8362:50;8404:7;8395:6;8384:9;8380:22;8362:50;:::i;:::-;8352:60;;8307:115;7961:468;;;;;:::o;8435:619::-;8512:6;8520;8528;8577:2;8565:9;8556:7;8552:23;8548:32;8545:119;;;8583:79;;:::i;:::-;8545:119;8703:1;8728:53;8773:7;8764:6;8753:9;8749:22;8728:53;:::i;:::-;8718:63;;8674:117;8830:2;8856:53;8901:7;8892:6;8881:9;8877:22;8856:53;:::i;:::-;8846:63;;8801:118;8958:2;8984:53;9029:7;9020:6;9009:9;9005:22;8984:53;:::i;:::-;8974:63;;8929:118;8435:619;;;;;:::o;9060:474::-;9128:6;9136;9185:2;9173:9;9164:7;9160:23;9156:32;9153:119;;;9191:79;;:::i;:::-;9153:119;9311:1;9336:53;9381:7;9372:6;9361:9;9357:22;9336:53;:::i;:::-;9326:63;;9282:117;9438:2;9464:53;9509:7;9500:6;9489:9;9485:22;9464:53;:::i;:::-;9454:63;;9409:118;9060:474;;;;;:::o;9540:182::-;9680:34;9676:1;9668:6;9664:14;9657:58;9540:182;:::o;9728:366::-;9870:3;9891:67;9955:2;9950:3;9891:67;:::i;:::-;9884:74;;9967:93;10056:3;9967:93;:::i;:::-;10085:2;10080:3;10076:12;10069:19;;9728:366;;;:::o;10100:419::-;10266:4;10304:2;10293:9;10289:18;10281:26;;10353:9;10347:4;10343:20;10339:1;10328:9;10324:17;10317:47;10381:131;10507:4;10381:131;:::i;:::-;10373:139;;10100:419;;;:::o;10525:180::-;10573:77;10570:1;10563:88;10670:4;10667:1;10660:15;10694:4;10691:1;10684:15;10711:320;10755:6;10792:1;10786:4;10782:12;10772:22;;10839:1;10833:4;10829:12;10860:18;10850:81;;10916:4;10908:6;10904:17;10894:27;;10850:81;10978:2;10970:6;10967:14;10947:18;10944:38;10941:84;;10997:18;;:::i;:::-;10941:84;10762:269;10711:320;;;:::o;11037:180::-;11085:77;11082:1;11075:88;11182:4;11179:1;11172:15;11206:4;11203:1;11196:15;11223:191;11263:3;11282:20;11300:1;11282:20;:::i;:::-;11277:25;;11316:20;11334:1;11316:20;:::i;:::-;11311:25;;11359:1;11356;11352:9;11345:16;;11380:3;11377:1;11374:10;11371:36;;;11387:18;;:::i;:::-;11371:36;11223:191;;;;:::o;11420:178::-;11560:30;11556:1;11548:6;11544:14;11537:54;11420:178;:::o;11604:366::-;11746:3;11767:67;11831:2;11826:3;11767:67;:::i;:::-;11760:74;;11843:93;11932:3;11843:93;:::i;:::-;11961:2;11956:3;11952:12;11945:19;;11604:366;;;:::o;11976:419::-;12142:4;12180:2;12169:9;12165:18;12157:26;;12229:9;12223:4;12219:20;12215:1;12204:9;12200:17;12193:47;12257:131;12383:4;12257:131;:::i;:::-;12249:139;;11976:419;;;:::o;12401:244::-;12541:34;12537:1;12529:6;12525:14;12518:58;12610:27;12605:2;12597:6;12593:15;12586:52;12401:244;:::o;12651:366::-;12793:3;12814:67;12878:2;12873:3;12814:67;:::i;:::-;12807:74;;12890:93;12979:3;12890:93;:::i;:::-;13008:2;13003:3;12999:12;12992:19;;12651:366;;;:::o;13023:419::-;13189:4;13227:2;13216:9;13212:18;13204:26;;13276:9;13270:4;13266:20;13262:1;13251:9;13247:17;13240:47;13304:131;13430:4;13304:131;:::i;:::-;13296:139;;13023:419;;;:::o;13448:225::-;13588:34;13584:1;13576:6;13572:14;13565:58;13657:8;13652:2;13644:6;13640:15;13633:33;13448:225;:::o;13679:366::-;13821:3;13842:67;13906:2;13901:3;13842:67;:::i;:::-;13835:74;;13918:93;14007:3;13918:93;:::i;:::-;14036:2;14031:3;14027:12;14020:19;;13679:366;;;:::o;14051:419::-;14217:4;14255:2;14244:9;14240:18;14232:26;;14304:9;14298:4;14294:20;14290:1;14279:9;14275:17;14268:47;14332:131;14458:4;14332:131;:::i;:::-;14324:139;;14051:419;;;:::o;14476:223::-;14616:34;14612:1;14604:6;14600:14;14593:58;14685:6;14680:2;14672:6;14668:15;14661:31;14476:223;:::o;14705:366::-;14847:3;14868:67;14932:2;14927:3;14868:67;:::i;:::-;14861:74;;14944:93;15033:3;14944:93;:::i;:::-;15062:2;15057:3;15053:12;15046:19;;14705:366;;;:::o;15077:419::-;15243:4;15281:2;15270:9;15266:18;15258:26;;15330:9;15324:4;15320:20;15316:1;15305:9;15301:17;15294:47;15358:131;15484:4;15358:131;:::i;:::-;15350:139;;15077:419;;;:::o;15502:221::-;15642:34;15638:1;15630:6;15626:14;15619:58;15711:4;15706:2;15698:6;15694:15;15687:29;15502:221;:::o;15729:366::-;15871:3;15892:67;15956:2;15951:3;15892:67;:::i;:::-;15885:74;;15968:93;16057:3;15968:93;:::i;:::-;16086:2;16081:3;16077:12;16070:19;;15729:366;;;:::o;16101:419::-;16267:4;16305:2;16294:9;16290:18;16282:26;;16354:9;16348:4;16344:20;16340:1;16329:9;16325:17;16318:47;16382:131;16508:4;16382:131;:::i;:::-;16374:139;;16101:419;;;:::o;16526:224::-;16666:34;16662:1;16654:6;16650:14;16643:58;16735:7;16730:2;16722:6;16718:15;16711:32;16526:224;:::o;16756:366::-;16898:3;16919:67;16983:2;16978:3;16919:67;:::i;:::-;16912:74;;16995:93;17084:3;16995:93;:::i;:::-;17113:2;17108:3;17104:12;17097:19;;16756:366;;;:::o;17128:419::-;17294:4;17332:2;17321:9;17317:18;17309:26;;17381:9;17375:4;17371:20;17367:1;17356:9;17352:17;17345:47;17409:131;17535:4;17409:131;:::i;:::-;17401:139;;17128:419;;;:::o;17553:222::-;17693:34;17689:1;17681:6;17677:14;17670:58;17762:5;17757:2;17749:6;17745:15;17738:30;17553:222;:::o;17781:366::-;17923:3;17944:67;18008:2;18003:3;17944:67;:::i;:::-;17937:74;;18020:93;18109:3;18020:93;:::i;:::-;18138:2;18133:3;18129:12;18122:19;;17781:366;;;:::o;18153:419::-;18319:4;18357:2;18346:9;18342:18;18334:26;;18406:9;18400:4;18396:20;18392:1;18381:9;18377:17;18370:47;18434:131;18560:4;18434:131;:::i;:::-;18426:139;;18153:419;;;:::o;18578:236::-;18718:34;18714:1;18706:6;18702:14;18695:58;18787:19;18782:2;18774:6;18770:15;18763:44;18578:236;:::o;18820:366::-;18962:3;18983:67;19047:2;19042:3;18983:67;:::i;:::-;18976:74;;19059:93;19148:3;19059:93;:::i;:::-;19177:2;19172:3;19168:12;19161:19;;18820:366;;;:::o;19192:419::-;19358:4;19396:2;19385:9;19381:18;19373:26;;19445:9;19439:4;19435:20;19431:1;19420:9;19416:17;19409:47;19473:131;19599:4;19473:131;:::i;:::-;19465:139;;19192:419;;;:::o;19617:172::-;19757:24;19753:1;19745:6;19741:14;19734:48;19617:172;:::o;19795:366::-;19937:3;19958:67;20022:2;20017:3;19958:67;:::i;:::-;19951:74;;20034:93;20123:3;20034:93;:::i;:::-;20152:2;20147:3;20143:12;20136:19;;19795:366;;;:::o;20167:419::-;20333:4;20371:2;20360:9;20356:18;20348:26;;20420:9;20414:4;20410:20;20406:1;20395:9;20391:17;20384:47;20448:131;20574:4;20448:131;:::i;:::-;20440:139;;20167:419;;;:::o;20592:297::-;20732:34;20728:1;20720:6;20716:14;20709:58;20801:34;20796:2;20788:6;20784:15;20777:59;20870:11;20865:2;20857:6;20853:15;20846:36;20592:297;:::o;20895:366::-;21037:3;21058:67;21122:2;21117:3;21058:67;:::i;:::-;21051:74;;21134:93;21223:3;21134:93;:::i;:::-;21252:2;21247:3;21243:12;21236:19;;20895:366;;;:::o;21267:419::-;21433:4;21471:2;21460:9;21456:18;21448:26;;21520:9;21514:4;21510:20;21506:1;21495:9;21491:17;21484:47;21548:131;21674:4;21548:131;:::i;:::-;21540:139;;21267:419;;;:::o;21692:240::-;21832:34;21828:1;21820:6;21816:14;21809:58;21901:23;21896:2;21888:6;21884:15;21877:48;21692:240;:::o;21938:366::-;22080:3;22101:67;22165:2;22160:3;22101:67;:::i;:::-;22094:74;;22177:93;22266:3;22177:93;:::i;:::-;22295:2;22290:3;22286:12;22279:19;;21938:366;;;:::o;22310:419::-;22476:4;22514:2;22503:9;22499:18;22491:26;;22563:9;22557:4;22553:20;22549:1;22538:9;22534:17;22527:47;22591:131;22717:4;22591:131;:::i;:::-;22583:139;;22310:419;;;:::o;22735:241::-;22875:34;22871:1;22863:6;22859:14;22852:58;22944:24;22939:2;22931:6;22927:15;22920:49;22735:241;:::o;22982:366::-;23124:3;23145:67;23209:2;23204:3;23145:67;:::i;:::-;23138:74;;23221:93;23310:3;23221:93;:::i;:::-;23339:2;23334:3;23330:12;23323:19;;22982:366;;;:::o;23354:419::-;23520:4;23558:2;23547:9;23543:18;23535:26;;23607:9;23601:4;23597:20;23593:1;23582:9;23578:17;23571:47;23635:131;23761:4;23635:131;:::i;:::-;23627:139;;23354:419;;;:::o;23779:410::-;23819:7;23842:20;23860:1;23842:20;:::i;:::-;23837:25;;23876:20;23894:1;23876:20;:::i;:::-;23871:25;;23931:1;23928;23924:9;23953:30;23971:11;23953:30;:::i;:::-;23942:41;;24132:1;24123:7;24119:15;24116:1;24113:22;24093:1;24086:9;24066:83;24043:139;;24162:18;;:::i;:::-;24043:139;23827:362;23779:410;;;;:::o;24195:180::-;24243:77;24240:1;24233:88;24340:4;24337:1;24330:15;24364:4;24361:1;24354:15;24381:185;24421:1;24438:20;24456:1;24438:20;:::i;:::-;24433:25;;24472:20;24490:1;24472:20;:::i;:::-;24467:25;;24511:1;24501:35;;24516:18;;:::i;:::-;24501:35;24558:1;24555;24551:9;24546:14;;24381:185;;;;:::o;24572:194::-;24612:4;24632:20;24650:1;24632:20;:::i;:::-;24627:25;;24666:20;24684:1;24666:20;:::i;:::-;24661:25;;24710:1;24707;24703:9;24695:17;;24734:1;24728:4;24725:11;24722:37;;;24739:18;;:::i;:::-;24722:37;24572:194;;;;:::o;24772:180::-;24820:77;24817:1;24810:88;24917:4;24914:1;24907:15;24941:4;24938:1;24931:15;24958:180;25006:77;25003:1;24996:88;25103:4;25100:1;25093:15;25127:4;25124:1;25117:15;25144:143;25201:5;25232:6;25226:13;25217:22;;25248:33;25275:5;25248:33;:::i;:::-;25144:143;;;;:::o;25293:351::-;25363:6;25412:2;25400:9;25391:7;25387:23;25383:32;25380:119;;;25418:79;;:::i;:::-;25380:119;25538:1;25563:64;25619:7;25610:6;25599:9;25595:22;25563:64;:::i;:::-;25553:74;;25509:128;25293:351;;;;:::o;25650:85::-;25695:7;25724:5;25713:16;;25650:85;;;:::o;25741:158::-;25799:9;25832:61;25850:42;25859:32;25885:5;25859:32;:::i;:::-;25850:42;:::i;:::-;25832:61;:::i;:::-;25819:74;;25741:158;;;:::o;25905:147::-;26000:45;26039:5;26000:45;:::i;:::-;25995:3;25988:58;25905:147;;:::o;26058:114::-;26125:6;26159:5;26153:12;26143:22;;26058:114;;;:::o;26178:184::-;26277:11;26311:6;26306:3;26299:19;26351:4;26346:3;26342:14;26327:29;;26178:184;;;;:::o;26368:132::-;26435:4;26458:3;26450:11;;26488:4;26483:3;26479:14;26471:22;;26368:132;;;:::o;26506:108::-;26583:24;26601:5;26583:24;:::i;:::-;26578:3;26571:37;26506:108;;:::o;26620:179::-;26689:10;26710:46;26752:3;26744:6;26710:46;:::i;:::-;26788:4;26783:3;26779:14;26765:28;;26620:179;;;;:::o;26805:113::-;26875:4;26907;26902:3;26898:14;26890:22;;26805:113;;;:::o;26954:732::-;27073:3;27102:54;27150:5;27102:54;:::i;:::-;27172:86;27251:6;27246:3;27172:86;:::i;:::-;27165:93;;27282:56;27332:5;27282:56;:::i;:::-;27361:7;27392:1;27377:284;27402:6;27399:1;27396:13;27377:284;;;27478:6;27472:13;27505:63;27564:3;27549:13;27505:63;:::i;:::-;27498:70;;27591:60;27644:6;27591:60;:::i;:::-;27581:70;;27437:224;27424:1;27421;27417:9;27412:14;;27377:284;;;27381:14;27677:3;27670:10;;27078:608;;;26954:732;;;;:::o;27692:831::-;27955:4;27993:3;27982:9;27978:19;27970:27;;28007:71;28075:1;28064:9;28060:17;28051:6;28007:71;:::i;:::-;28088:80;28164:2;28153:9;28149:18;28140:6;28088:80;:::i;:::-;28215:9;28209:4;28205:20;28200:2;28189:9;28185:18;28178:48;28243:108;28346:4;28337:6;28243:108;:::i;:::-;28235:116;;28361:72;28429:2;28418:9;28414:18;28405:6;28361:72;:::i;:::-;28443:73;28511:3;28500:9;28496:19;28487:6;28443:73;:::i;:::-;27692:831;;;;;;;;:::o
Swarm Source
ipfs://a01ffb842b5d4d4d172d54a1b6b995fdf45e47b949b39ffcec3d56d2e23a7e73
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.