Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 830 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 19997068 | 93 days ago | IN | 0 ETH | 0.00040964 | ||||
Approve | 16980847 | 517 days ago | IN | 0 ETH | 0.00148582 | ||||
Approve | 16966025 | 519 days ago | IN | 0 ETH | 0.0009685 | ||||
Approve | 16849628 | 535 days ago | IN | 0 ETH | 0.00138301 | ||||
Approve | 16723296 | 553 days ago | IN | 0 ETH | 0.0011294 | ||||
Approve | 16713811 | 554 days ago | IN | 0 ETH | 0.00061159 | ||||
Approve | 16694478 | 557 days ago | IN | 0 ETH | 0.00140409 | ||||
Approve | 16638532 | 565 days ago | IN | 0 ETH | 0.00104954 | ||||
Approve | 16638528 | 565 days ago | IN | 0 ETH | 0.00110411 | ||||
Approve | 16632244 | 566 days ago | IN | 0 ETH | 0.00125654 | ||||
Approve | 16622407 | 567 days ago | IN | 0 ETH | 0.00100504 | ||||
Approve | 16606465 | 569 days ago | IN | 0 ETH | 0.00087193 | ||||
Approve | 16572876 | 574 days ago | IN | 0 ETH | 0.0011905 | ||||
Approve | 16572376 | 574 days ago | IN | 0 ETH | 0.00158114 | ||||
Approve | 16556857 | 576 days ago | IN | 0 ETH | 0.00120257 | ||||
Transfer | 16555077 | 576 days ago | IN | 0 ETH | 0.00045162 | ||||
Transfer | 16555067 | 576 days ago | IN | 0 ETH | 0.00049334 | ||||
Approve | 16551911 | 577 days ago | IN | 0 ETH | 0.00110374 | ||||
Approve | 16544434 | 578 days ago | IN | 0 ETH | 0.00112578 | ||||
Approve | 16544340 | 578 days ago | IN | 0 ETH | 0.0012589 | ||||
Approve | 16536318 | 579 days ago | IN | 0 ETH | 0.00870784 | ||||
Approve | 16535176 | 579 days ago | IN | 0 ETH | 0.00099453 | ||||
Transfer | 16534826 | 579 days ago | IN | 0 ETH | 0.0043075 | ||||
Transfer | 16532726 | 580 days ago | IN | 0 ETH | 0.00360396 | ||||
Transfer | 16532669 | 580 days ago | IN | 0 ETH | 0.00272804 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16531959 | 580 days ago | 0.13024885 ETH | ||||
16531959 | 580 days ago | 0.02604977 ETH | ||||
16531959 | 580 days ago | 0.02604977 ETH | ||||
16531959 | 580 days ago | 0.18234839 ETH | ||||
16301905 | 612 days ago | 0.00281413 ETH | ||||
16301905 | 612 days ago | 0.00056282 ETH | ||||
16301905 | 612 days ago | 0.00056282 ETH | ||||
16301905 | 612 days ago | 0.00393978 ETH | ||||
16117910 | 638 days ago | 0.00009532 ETH | ||||
16117910 | 638 days ago | 0.00001906 ETH | ||||
16117910 | 638 days ago | 0.00001906 ETH | ||||
16117910 | 638 days ago | 0.00013344 ETH | ||||
16115568 | 638 days ago | 0.00009532 ETH | ||||
16115568 | 638 days ago | 0.00001906 ETH | ||||
16115568 | 638 days ago | 0.00001906 ETH | ||||
16115568 | 638 days ago | 0.00013344 ETH | ||||
15836877 | 677 days ago | 0.0087253 ETH | ||||
15836877 | 677 days ago | 0.00174506 ETH | ||||
15836877 | 677 days ago | 0.00174506 ETH | ||||
15836877 | 677 days ago | 0.01221542 ETH | ||||
15800709 | 682 days ago | 0.00629279 ETH | ||||
15800709 | 682 days ago | 0.00125855 ETH | ||||
15800709 | 682 days ago | 0.00125855 ETH | ||||
15800709 | 682 days ago | 0.00880991 ETH | ||||
15800707 | 682 days ago | 0.00241419 ETH |
Loading...
Loading
Contract Name:
Boost2
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-13 */ //Boost V2 // Developed by Elevate Software // elevatesoftware.io // @elevatesoftware // SPDX-License-Identifier: Unlicensed pragma solidity ^0.6.12; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } interface IERC20 { //Return total supply function totalSupply() external view returns (uint256); //Return amount of tokens owned by 'account' function balanceOf(address account) external view returns (uint256); //Moves 'amount' tokens from the caller's account to 'recipient' function transfer(address recipient, uint256 amount) external returns (bool); //Returns a boolean value indicating whether the operation succeeded. //Returns the remaining number of tokens that 'spender' will be allowed to spend function allowance(address owner, address spender) external view returns (uint256); //Sets 'amount' as the allowance of 'spender' over the caller's tokens function approve(address spender, uint256 amount) external returns (bool); //Moves 'ammount' of tokens from 'spender' to 'recipient'. Then deducts from callers allowance. function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. 'keccak256('')' bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); //Initializes the contract setting the deployer as the initial owner. constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } //Returns the address of the current owner. function owner() public view returns (address) { return _owner; } //Throws if called by any account other than the owner. modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * Leaves the contract without owner. It will not be possible to call * 'onlyOwner' functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } //Transfers ownership of the contract to a new account ('newOwner'), Can only be called by the current 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; } function getUnlockTime() public view returns (uint256) { return _lockTime; } } 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 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 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 Boost2 is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; mapping (address => bool) private _isBlackListedBot; address[] private _blackListedBots; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 300000 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private constant _name = 'Boost2'; string private constant _symbol = 'BOOST2'; uint8 private constant _decimals = 18; uint256 private _taxFee = 1; uint256 private _teamFee = 6; uint256 private _previousTaxFee = _taxFee; uint256 private _previousTeamFee = _teamFee; address payable public _devWalletAddress; address payable public _marketingWalletAddress; address payable public _useWalletAddress; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwap = false; bool public swapEnabled = true; uint256 private _maxTxAmount = 7000 * 10**18; uint256 private constant _numOfTokensToExchangeForTeam = 1.25 * 10**18; uint256 private _maxWalletSize = 300000 * 10**18; event botAddedToBlacklist(address account); event botRemovedFromBlacklist(address account); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor (address payable marketingWalletAddress, address payable useWalletAddress) public { _devWalletAddress = 0x5A549a2D20aC5ca20D04259474c0166082872955; _marketingWalletAddress = marketingWalletAddress; _useWalletAddress = useWalletAddress; _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; // Exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcluded(address account) public view returns (bool) { return _isExcluded[account]; } function setExcludeFromFee(address account, bool excluded) external onlyOwner() { _isExcludedFromFee[account] = excluded; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function addBotToBlacklist (address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We cannot blacklist UniSwap router'); require (!_isBlackListedBot[account], 'Account is already blacklisted'); _isBlackListedBot[account] = true; _blackListedBots.push(account); } function removeBotFromBlacklist(address account) external onlyOwner() { require (_isBlackListedBot[account], 'Account is not blacklisted'); for (uint256 i = 0; i < _blackListedBots.length; i++) { if (_blackListedBots[i] == account) { _blackListedBots[i] = _blackListedBots[_blackListedBots.length - 1]; _isBlackListedBot[account] = false; _blackListedBots.pop(); break; } } } function excludeAccount(address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeAccount(address account) external onlyOwner() { require(_isExcluded[account], "Account is not excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function removeAllFee() private { if(_taxFee == 0 && _teamFee == 0) return; _previousTaxFee = _taxFee; _previousTeamFee = _teamFee; _taxFee = 0; _teamFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _teamFee = _previousTeamFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { 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 _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!_isBlackListedBot[sender], "You are blacklisted"); require(!_isBlackListedBot[msg.sender], "You are blacklisted"); require(!_isBlackListedBot[tx.origin], "You are blacklisted"); if(sender != owner() && recipient != owner()) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } if(sender != owner() && recipient != owner() && recipient != uniswapV2Pair && recipient != address(0xdead)) { uint256 tokenBalanceRecipient = balanceOf(recipient); require(tokenBalanceRecipient + amount <= _maxWalletSize, "Recipient exceeds max wallet size."); } // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap? // also, don't get caught in a circular team event. // also, don't swap if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam; if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) { // Swap tokens for ETH and send to resepctive wallets swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToTeam(address(this).balance); } } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ takeFee = false; } //transfer amount, it will take tax and team fee _tokenTransfer(sender,recipient,amount,takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{ // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function sendETHToTeam(uint256 amount) private { _devWalletAddress.transfer(amount.div(7)); _marketingWalletAddress.transfer(amount.div(7)); _useWalletAddress.transfer(amount.div(7).mul(5)); } function manualSwap() external onlyOwner() { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualSend() external onlyOwner() { uint256 contractETHBalance = address(this).balance; sendETHToTeam(contractETHBalance); } function setSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues(uint256 tAmount, uint256 taxFee, uint256 teamFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tTeam = tAmount.mul(teamFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _getTaxFee() public view returns(uint256) { return _taxFee; } function _getTeamFee() public view returns (uint256) { return _teamFee; } function _getMaxTxAmount() public view returns(uint256) { return _maxTxAmount; } function _getETHBalance() public view returns(uint256 balance) { return address(this).balance; } function _setTaxFee(uint256 taxFee) external onlyOwner() { require(taxFee >= 1 && taxFee <= 3, 'taxFee should be in 1 - 3'); _taxFee = taxFee; } function _setTeamFee(uint256 teamFee) external onlyOwner() { require(teamFee >= 1 && teamFee <= 8, 'teamFee should be in 1 - 8'); _teamFee = teamFee; } function _setMarketingWallet(address payable marketingWalletAddress) external onlyOwner() { _marketingWalletAddress = marketingWalletAddress; } function _setUseWallet(address payable useWalletAddress) external onlyOwner() { _useWalletAddress = useWalletAddress; } function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount; } function _setMaxWalletSize (uint256 maxWalletSize) external onlyOwner() { _maxWalletSize = maxWalletSize; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"marketingWalletAddress","type":"address"},{"internalType":"address payable","name":"useWalletAddress","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botAddedToBlacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botRemovedFromBlacklist","type":"event"},{"inputs":[],"name":"_devWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"name":"_setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"_setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"useWalletAddress","type":"address"}],"name":"_setUseWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_useWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052693f870857a3e0e3800000600019816200001a57fe5b0660001903600b556001600d556006600e55600d54600f55600e546010556000601360146101000a81548160ff0219169083151502179055506001601360156101000a81548160ff02191690831515021790555069017b7883c06916600000601455693f870857a3e0e38000006015553480156200009757600080fd5b50604051620061883803806200618883398181016040526040811015620000bd57600080fd5b8101908080519060200190929190805190602001909291905050506000620000ea6200064c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350735a549a2d20ac5ca20d04259474c0166082872955601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b5460036000620002766200064c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031457600080fd5b505afa15801562000329573d6000803e3d6000fd5b505050506040513d60208110156200034057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b457600080fd5b505afa158015620003c9573d6000803e3d6000fd5b505050506040513d6020811015620003e057600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200045b57600080fd5b505af115801562000470573d6000803e3d6000fd5b505050506040513d60208110156200048757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506001600660006200051b6200065460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005d46200064c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef693f870857a3e0e38000006040518082815260200191505060405180910390a35050506200067d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60805160601c60a05160601c615ac8620006c060003980611aed5280613b065280613c6752508061100b52806140c352806141af52806141d65250615ac86000f3fe6080604052600436106102765760003560e01c80636ddd17131161014f578063af9549e0116100c1578063f2cc0c181161007a578063f2cc0c1814610e44578063f2fde38b14610e95578063f429389014610ee6578063f7a9159114610efd578063f815a84214610f28578063f84354f114610f535761027d565b8063af9549e014610c2c578063b030b34a14610c89578063b425bac314610cda578063cba0e99614610d1b578063dd62ed3e14610d82578063e01af92c14610e075761027d565b80638da5cb5b116101135780638da5cb5b14610a1357806395d89b4114610a545780639e6c752914610ae4578063a457c2d714610b1f578063a5e8c95414610b90578063a9059cbb14610bbb5761027d565b80636ddd1713146108d857806370a0823114610905578063715018a61461096a5780637fb172a71461098157806380b065d3146109d25761027d565b80632fbff030116101e85780634549b039116101ac5780634549b0391461075857806349bd5a5e146107b357806351bc3c85146107f45780635342acb41461080b5780635880b87314610872578063602bc62b146108ad5761027d565b80632fbff03014610612578063313ce5671461063d578063395093511461066b5780633bd5d173146106dc5780634144d9e4146107175761027d565b80631bbae6e01161023a5780631bbae6e01461041a5780631d7ef879146104555780631ff53b60146104a657806323b872dd146104f757806328667162146105885780632d838119146105c35761027d565b806306fdde0314610282578063095ea7b31461031257806313114a9d146103835780631694505e146103ae57806318160ddd146103ef5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610fa4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d75780820151818401526020810190506102bc565b50505050905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031e57600080fd5b5061036b6004803603604081101561033557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fe1565b60405180821515815260200191505060405180910390f35b34801561038f57600080fd5b50610398610fff565b6040518082815260200191505060405180910390f35b3480156103ba57600080fd5b506103c3611009565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103fb57600080fd5b5061040461102d565b6040518082815260200191505060405180910390f35b34801561042657600080fd5b506104536004803603602081101561043d57600080fd5b810190808035906020019092919050505061103f565b005b34801561046157600080fd5b506104a46004803603602081101561047857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611111565b005b3480156104b257600080fd5b506104f5600480360360208110156104c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113f0565b005b34801561050357600080fd5b506105706004803603606081101561051a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114fc565b60405180821515815260200191505060405180910390f35b34801561059457600080fd5b506105c1600480360360208110156105ab57600080fd5b81019080803590602001909291905050506115d5565b005b3480156105cf57600080fd5b506105fc600480360360208110156105e657600080fd5b810190808035906020019092919050505061172b565b6040518082815260200191505060405180910390f35b34801561061e57600080fd5b506106276117af565b6040518082815260200191505060405180910390f35b34801561064957600080fd5b506106526117b9565b604051808260ff16815260200191505060405180910390f35b34801561067757600080fd5b506106c46004803603604081101561068e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117c2565b60405180821515815260200191505060405180910390f35b3480156106e857600080fd5b50610715600480360360208110156106ff57600080fd5b8101908080359060200190929190505050611875565b005b34801561072357600080fd5b5061072c611a06565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076457600080fd5b5061079d6004803603604081101561077b57600080fd5b8101908080359060200190929190803515159060200190929190505050611a2c565b6040518082815260200191505060405180910390f35b3480156107bf57600080fd5b506107c8611aeb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561080057600080fd5b50610809611b0f565b005b34801561081757600080fd5b5061085a6004803603602081101561082e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bf0565b60405180821515815260200191505060405180910390f35b34801561087e57600080fd5b506108ab6004803603602081101561089557600080fd5b8101908080359060200190929190505050611c46565b005b3480156108b957600080fd5b506108c2611d9c565b6040518082815260200191505060405180910390f35b3480156108e457600080fd5b506108ed611da6565b60405180821515815260200191505060405180910390f35b34801561091157600080fd5b506109546004803603602081101561092857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611db9565b6040518082815260200191505060405180910390f35b34801561097657600080fd5b5061097f611ea4565b005b34801561098d57600080fd5b506109d0600480360360208110156109a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061202a565b005b3480156109de57600080fd5b506109e7612136565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a1f57600080fd5b50610a2861215c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a6057600080fd5b50610a69612185565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aa9578082015181840152602081019050610a8e565b50505050905090810190601f168015610ad65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610af057600080fd5b50610b1d60048036036020811015610b0757600080fd5b81019080803590602001909291905050506121c2565b005b348015610b2b57600080fd5b50610b7860048036036040811015610b4257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612294565b60405180821515815260200191505060405180910390f35b348015610b9c57600080fd5b50610ba5612361565b6040518082815260200191505060405180910390f35b348015610bc757600080fd5b50610c1460048036036040811015610bde57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061236b565b60405180821515815260200191505060405180910390f35b348015610c3857600080fd5b50610c8760048036036040811015610c4f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612389565b005b348015610c9557600080fd5b50610cd860048036036020811015610cac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124ac565b005b348015610ce657600080fd5b50610cef6127f1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d2757600080fd5b50610d6a60048036036020811015610d3e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612817565b60405180821515815260200191505060405180910390f35b348015610d8e57600080fd5b50610df160048036036040811015610da557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061286d565b6040518082815260200191505060405180910390f35b348015610e1357600080fd5b50610e4260048036036020811015610e2a57600080fd5b810190808035151590602001909291905050506128f4565b005b348015610e5057600080fd5b50610e9360048036036020811015610e6757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129d9565b005b348015610ea157600080fd5b50610ee460048036036020811015610eb857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d8c565b005b348015610ef257600080fd5b50610efb612f97565b005b348015610f0957600080fd5b50610f12613070565b6040518082815260200191505060405180910390f35b348015610f3457600080fd5b50610f3d61307a565b6040518082815260200191505060405180910390f35b348015610f5f57600080fd5b50610fa260048036036020811015610f7657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613082565b005b60606040518060400160405280600681526020017f426f6f7374320000000000000000000000000000000000000000000000000000815250905090565b6000610ff5610fee61340c565b8484613414565b6001905092915050565b6000600c54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000693f870857a3e0e3800000905090565b61104761340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060148190555050565b61111961340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611272576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806159646022913960400191505060405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4163636f756e7420697320616c726561647920626c61636b6c6973746564000081525060200191505060405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113f861340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061150984848461360b565b6115ca8461151561340c565b6115c58560405180606001604052806028815260200161598660289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061157b61340c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613da39092919063ffffffff16565b613414565b600190509392505050565b6115dd61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461169d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600181101580156116af575060088111155b611721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7465616d4665652073686f756c6420626520696e2031202d203800000000000081525060200191505060405180910390fd5b80600e8190555050565b6000600b54821115611788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615887602a913960400191505060405180910390fd5b6000611792613e63565b90506117a78184613e8e90919063ffffffff16565b915050919050565b6000600d54905090565b60006012905090565b600061186b6117cf61340c565b8461186685600560006117e061340c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b613414565b6001905092915050565b600061187f61340c565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615a42602c913960400191505060405180910390fd5b600061192f83613f60565b5050505050905061198881600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119e081600b54613fc890919063ffffffff16565b600b819055506119fb83600c54613ed890919063ffffffff16565b600c81905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000693f870857a3e0e3800000831115611aae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611ace576000611abe84613f60565b5050505050905080915050611ae5565b6000611ad984613f60565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611b1761340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bd7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000611be230611db9565b9050611bed81614012565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611c4e61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611d20575060038111155b611d92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7461784665652073686f756c6420626520696e2031202d20330000000000000081525060200191505060405180910390fd5b80600d8190555050565b6000600254905090565b601360159054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e5457600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611e9f565b611e9c600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461172b565b90505b919050565b611eac61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f6c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61203261340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f424f4f5354320000000000000000000000000000000000000000000000000000815250905090565b6121ca61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b60006123576122a161340c565b8461235285604051806060016040528060258152602001615a6e60259139600560006122cb61340c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613da39092919063ffffffff16565b613414565b6001905092915050565b6000600e54905090565b600061237f61237861340c565b848461360b565b6001905092915050565b61239161340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612451576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6124b461340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612574576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4163636f756e74206973206e6f7420626c61636b6c697374656400000000000081525060200191505060405180910390fd5b60005b600a805490508110156127ed578173ffffffffffffffffffffffffffffffffffffffff16600a828154811061266757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127e057600a6001600a8054905003815481106126c357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a82815481106126fb57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a8054806127a657fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556127ed565b8080600101915050612636565b5050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128fc61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b6129e161340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615a206022913960400191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612bfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612cce57612c8a600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461172b565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d9461340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612eda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806158b16026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f9f61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461305f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600047905061306d816142f6565b50565b6000601454905090565b600047905090565b61308a61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461314a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4163636f756e74206973206e6f74206578636c7564656400000000000000000081525060200191505060405180910390fd5b60005b600880549050811015613408578173ffffffffffffffffffffffffffffffffffffffff166008828154811061323d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156133fb5760086001600880549050038154811061329957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600882815481106132d157fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060088054806133c157fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055613408565b808060010191505061320c565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561349a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806159fc6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613520576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806158d76022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613691576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806159d76025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613717576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806158646023913960400191505060405180910390fd5b60008111613770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806159ae6029913960400191505060405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613830576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f596f752061726520626c61636b6c69737465640000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156138f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f596f752061726520626c61636b6c69737465640000000000000000000000000081525060200191505060405180910390fd5b600960003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156139b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f596f752061726520626c61636b6c69737465640000000000000000000000000081525060200191505060405180910390fd5b6139b861215c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613a2657506139f661215c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613a8757601454811115613a86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061591b6028913960400191505060405180910390fd5b5b613a8f61215c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613afd5750613acd61215c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613b5557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613b8f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613c00576000613b9f83611db9565b90506015548282011115613bfe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806158f96022913960400191505060405180910390fd5b505b6000613c0b30611db9565b90506014548110613c1c5760145490505b6000671158e460913d00008210159050601360149054906101000a900460ff16158015613c555750601360159054906101000a900460ff165b8015613c5e5750805b8015613cb657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613cde57613cc482614012565b60004790506000811115613cdc57613cdb476142f6565b5b505b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613d855750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613d8f57600090505b613d9b86868684614480565b505050505050565b6000838311158290613e50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e15578082015181840152602081019050613dfa565b50505050905090810190601f168015613e425780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613e70614791565b91509150613e878183613e8e90919063ffffffff16565b9250505090565b6000613ed083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614a42565b905092915050565b600080828401905083811015613f56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613f7d8a600d54600e54614b08565b9250925092506000613f8d613e63565b90506000806000613fa08e878787614b9e565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061400a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613da3565b905092915050565b6001601360146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff8111801561404757600080fd5b506040519080825280602002602001820160405280156140765781602001602082028036833780820191505090505b509050308160008151811061408757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561412757600080fd5b505afa15801561413b573d6000803e3d6000fd5b505050506040513d602081101561415157600080fd5b81019080805190602001909291905050508160018151811061416f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141d4307f000000000000000000000000000000000000000000000000000000000000000084613414565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561429657808201518184015260208101905061427b565b505050509050019650505050505050600060405180830381600087803b1580156142bf57600080fd5b505af11580156142d3573d6000803e3d6000fd5b50505050506000601360146101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc614346600784613e8e90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015614371573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6143c2600784613e8e90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156143ed573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6144516005614443600786613e8e90919063ffffffff16565b614c2790919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561447c573d6000803e3d6000fd5b5050565b8061448e5761448d614cad565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156145315750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561454657614541848484614cf0565b61477d565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156145e95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156145fe576145f9848484614f50565b61477c565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156146a25750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156146b7576146b28484846151b0565b61477b565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156147595750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561476e5761476984848461537b565b61477a565b6147798484846151b0565b5b5b5b5b8061478b5761478a615670565b5b50505050565b6000806000600b5490506000693f870857a3e0e3800000905060005b6008805490508110156149f5578260036000600884815481106147cc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806148b3575081600460006008848154811061484b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156148d257600b54693f870857a3e0e380000094509450505050614a3e565b61495b60036000600884815481106148e657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613fc890919063ffffffff16565b92506149e6600460006008848154811061497157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613fc890919063ffffffff16565b915080806001019150506147ad565b50614a15693f870857a3e0e3800000600b54613e8e90919063ffffffff16565b821015614a3557600b54693f870857a3e0e3800000935093505050614a3e565b81819350935050505b9091565b60008083118290614aee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614ab3578082015181840152602081019050614a98565b50505050905090810190601f168015614ae05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614afa57fe5b049050809150509392505050565b600080600080614b346064614b26888a614c2790919063ffffffff16565b613e8e90919063ffffffff16565b90506000614b5e6064614b50888b614c2790919063ffffffff16565b613e8e90919063ffffffff16565b90506000614b8782614b79858c613fc890919063ffffffff16565b613fc890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080614bb78589614c2790919063ffffffff16565b90506000614bce8689614c2790919063ffffffff16565b90506000614be58789614c2790919063ffffffff16565b90506000614c0e82614c008587613fc890919063ffffffff16565b613fc890919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415614c3a5760009050614ca7565b6000828402905082848281614c4b57fe5b0414614ca2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806159436021913960400191505060405180910390fd5b809150505b92915050565b6000600d54148015614cc157506000600e54145b15614ccb57614cee565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b600080600080600080614d0287613f60565b955095509550955095509550614d6087600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614df586600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e8a85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ed681615684565b614ee08483615829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614f6287613f60565b955095509550955095509550614fc086600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061505583600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506150ea85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061513681615684565b6151408483615829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806151c287613f60565b95509550955095509550955061522086600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506152b585600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061530181615684565b61530b8483615829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061538d87613f60565b9550955095509550955095506153eb87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061548086600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061551583600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506155aa85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506155f681615684565b6156008483615829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600061568e613e63565b905060006156a58284614c2790919063ffffffff16565b90506156f981600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615615824576157e083600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61583e82600b54613fc890919063ffffffff16565b600b8190555061585981600c54613ed890919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373526563697069656e742065786365656473206d61782077616c6c65742073697a652e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7757652063616e6e6f7420626c61636b6c69737420556e695377617020726f7574657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203bb691eb61f86a19053c7d78c93a8918ff102569b9c6f9d39407202ca2e63af964736f6c634300060c0033000000000000000000000000af3393ac19de0a01ff77f0ed462304ad2e9bbec20000000000000000000000009818d2376df97efb878d8f37189950e608b11f2a
Deployed Bytecode
0x6080604052600436106102765760003560e01c80636ddd17131161014f578063af9549e0116100c1578063f2cc0c181161007a578063f2cc0c1814610e44578063f2fde38b14610e95578063f429389014610ee6578063f7a9159114610efd578063f815a84214610f28578063f84354f114610f535761027d565b8063af9549e014610c2c578063b030b34a14610c89578063b425bac314610cda578063cba0e99614610d1b578063dd62ed3e14610d82578063e01af92c14610e075761027d565b80638da5cb5b116101135780638da5cb5b14610a1357806395d89b4114610a545780639e6c752914610ae4578063a457c2d714610b1f578063a5e8c95414610b90578063a9059cbb14610bbb5761027d565b80636ddd1713146108d857806370a0823114610905578063715018a61461096a5780637fb172a71461098157806380b065d3146109d25761027d565b80632fbff030116101e85780634549b039116101ac5780634549b0391461075857806349bd5a5e146107b357806351bc3c85146107f45780635342acb41461080b5780635880b87314610872578063602bc62b146108ad5761027d565b80632fbff03014610612578063313ce5671461063d578063395093511461066b5780633bd5d173146106dc5780634144d9e4146107175761027d565b80631bbae6e01161023a5780631bbae6e01461041a5780631d7ef879146104555780631ff53b60146104a657806323b872dd146104f757806328667162146105885780632d838119146105c35761027d565b806306fdde0314610282578063095ea7b31461031257806313114a9d146103835780631694505e146103ae57806318160ddd146103ef5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610fa4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d75780820151818401526020810190506102bc565b50505050905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031e57600080fd5b5061036b6004803603604081101561033557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fe1565b60405180821515815260200191505060405180910390f35b34801561038f57600080fd5b50610398610fff565b6040518082815260200191505060405180910390f35b3480156103ba57600080fd5b506103c3611009565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103fb57600080fd5b5061040461102d565b6040518082815260200191505060405180910390f35b34801561042657600080fd5b506104536004803603602081101561043d57600080fd5b810190808035906020019092919050505061103f565b005b34801561046157600080fd5b506104a46004803603602081101561047857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611111565b005b3480156104b257600080fd5b506104f5600480360360208110156104c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113f0565b005b34801561050357600080fd5b506105706004803603606081101561051a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114fc565b60405180821515815260200191505060405180910390f35b34801561059457600080fd5b506105c1600480360360208110156105ab57600080fd5b81019080803590602001909291905050506115d5565b005b3480156105cf57600080fd5b506105fc600480360360208110156105e657600080fd5b810190808035906020019092919050505061172b565b6040518082815260200191505060405180910390f35b34801561061e57600080fd5b506106276117af565b6040518082815260200191505060405180910390f35b34801561064957600080fd5b506106526117b9565b604051808260ff16815260200191505060405180910390f35b34801561067757600080fd5b506106c46004803603604081101561068e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117c2565b60405180821515815260200191505060405180910390f35b3480156106e857600080fd5b50610715600480360360208110156106ff57600080fd5b8101908080359060200190929190505050611875565b005b34801561072357600080fd5b5061072c611a06565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076457600080fd5b5061079d6004803603604081101561077b57600080fd5b8101908080359060200190929190803515159060200190929190505050611a2c565b6040518082815260200191505060405180910390f35b3480156107bf57600080fd5b506107c8611aeb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561080057600080fd5b50610809611b0f565b005b34801561081757600080fd5b5061085a6004803603602081101561082e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bf0565b60405180821515815260200191505060405180910390f35b34801561087e57600080fd5b506108ab6004803603602081101561089557600080fd5b8101908080359060200190929190505050611c46565b005b3480156108b957600080fd5b506108c2611d9c565b6040518082815260200191505060405180910390f35b3480156108e457600080fd5b506108ed611da6565b60405180821515815260200191505060405180910390f35b34801561091157600080fd5b506109546004803603602081101561092857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611db9565b6040518082815260200191505060405180910390f35b34801561097657600080fd5b5061097f611ea4565b005b34801561098d57600080fd5b506109d0600480360360208110156109a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061202a565b005b3480156109de57600080fd5b506109e7612136565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a1f57600080fd5b50610a2861215c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a6057600080fd5b50610a69612185565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aa9578082015181840152602081019050610a8e565b50505050905090810190601f168015610ad65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610af057600080fd5b50610b1d60048036036020811015610b0757600080fd5b81019080803590602001909291905050506121c2565b005b348015610b2b57600080fd5b50610b7860048036036040811015610b4257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612294565b60405180821515815260200191505060405180910390f35b348015610b9c57600080fd5b50610ba5612361565b6040518082815260200191505060405180910390f35b348015610bc757600080fd5b50610c1460048036036040811015610bde57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061236b565b60405180821515815260200191505060405180910390f35b348015610c3857600080fd5b50610c8760048036036040811015610c4f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612389565b005b348015610c9557600080fd5b50610cd860048036036020811015610cac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124ac565b005b348015610ce657600080fd5b50610cef6127f1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d2757600080fd5b50610d6a60048036036020811015610d3e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612817565b60405180821515815260200191505060405180910390f35b348015610d8e57600080fd5b50610df160048036036040811015610da557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061286d565b6040518082815260200191505060405180910390f35b348015610e1357600080fd5b50610e4260048036036020811015610e2a57600080fd5b810190808035151590602001909291905050506128f4565b005b348015610e5057600080fd5b50610e9360048036036020811015610e6757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129d9565b005b348015610ea157600080fd5b50610ee460048036036020811015610eb857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d8c565b005b348015610ef257600080fd5b50610efb612f97565b005b348015610f0957600080fd5b50610f12613070565b6040518082815260200191505060405180910390f35b348015610f3457600080fd5b50610f3d61307a565b6040518082815260200191505060405180910390f35b348015610f5f57600080fd5b50610fa260048036036020811015610f7657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613082565b005b60606040518060400160405280600681526020017f426f6f7374320000000000000000000000000000000000000000000000000000815250905090565b6000610ff5610fee61340c565b8484613414565b6001905092915050565b6000600c54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000693f870857a3e0e3800000905090565b61104761340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060148190555050565b61111961340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611272576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806159646022913960400191505060405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4163636f756e7420697320616c726561647920626c61636b6c6973746564000081525060200191505060405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113f861340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061150984848461360b565b6115ca8461151561340c565b6115c58560405180606001604052806028815260200161598660289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061157b61340c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613da39092919063ffffffff16565b613414565b600190509392505050565b6115dd61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461169d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600181101580156116af575060088111155b611721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7465616d4665652073686f756c6420626520696e2031202d203800000000000081525060200191505060405180910390fd5b80600e8190555050565b6000600b54821115611788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615887602a913960400191505060405180910390fd5b6000611792613e63565b90506117a78184613e8e90919063ffffffff16565b915050919050565b6000600d54905090565b60006012905090565b600061186b6117cf61340c565b8461186685600560006117e061340c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b613414565b6001905092915050565b600061187f61340c565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615a42602c913960400191505060405180910390fd5b600061192f83613f60565b5050505050905061198881600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119e081600b54613fc890919063ffffffff16565b600b819055506119fb83600c54613ed890919063ffffffff16565b600c81905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000693f870857a3e0e3800000831115611aae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611ace576000611abe84613f60565b5050505050905080915050611ae5565b6000611ad984613f60565b50505050915050809150505b92915050565b7f0000000000000000000000006a08e2f7eacbf089e15e892b663394d48a97345f81565b611b1761340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bd7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000611be230611db9565b9050611bed81614012565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611c4e61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611d20575060038111155b611d92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7461784665652073686f756c6420626520696e2031202d20330000000000000081525060200191505060405180910390fd5b80600d8190555050565b6000600254905090565b601360159054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e5457600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611e9f565b611e9c600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461172b565b90505b919050565b611eac61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f6c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61203261340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f424f4f5354320000000000000000000000000000000000000000000000000000815250905090565b6121ca61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b60006123576122a161340c565b8461235285604051806060016040528060258152602001615a6e60259139600560006122cb61340c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613da39092919063ffffffff16565b613414565b6001905092915050565b6000600e54905090565b600061237f61237861340c565b848461360b565b6001905092915050565b61239161340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612451576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6124b461340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612574576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4163636f756e74206973206e6f7420626c61636b6c697374656400000000000081525060200191505060405180910390fd5b60005b600a805490508110156127ed578173ffffffffffffffffffffffffffffffffffffffff16600a828154811061266757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156127e057600a6001600a8054905003815481106126c357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a82815481106126fb57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a8054806127a657fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556127ed565b8080600101915050612636565b5050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128fc61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b6129e161340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615a206022913960400191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612bfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612cce57612c8a600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461172b565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d9461340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612eda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806158b16026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f9f61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461305f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600047905061306d816142f6565b50565b6000601454905090565b600047905090565b61308a61340c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461314a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4163636f756e74206973206e6f74206578636c7564656400000000000000000081525060200191505060405180910390fd5b60005b600880549050811015613408578173ffffffffffffffffffffffffffffffffffffffff166008828154811061323d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156133fb5760086001600880549050038154811061329957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600882815481106132d157fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060088054806133c157fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055613408565b808060010191505061320c565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561349a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806159fc6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613520576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806158d76022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613691576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806159d76025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613717576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806158646023913960400191505060405180910390fd5b60008111613770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806159ae6029913960400191505060405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613830576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f596f752061726520626c61636b6c69737465640000000000000000000000000081525060200191505060405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156138f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f596f752061726520626c61636b6c69737465640000000000000000000000000081525060200191505060405180910390fd5b600960003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156139b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f596f752061726520626c61636b6c69737465640000000000000000000000000081525060200191505060405180910390fd5b6139b861215c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613a2657506139f661215c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613a8757601454811115613a86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061591b6028913960400191505060405180910390fd5b5b613a8f61215c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613afd5750613acd61215c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613b5557507f0000000000000000000000006a08e2f7eacbf089e15e892b663394d48a97345f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613b8f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613c00576000613b9f83611db9565b90506015548282011115613bfe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806158f96022913960400191505060405180910390fd5b505b6000613c0b30611db9565b90506014548110613c1c5760145490505b6000671158e460913d00008210159050601360149054906101000a900460ff16158015613c555750601360159054906101000a900460ff165b8015613c5e5750805b8015613cb657507f0000000000000000000000006a08e2f7eacbf089e15e892b663394d48a97345f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613cde57613cc482614012565b60004790506000811115613cdc57613cdb476142f6565b5b505b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613d855750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613d8f57600090505b613d9b86868684614480565b505050505050565b6000838311158290613e50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e15578082015181840152602081019050613dfa565b50505050905090810190601f168015613e425780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613e70614791565b91509150613e878183613e8e90919063ffffffff16565b9250505090565b6000613ed083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614a42565b905092915050565b600080828401905083811015613f56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613f7d8a600d54600e54614b08565b9250925092506000613f8d613e63565b90506000806000613fa08e878787614b9e565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061400a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613da3565b905092915050565b6001601360146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff8111801561404757600080fd5b506040519080825280602002602001820160405280156140765781602001602082028036833780820191505090505b509050308160008151811061408757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561412757600080fd5b505afa15801561413b573d6000803e3d6000fd5b505050506040513d602081101561415157600080fd5b81019080805190602001909291905050508160018151811061416f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141d4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84613414565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561429657808201518184015260208101905061427b565b505050509050019650505050505050600060405180830381600087803b1580156142bf57600080fd5b505af11580156142d3573d6000803e3d6000fd5b50505050506000601360146101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc614346600784613e8e90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015614371573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6143c2600784613e8e90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156143ed573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6144516005614443600786613e8e90919063ffffffff16565b614c2790919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561447c573d6000803e3d6000fd5b5050565b8061448e5761448d614cad565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156145315750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561454657614541848484614cf0565b61477d565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156145e95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156145fe576145f9848484614f50565b61477c565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156146a25750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156146b7576146b28484846151b0565b61477b565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156147595750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561476e5761476984848461537b565b61477a565b6147798484846151b0565b5b5b5b5b8061478b5761478a615670565b5b50505050565b6000806000600b5490506000693f870857a3e0e3800000905060005b6008805490508110156149f5578260036000600884815481106147cc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806148b3575081600460006008848154811061484b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156148d257600b54693f870857a3e0e380000094509450505050614a3e565b61495b60036000600884815481106148e657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613fc890919063ffffffff16565b92506149e6600460006008848154811061497157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613fc890919063ffffffff16565b915080806001019150506147ad565b50614a15693f870857a3e0e3800000600b54613e8e90919063ffffffff16565b821015614a3557600b54693f870857a3e0e3800000935093505050614a3e565b81819350935050505b9091565b60008083118290614aee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614ab3578082015181840152602081019050614a98565b50505050905090810190601f168015614ae05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614afa57fe5b049050809150509392505050565b600080600080614b346064614b26888a614c2790919063ffffffff16565b613e8e90919063ffffffff16565b90506000614b5e6064614b50888b614c2790919063ffffffff16565b613e8e90919063ffffffff16565b90506000614b8782614b79858c613fc890919063ffffffff16565b613fc890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080614bb78589614c2790919063ffffffff16565b90506000614bce8689614c2790919063ffffffff16565b90506000614be58789614c2790919063ffffffff16565b90506000614c0e82614c008587613fc890919063ffffffff16565b613fc890919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415614c3a5760009050614ca7565b6000828402905082848281614c4b57fe5b0414614ca2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806159436021913960400191505060405180910390fd5b809150505b92915050565b6000600d54148015614cc157506000600e54145b15614ccb57614cee565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b600080600080600080614d0287613f60565b955095509550955095509550614d6087600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614df586600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e8a85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ed681615684565b614ee08483615829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614f6287613f60565b955095509550955095509550614fc086600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061505583600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506150ea85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061513681615684565b6151408483615829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806151c287613f60565b95509550955095509550955061522086600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506152b585600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061530181615684565b61530b8483615829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061538d87613f60565b9550955095509550955095506153eb87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061548086600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fc890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061551583600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506155aa85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506155f681615684565b6156008483615829565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600061568e613e63565b905060006156a58284614c2790919063ffffffff16565b90506156f981600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615615824576157e083600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed890919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61583e82600b54613fc890919063ffffffff16565b600b8190555061585981600c54613ed890919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373526563697069656e742065786365656473206d61782077616c6c65742073697a652e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7757652063616e6e6f7420626c61636b6c69737420556e695377617020726f7574657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203bb691eb61f86a19053c7d78c93a8918ff102569b9c6f9d39407202ca2e63af964736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000af3393ac19de0a01ff77f0ed462304ad2e9bbec20000000000000000000000009818d2376df97efb878d8f37189950e608b11f2a
-----Decoded View---------------
Arg [0] : marketingWalletAddress (address): 0xAF3393ac19DE0A01ff77F0ed462304Ad2E9BBeC2
Arg [1] : useWalletAddress (address): 0x9818D2376DF97efb878d8f37189950e608B11f2a
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000af3393ac19de0a01ff77f0ed462304ad2e9bbec2
Arg [1] : 0000000000000000000000009818d2376df97efb878d8f37189950e608b11f2a
Deployed Bytecode Sourcemap
17454:20793:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20380:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21384:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22732:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18757:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20693:103;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37981:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24021:368;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37651:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21569:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37453:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23740:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36809:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20590:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21910:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22839:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18647:46;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;23256:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18819:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30311:168;;;;;;;;;;;;;:::i;:::-;;26360:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37262:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8644:98;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18900:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20808:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8081:160;;;;;;;;;;;;;:::i;:::-;;37828:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18704:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7414:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20483:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38113:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22152:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;36913:93;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21030:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22575:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24401:541;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18596:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22445:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21221:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30671:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24954:475;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8372:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30491:168;;;;;;;;;;;;;:::i;:::-;;37018:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37132:118;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25441:518;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20380:91;20417:13;20454:5;;;;;;;;;;;;;;;;;20447:12;;20380:91;:::o;21384:173::-;21459:4;21480:39;21489:12;:10;:12::i;:::-;21503:7;21512:6;21480:8;:39::i;:::-;21541:4;21534:11;;21384:173;;;;:::o;22732:95::-;22774:7;22805:10;;22798:17;;22732:95;:::o;18757:51::-;;;:::o;20693:103::-;20746:7;18132:15;20770:14;;20693:103;:::o;37981:120::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38078:11:::1;38063:12;:26;;;;37981:120:::0;:::o;24021:368::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24120:42:::1;24109:53;;:7;:53;;;;24101:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24225:17;:26;24243:7;24225:26;;;;;;;;;;;;;;;;;;;;;;;;;24224:27;24215:71;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24329:4;24300:17;:26;24318:7;24300:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24347:16;24369:7;24347:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24021:368:::0;:::o;37651:165::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37782:22:::1;37756:23;;:48;;;;;;;;;;;;;;;;;;37651:165:::0;:::o;21569:329::-;21667:4;21688:36;21698:6;21706:9;21717:6;21688:9;:36::i;:::-;21739:121;21748:6;21756:12;:10;:12::i;:::-;21770:89;21808:6;21770:89;;;;;;;;;;;;;;;;;:11;:19;21782:6;21770:19;;;;;;;;;;;;;;;:33;21790:12;:10;:12::i;:::-;21770:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21739:8;:121::i;:::-;21882:4;21875:11;;21569:329;;;;;:::o;37453:186::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37546:1:::1;37535:7;:12;;:28;;;;;37562:1;37551:7;:12;;37535:28;37527:67;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;37620:7;37609:8;:18;;;;37453:186:::0;:::o;23740:269::-;23806:7;23849;;23838;:18;;23830:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23918:19;23941:10;:8;:10::i;:::-;23918:33;;23973:24;23985:11;23973:7;:11;;:24;;;;:::i;:::-;23966:31;;;23740:269;;;:::o;36809:92::-;36851:7;36882;;36875:14;;36809:92;:::o;20590:91::-;20631:5;18396:2;20653:16;;20590:91;:::o;21910:230::-;21998:4;22019:83;22028:12;:10;:12::i;:::-;22042:7;22051:50;22090:10;22051:11;:25;22063:12;:10;:12::i;:::-;22051:25;;;;;;;;;;;;;;;:34;22077:7;22051:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;22019:8;:83::i;:::-;22124:4;22117:11;;21910:230;;;;:::o;22839:405::-;22895:14;22912:12;:10;:12::i;:::-;22895:29;;22948:11;:19;22960:6;22948:19;;;;;;;;;;;;;;;;;;;;;;;;;22947:20;22939:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23032:15;23056:19;23067:7;23056:10;:19::i;:::-;23031:44;;;;;;;23108:28;23128:7;23108;:15;23116:6;23108:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23090:7;:15;23098:6;23090:15;;;;;;;;;;;;;;;:46;;;;23161:20;23173:7;23161;;:11;;:20;;;;:::i;:::-;23151:7;:30;;;;23209:23;23224:7;23209:10;;:14;;:23;;;;:::i;:::-;23196:10;:36;;;;22839:405;;;:::o;18647:46::-;;;;;;;;;;;;;:::o;23256:472::-;23346:7;18132:15;23378:7;:18;;23370:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23452:17;23447:270;;23491:15;23515:19;23526:7;23515:10;:19::i;:::-;23490:44;;;;;;;23560:7;23553:14;;;;;23447:270;23610:23;23641:19;23652:7;23641:10;:19::i;:::-;23608:52;;;;;;;23686:15;23679:22;;;23256:472;;;;;:::o;18819:38::-;;;:::o;30311:168::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30369:23:::1;30395:24;30413:4;30395:9;:24::i;:::-;30369:50;;30434:33;30451:15;30434:16;:33::i;:::-;7696:1;30311:168::o:0;26360:131::-;26424:4;26452:18;:27;26471:7;26452:27;;;;;;;;;;;;;;;;;;;;;;;;;26445:34;;26360:131;;;:::o;37262:179::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37352:1:::1;37342:6;:11;;:26;;;;;37367:1;37357:6;:11;;37342:26;37334:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;37423:6;37413:7;:16;;;;37262:179:::0;:::o;8644:98::-;8690:7;8721:9;;8714:16;;8644:98;:::o;18900:30::-;;;;;;;;;;;;;:::o;20808:210::-;20874:7;20902:11;:20;20914:7;20902:20;;;;;;;;;;;;;;;;;;;;;;;;;20898:49;;;20931:7;:16;20939:7;20931:16;;;;;;;;;;;;;;;;20924:23;;;;20898:49;20969:37;20989:7;:16;20997:7;20989:16;;;;;;;;;;;;;;;;20969:19;:37::i;:::-;20962:44;;20808:210;;;;:::o;8081:160::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8192:1:::1;8155:40;;8176:6;::::0;::::1;;;;;;;;8155:40;;;;;;;;;;;;8227:1;8210:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8081:160::o:0;37828:141::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37941:16:::1;37921:17;;:36;;;;;;;;;;;;;;;;;;37828:141:::0;:::o;18704:40::-;;;;;;;;;;;;;:::o;7414:87::-;7452:7;7483:6;;;;;;;;;;;7476:13;;7414:87;:::o;20483:95::-;20522:13;20559:7;;;;;;;;;;;;;;;;;20552:14;;20483:95;:::o;38113:127::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38215:13:::1;38198:14;:30;;;;38113:127:::0;:::o;22152:281::-;22245:4;22266:129;22275:12;:10;:12::i;:::-;22289:7;22298:96;22337:15;22298:96;;;;;;;;;;;;;;;;;:11;:25;22310:12;:10;:12::i;:::-;22298:25;;;;;;;;;;;;;;;:34;22324:7;22298:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;22266:8;:129::i;:::-;22417:4;22410:11;;22152:281;;;;:::o;36913:93::-;36957:7;36986:8;;36979:15;;36913:93;:::o;21030:179::-;21108:4;21129:42;21139:12;:10;:12::i;:::-;21153:9;21164:6;21129:9;:42::i;:::-;21193:4;21186:11;;21030:179;;;;:::o;22575:145::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22700:8:::1;22670:18;:27;22689:7;22670:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;22575:145:::0;;:::o;24401:541::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24493:17:::1;:26;24511:7;24493:26;;;;;;;;;;;;;;;;;;;;;;;;;24484:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24568:9;24563:369;24587:16;:23;;;;24583:1;:27;24563:369;;;24664:7;24641:30;;:16;24658:1;24641:19;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;24637:281;;;24719:16;24762:1;24736:16;:23;;;;:27;24719:45;;;;;;;;;;;;;;;;;;;;;;;;;24697:16;24714:1;24697:19;;;;;;;;;;;;;;;;:67;;;;;;;;;;;;;;;;;;24817:5;24788:17;:26;24806:7;24788:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;24846:16;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24892:5;;24637:281;24612:3;;;;;;;24563:369;;;;24401:541:::0;:::o;18596:40::-;;;;;;;;;;;;;:::o;22445:118::-;22503:4;22531:11;:20;22543:7;22531:20;;;;;;;;;;;;;;;;;;;;;;;;;22524:27;;22445:118;;;:::o;21221:151::-;21302:7;21333:11;:18;21345:5;21333:18;;;;;;;;;;;;;;;:27;21352:7;21333:27;;;;;;;;;;;;;;;;21326:34;;21221:151;;;;:::o;30671:106::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30758:7:::1;30744:11;;:21;;;;;;;;;;;;;;;;;;30671:106:::0;:::o;24954:475::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25050:42:::1;25039:53;;:7;:53;;;;25031:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25155:11;:20;25167:7;25155:20;;;;;;;;;;;;;;;;;;;;;;;;;25154:21;25146:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;25244:1;25225:7;:16;25233:7;25225:16;;;;;;;;;;;;;;;;:20;25222:116;;;25285:37;25305:7;:16;25313:7;25305:16;;;;;;;;;;;;;;;;25285:19;:37::i;:::-;25266:7;:16;25274:7;25266:16;;;;;;;;;;;;;;;:56;;;;25222:116;25375:4;25352:11;:20;25364:7;25352:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;25394:9;25409:7;25394:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24954:475:::0;:::o;8372:260::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8485:1:::1;8465:22;;:8;:22;;;;8457:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8579:8;8550:38;;8571:6;::::0;::::1;;;;;;;;8550:38;;;;;;;;;;;;8612:8;8603:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;8372:260:::0;:::o;30491:168::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30549:26:::1;30578:21;30549:50;;30614:33;30628:18;30614:13;:33::i;:::-;7696:1;30491:168::o:0;37018:102::-;37065:7;37096:12;;37089:19;;37018:102;:::o;37132:118::-;37178:15;37217:21;37210:28;;37132:118;:::o;25441:518::-;7632:12;:10;:12::i;:::-;7622:22;;:6;;;;;;;;;;:22;;;7614:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25526:11:::1;:20;25538:7;25526:20;;;;;;;;;;;;;;;;;;;;;;;;;25518:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;25594:9;25589:359;25613:9;:16;;;;25609:1;:20;25589:359;;;25675:7;25659:23;;:9;25669:1;25659:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;25655:278;;;25722:9;25751:1;25732:9;:16;;;;:20;25722:31;;;;;;;;;;;;;;;;;;;;;;;;;25707:9;25717:1;25707:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;25795:1;25776:7;:16;25784:7;25776:16;;;;;;;;;;;;;;;:20;;;;25842:5;25819:11;:20;25831:7;25819:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;25870:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25908:5;;25655:278;25631:3;;;;;;;25589:359;;;;25441:518:::0;:::o;201:114::-;254:15;293:10;286:17;;201:114;:::o;26503:357::-;26617:1;26600:19;;:5;:19;;;;26592:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26702:1;26683:21;;:7;:21;;;;26675:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26790:6;26760:11;:18;26772:5;26760:18;;;;;;;;;;;;;;;:27;26779:7;26760:27;;;;;;;;;;;;;;;:36;;;;26832:7;26816:32;;26825:5;26816:32;;;26841:6;26816:32;;;;;;;;;;;;;;;;;;26503:357;;;:::o;26872:2507::-;26991:1;26973:20;;:6;:20;;;;26965:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27079:1;27058:23;;:9;:23;;;;27050:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27153:1;27144:6;:10;27136:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27224:17;:25;27242:6;27224:25;;;;;;;;;;;;;;;;;;;;;;;;;27223:26;27215:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27297:17;:29;27315:10;27297:29;;;;;;;;;;;;;;;;;;;;;;;;;27296:30;27288:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27374:17;:28;27392:9;27374:28;;;;;;;;;;;;;;;;;;;;;;;;;27373:29;27365:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27454:7;:5;:7::i;:::-;27444:17;;:6;:17;;;;:41;;;;;27478:7;:5;:7::i;:::-;27465:20;;:9;:20;;;;27444:41;27441:156;;;27524:12;;27514:6;:22;;27506:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27441:156;27624:7;:5;:7::i;:::-;27614:17;;:6;:17;;;;:41;;;;;27648:7;:5;:7::i;:::-;27635:20;;:9;:20;;;;27614:41;:71;;;;;27672:13;27659:26;;:9;:26;;;;27614:71;:103;;;;;27710:6;27689:28;;:9;:28;;;;27614:103;27611:309;;;27738:29;27770:20;27780:9;27770;:20::i;:::-;27738:52;;27851:14;;27841:6;27817:21;:30;:48;;27809:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27611:309;;28200:28;28231:24;28249:4;28231:9;:24::i;:::-;28200:55;;28299:12;;28275:20;:36;28272:124;;28368:12;;28345:35;;28272:124;28412:24;19055:13;28439:20;:53;;28412:80;;28512:6;;;;;;;;;;;28511:7;:22;;;;;28522:11;;;;;;;;;;;28511:22;:45;;;;;28537:19;28511:45;:72;;;;;28570:13;28560:23;;:6;:23;;;;28511:72;28507:417;;;28675:38;28692:20;28675:16;:38::i;:::-;28734:26;28763:21;28734:50;;28827:1;28806:18;:22;28803:106;;;28853:36;28867:21;28853:13;:36::i;:::-;28803:106;28507:417;;29005:12;29020:4;29005:19;;29132:18;:26;29151:6;29132:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;29162:18;:29;29181:9;29162:29;;;;;;;;;;;;;;;;;;;;;;;;;29132:59;29129:113;;;29221:5;29211:15;;29129:113;29320:47;29335:6;29342:9;29352:6;29359:7;29320:14;:47::i;:::-;26872:2507;;;;;;:::o;2108:208::-;2194:7;2231:1;2226;:6;;2234:12;2218:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2262:9;2278:1;2274;:5;2262:17;;2303:1;2296:8;;;2108:208;;;;;:::o;36015:175::-;36056:7;36081:15;36098;36117:19;:17;:19::i;:::-;36080:56;;;;36158:20;36170:7;36158;:11;;:20;;;;:::i;:::-;36151:27;;;;36015:175;:::o;2851:140::-;2909:7;2940:39;2944:1;2947;2940:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2933:46;;2851:140;;;;:::o;1743:197::-;1801:7;1825:9;1841:1;1837;:5;1825:17;;1870:1;1865;:6;;1857:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1927:1;1920:8;;;1743:197;;;;:::o;34708:467::-;34767:7;34776;34785;34794;34803;34812;34833:23;34858:12;34872:13;34889:39;34901:7;34910;;34919:8;;34889:11;:39::i;:::-;34832:96;;;;;;34939:19;34961:10;:8;:10::i;:::-;34939:32;;34983:15;35000:23;35025:12;35041:46;35053:7;35062:4;35068:5;35075:11;35041;:46::i;:::-;34982:105;;;;;;35106:7;35115:15;35132:4;35138:15;35155:4;35161:5;35098:69;;;;;;;;;;;;;;;;;;;34708:467;;;;;;;:::o;1952:144::-;2010:7;2041:43;2045:1;2048;2041:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2034:50;;1952:144;;;;:::o;29391:656::-;19297:4;19288:6;;:13;;;;;;;;;;;;;;;;;;29536:21:::1;29574:1;29560:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29536:40;;29609:4;29591;29596:1;29591:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;29639:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;29629:4;29634:1;29629:7;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;29678:62;29695:4;29710:15;29728:11;29678:8;:62::i;:::-;29787:15;:66;;;29872:11;29902:1;29950:4;29981;30005:15;29787:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19316:1;19341:5:::0;19332:6;;:14;;;;;;;;;;;;;;;;;;29391:656;:::o;30059:240::-;30121:17;;;;;;;;;;;:26;;:41;30148:13;30159:1;30148:6;:10;;:13;;;;:::i;:::-;30121:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30177:23;;;;;;;;;;;:32;;:47;30210:13;30221:1;30210:6;:10;;:13;;;;:::i;:::-;30177:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30239:17;;;;;;;;;;;:26;;:48;30266:20;30284:1;30266:13;30277:1;30266:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;30239:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30059:240;:::o;30789:883::-;30905:7;30901:44;;30931:14;:12;:14::i;:::-;30901:44;30966:11;:19;30978:6;30966:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;30990:11;:22;31002:9;30990:22;;;;;;;;;;;;;;;;;;;;;;;;;30989:23;30966:46;30962:637;;;31033:48;31055:6;31063:9;31074:6;31033:21;:48::i;:::-;30962:637;;;31108:11;:19;31120:6;31108:19;;;;;;;;;;;;;;;;;;;;;;;;;31107:20;:46;;;;;31131:11;:22;31143:9;31131:22;;;;;;;;;;;;;;;;;;;;;;;;;31107:46;31103:496;;;31174:46;31194:6;31202:9;31213:6;31174:19;:46::i;:::-;31103:496;;;31247:11;:19;31259:6;31247:19;;;;;;;;;;;;;;;;;;;;;;;;;31246:20;:47;;;;;31271:11;:22;31283:9;31271:22;;;;;;;;;;;;;;;;;;;;;;;;;31270:23;31246:47;31242:357;;;31314:44;31332:6;31340:9;31351:6;31314:17;:44::i;:::-;31242:357;;;31384:11;:19;31396:6;31384:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;31407:11;:22;31419:9;31407:22;;;;;;;;;;;;;;;;;;;;;;;;;31384:45;31380:219;;;31450:48;31472:6;31480:9;31491:6;31450:21;:48::i;:::-;31380:219;;;31539:44;31557:6;31565:9;31576:6;31539:17;:44::i;:::-;31380:219;31242:357;31103:496;30962:637;31619:7;31615:45;;31645:15;:13;:15::i;:::-;31615:45;30789:883;;;;:::o;36202:595::-;36252:7;36261;36285:15;36303:7;;36285:25;;36325:15;18132;36325:25;;36370:9;36365:305;36389:9;:16;;;;36385:1;:20;36365:305;;;36459:7;36435;:21;36443:9;36453:1;36443:12;;;;;;;;;;;;;;;;;;;;;;;;;36435:21;;;;;;;;;;;;;;;;:31;:66;;;;36494:7;36470;:21;36478:9;36488:1;36478:12;;;;;;;;;;;;;;;;;;;;;;;;;36470:21;;;;;;;;;;;;;;;;:31;36435:66;36431:97;;;36511:7;;18132:15;36503:25;;;;;;;;;36431:97;36557:34;36569:7;:21;36577:9;36587:1;36577:12;;;;;;;;;;;;;;;;;;;;;;;;;36569:21;;;;;;;;;;;;;;;;36557:7;:11;;:34;;;;:::i;:::-;36547:44;;36620:34;36632:7;:21;36640:9;36650:1;36640:12;;;;;;;;;;;;;;;;;;;;;;;;;36632:21;;;;;;;;;;;;;;;;36620:7;:11;;:34;;;;:::i;:::-;36610:44;;36407:3;;;;;;;36365:305;;;;36698:20;18132:15;36698:7;;:11;;:20;;;;:::i;:::-;36688:7;:30;36684:61;;;36728:7;;18132:15;36720:25;;;;;;;;36684:61;36768:7;36777;36760:25;;;;;;36202:595;;;:::o;3003:298::-;3089:7;3125:1;3121;:5;3128:12;3113:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3156:9;3172:1;3168;:5;;;;;;3156:17;;3288:1;3281:8;;;3003:298;;;;;:::o;35187:371::-;35280:7;35289;35298;35322:12;35337:28;35361:3;35337:19;35349:6;35337:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;35322:43;;35380:13;35396:29;35421:3;35396:20;35408:7;35396;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;35380:45;;35440:23;35466:28;35488:5;35466:17;35478:4;35466:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;35440:54;;35517:15;35534:4;35540:5;35509:37;;;;;;;;;35187:371;;;;;;;:::o;35570:433::-;35680:7;35689;35698;35722:15;35740:24;35752:11;35740:7;:11;;:24;;;;:::i;:::-;35722:42;;35779:12;35794:21;35803:11;35794:4;:8;;:21;;;;:::i;:::-;35779:36;;35830:13;35846:22;35856:11;35846:5;:9;;:22;;;;:::i;:::-;35830:38;;35883:23;35909:28;35931:5;35909:17;35921:4;35909:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;35883:54;;35960:7;35969:15;35986:4;35952:39;;;;;;;;;;35570:433;;;;;;;;:::o;2328:511::-;2386:7;2652:1;2647;:6;2643:55;;;2681:1;2674:8;;;;2643:55;2714:9;2730:1;2726;:5;2714:17;;2763:1;2758;2754;:5;;;;;;:10;2746:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2826:1;2819:8;;;2328:511;;;;;:::o;25971:238::-;26032:1;26021:7;;:12;:29;;;;;26049:1;26037:8;;:13;26021:29;26018:41;;;26052:7;;26018:41;26093:7;;26075:15;:25;;;;26134:8;;26115:16;:27;;;;26169:1;26159:7;:11;;;;26196:1;26185:8;:12;;;;25971:238;:::o;32815:580::-;32922:15;32939:23;32964:12;32978:23;33003:12;33017:13;33034:19;33045:7;33034:10;:19::i;:::-;32921:132;;;;;;;;;;;;33086:28;33106:7;33086;:15;33094:6;33086:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33068:7;:15;33076:6;33068:15;;;;;;;;;;;;;;;:46;;;;33147:28;33167:7;33147;:15;33155:6;33147:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33129:7;:15;33137:6;33129:15;;;;;;;;;;;;;;;:46;;;;33211:39;33234:15;33211:7;:18;33219:9;33211:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33190:7;:18;33198:9;33190:18;;;;;;;;;;;;;;;:60;;;;33265:16;33275:5;33265:9;:16::i;:::-;33296:23;33308:4;33314;33296:11;:23::i;:::-;33356:9;33339:44;;33348:6;33339:44;;;33367:15;33339:44;;;;;;;;;;;;;;;;;;32815:580;;;;;;;;;:::o;32211:592::-;32316:15;32333:23;32358:12;32372:23;32397:12;32411:13;32428:19;32439:7;32428:10;:19::i;:::-;32315:132;;;;;;;;;;;;32480:28;32500:7;32480;:15;32488:6;32480:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32462:7;:15;32470:6;32462:15;;;;;;;;;;;;;;;:46;;;;32544:39;32567:15;32544:7;:18;32552:9;32544:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32523:7;:18;32531:9;32523:18;;;;;;;;;;;;;;;:60;;;;32619:39;32642:15;32619:7;:18;32627:9;32619:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32598:7;:18;32606:9;32598:18;;;;;;;;;;;;;;;:60;;;;32673:16;32683:5;32673:9;:16::i;:::-;32704:23;32716:4;32722;32704:11;:23::i;:::-;32764:9;32747:44;;32756:6;32747:44;;;32775:15;32747:44;;;;;;;;;;;;;;;;;;32211:592;;;;;;;;;:::o;31684:515::-;31787:15;31804:23;31829:12;31843:23;31868:12;31882:13;31899:19;31910:7;31899:10;:19::i;:::-;31786:132;;;;;;;;;;;;31951:28;31971:7;31951;:15;31959:6;31951:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31933:7;:15;31941:6;31933:15;;;;;;;;;;;;;;;:46;;;;32015:39;32038:15;32015:7;:18;32023:9;32015:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31994:7;:18;32002:9;31994:18;;;;;;;;;;;;;;;:60;;;;32069:16;32079:5;32069:9;:16::i;:::-;32100:23;32112:4;32118;32100:11;:23::i;:::-;32160:9;32143:44;;32152:6;32143:44;;;32171:15;32143:44;;;;;;;;;;;;;;;;;;31684:515;;;;;;;;;:::o;33407:655::-;33514:15;33531:23;33556:12;33570:23;33595:12;33609:13;33626:19;33637:7;33626:10;:19::i;:::-;33513:132;;;;;;;;;;;;33678:28;33698:7;33678;:15;33686:6;33678:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33660:7;:15;33668:6;33660:15;;;;;;;;;;;;;;;:46;;;;33739:28;33759:7;33739;:15;33747:6;33739:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33721:7;:15;33729:6;33721:15;;;;;;;;;;;;;;;:46;;;;33803:39;33826:15;33803:7;:18;33811:9;33803:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33782:7;:18;33790:9;33782:18;;;;;;;;;;;;;;;:60;;;;33878:39;33901:15;33878:7;:18;33886:9;33878:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33857:7;:18;33865:9;33857:18;;;;;;;;;;;;;;;:60;;;;33932:16;33942:5;33932:9;:16::i;:::-;33963:23;33975:4;33981;33963:11;:23::i;:::-;34023:9;34006:44;;34015:6;34006:44;;;34034:15;34006:44;;;;;;;;;;;;;;;;;;33407:655;;;;;;;;;:::o;26221:127::-;26279:15;;26269:7;:25;;;;26320:16;;26309:8;:27;;;;26221:127::o;34074:349::-;34131:19;34154:10;:8;:10::i;:::-;34131:33;;34179:13;34195:22;34205:11;34195:5;:9;;:22;;;;:::i;:::-;34179:38;;34257:33;34284:5;34257:7;:22;34273:4;34257:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;34232:7;:22;34248:4;34232:22;;;;;;;;;;;;;;;:58;;;;34308:11;:26;34328:4;34308:26;;;;;;;;;;;;;;;;;;;;;;;;;34305:106;;;34378:33;34405:5;34378:7;:22;34394:4;34378:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;34353:7;:22;34369:4;34353:22;;;;;;;;;;;;;;;:58;;;;34305:106;34074:349;;;:::o;34435:159::-;34517:17;34529:4;34517:7;;:11;;:17;;;;:::i;:::-;34507:7;:27;;;;34562:20;34577:4;34562:10;;:14;;:20;;;;:::i;:::-;34549:10;:33;;;;34435:159;;:::o
Swarm Source
ipfs://3bb691eb61f86a19053c7d78c93a8918ff102569b9c6f9d39407202ca2e63af9
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.