ERC-20
Overview
Max Total Supply
1,000,000,000 X2.0
Holders
41
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
5,742,596.657230476 X2.0Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
X2
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-26 */ /** *Submitted for verification at Etherscan.io on 2023-07-25 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.18; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface 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); } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @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) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @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) { 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, reverting 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) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * 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); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * 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); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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 IUniswapV2Factory { function getPair(address tokenA, address tokenB) external view returns (address pair); function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Pair { function factory() external view returns (address); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract X2 is Context, IERC20, Ownable { using SafeMath for uint256; event SwapTokensForETH(uint256 amountIn, address[] path); event SwapAndLiquifyEnabledUpdated(bool enabled); bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcludedFromWhale; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; address payable public marketingAddress; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; uint256 public sellMarketingFee; uint256 public buyMarketingFee; uint256 public _maxTxAmount; uint256 public minimumTokensBeforeSwap; constructor() { _name = "X2.0"; _symbol = "X2.0"; _decimals = 9; _mint(msg.sender, 1000_000_000 * 10**9); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _maxTxAmount = 1000_000_0 * 10**9; minimumTokensBeforeSwap = 1000_0 * 10**9; sellMarketingFee = 85; buyMarketingFee = 0; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; marketingAddress = payable(0x2b67Ffb3C324c29dC6F4f1507478a113889ebeb2); } function isExcludedFromFee(address account) external view returns(bool) { return _isExcludedFromFee[account]; } function excludeFromFee(address account) external onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) external onlyOwner { _isExcludedFromFee[account] = false; } /** * @dev Returns the name of the token. */ function name() public view virtual returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual 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 {_setupDecimals} is * called. * * 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 returns (uint8) { return _decimals; } /** * @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) { _transferTokens(_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) { _transferTokens(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 setFeeRate(uint256 _sellMarketingFee, uint256 _buyMarketingFee) external onlyOwner { buyMarketingFee = _buyMarketingFee; sellMarketingFee = _sellMarketingFee; } function swapAllFee() public onlyOwner { uint256 contractTokenBalance = balanceOf(address(this)); swapFeeTokensForEth(contractTokenBalance); } function swapFeeTokensForEth(uint256 contractTokenBalance) private lockTheSwap { swapTokensForEth(contractTokenBalance); uint256 ethBalance = address(this).balance; marketingAddress.transfer(ethBalance); } 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), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function _transferTokens(address from, address to, uint256 amount) internal virtual { if(from != owner() && to != owner()) { require(amount <= _maxTxAmount, "Exceeds Max Tx Amount"); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap; if (!inSwapAndLiquify && swapAndLiquifyEnabled && from != uniswapV2Pair && from != owner() && balanceOf(uniswapV2Pair)>0) { if (overMinimumTokenBalance) { contractTokenBalance = minimumTokensBeforeSwap; swapFeeTokensForEth(contractTokenBalance); } } if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { uint256 _feeTokens = 0; if(to==uniswapV2Pair) { _feeTokens = amount.div(100).mul(sellMarketingFee); } else { _feeTokens = amount.div(100).mul(buyMarketingFee); } if(_feeTokens>0) { _transfer(from, address(this), _feeTokens); amount = amount.sub(_feeTokens); } } _transfer(from, to, 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"); _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: * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _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"); _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 Sets {decimals} to a value other than the default one of 18. * * WARNING: This function should only be called from the constructor. Most * applications that interact with token contracts will not expect * {decimals} to ever change, and may work incorrectly if it does. */ function _setupDecimals(uint8 decimals_) internal virtual { _decimals = decimals_; } /** * @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 setMinimumTokensBeforeSwap(uint256 _minimumTokensBeforeSwap) external onlyOwner() { minimumTokensBeforeSwap = _minimumTokensBeforeSwap; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setMarketingAddress(address _marketingAddress) external onlyOwner() { marketingAddress = payable(_marketingAddress); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"account","type":"address"}],"name":"balanceOf","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":"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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"}],"name":"setFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumTokensBeforeSwap","type":"uint256"}],"name":"setMinimumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAllFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a060405260018060156101000a81548160ff0219169083151502179055503480156200002b57600080fd5b5060006200003e620004d760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600481526020017f58322e30000000000000000000000000000000000000000000000000000000008152506007908162000122919062000981565b506040518060400160405280600481526020017f58322e30000000000000000000000000000000000000000000000000000000008152506008908162000169919062000981565b5060098060006101000a81548160ff021916908360ff1602179055506200019f33670de0b6b3a7640000620004df60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022a919062000ad2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000292573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b8919062000ad2565b6040518363ffffffff1660e01b8152600401620002d792919062000b15565b6020604051808303816000875af1158015620002f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031d919062000ad2565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050662386f26fc10000600d819055506509184e72a000600e819055506055600b819055506000600c81905550600160046000620003d26200067b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550732b67ffb3c324c29dc6f4f1507478a113889ebeb2600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000ccf565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000551576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005489062000ba3565b60405180910390fd5b6200056d81600654620006a460201b620015af1790919060201c565b600681905550620005cc81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620006a460201b620015af1790919060201c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200066f919062000bd6565b60405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808284620006b5919062000c22565b905083811015620006fd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006f49062000cad565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200078957607f821691505b6020821081036200079f576200079e62000741565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007ca565b620008158683620007ca565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008626200085c62000856846200082d565b62000837565b6200082d565b9050919050565b6000819050919050565b6200087e8362000841565b620008966200088d8262000869565b848454620007d7565b825550505050565b600090565b620008ad6200089e565b620008ba81848462000873565b505050565b5b81811015620008e257620008d6600082620008a3565b600181019050620008c0565b5050565b601f8211156200093157620008fb81620007a5565b6200090684620007ba565b8101602085101562000916578190505b6200092e6200092585620007ba565b830182620008bf565b50505b505050565b600082821c905092915050565b6000620009566000198460080262000936565b1980831691505092915050565b600062000971838362000943565b9150826002028217905092915050565b6200098c8262000707565b67ffffffffffffffff811115620009a857620009a762000712565b5b620009b4825462000770565b620009c1828285620008e6565b600060209050601f831160018114620009f95760008415620009e4578287015190505b620009f0858262000963565b86555062000a60565b601f19841662000a0986620007a5565b60005b8281101562000a335784890151825560018201915060208501945060208101905062000a0c565b8683101562000a53578489015162000a4f601f89168262000943565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a9a8262000a6d565b9050919050565b62000aac8162000a8d565b811462000ab857600080fd5b50565b60008151905062000acc8162000aa1565b92915050565b60006020828403121562000aeb5762000aea62000a68565b5b600062000afb8482850162000abb565b91505092915050565b62000b0f8162000a8d565b82525050565b600060408201905062000b2c600083018562000b04565b62000b3b602083018462000b04565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000b8b601f8362000b42565b915062000b988262000b53565b602082019050919050565b6000602082019050818103600083015262000bbe8162000b7c565b9050919050565b62000bd0816200082d565b82525050565b600060208201905062000bed600083018462000bc5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c2f826200082d565b915062000c3c836200082d565b925082820190508082111562000c575762000c5662000bf3565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000c95601b8362000b42565b915062000ca28262000c5d565b602082019050919050565b6000602082019050818103600083015262000cc88162000c86565b9050919050565b60805161311162000d00600039600081816107f3015281816120c5015281816121a601526121cd01526131116000f3fe6080604052600436106101d15760003560e01c80637d1db4a5116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610689578063ea2f0b37146106c6578063f2d2a751146106ef578063f2fde38b14610718576101d8565b8063a9059cbb146105cf578063aee50b1e1461060c578063c49b9a8014610635578063d2d7ad831461065e576101d8565b806392136913116100d1578063921369131461051157806395d89b411461053c578063a457c2d714610567578063a5ece941146105a4576101d8565b80637d1db4a5146104925780638da5cb5b146104bd578063906e9dd0146104e8576101d8565b8063437823ec1161016f57806370a082311161013e57806370a08231146103fc578063715018a61461043957806377e3e3fb146104505780637bce5a0414610467576101d8565b8063437823ec1461034057806349bd5a5e146103695780634a74bb02146103945780635342acb4146103bf576101d8565b806318160ddd116101ab57806318160ddd1461027057806323b872dd1461029b578063313ce567146102d85780633950935114610303576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610741565b6040516101ff919061232c565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906123e7565b6107d3565b60405161023c9190612442565b60405180910390f35b34801561025157600080fd5b5061025a6107f1565b60405161026791906124bc565b60405180910390f35b34801561027c57600080fd5b50610285610815565b60405161029291906124e6565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612501565b61081f565b6040516102cf9190612442565b60405180910390f35b3480156102e457600080fd5b506102ed6108f8565b6040516102fa9190612570565b60405180910390f35b34801561030f57600080fd5b5061032a600480360381019061032591906123e7565b61090f565b6040516103379190612442565b60405180910390f35b34801561034c57600080fd5b506103676004803603810190610362919061258b565b6109c2565b005b34801561037557600080fd5b5061037e610ab2565b60405161038b91906125c7565b60405180910390f35b3480156103a057600080fd5b506103a9610ad8565b6040516103b69190612442565b60405180910390f35b3480156103cb57600080fd5b506103e660048036038101906103e1919061258b565b610aeb565b6040516103f39190612442565b60405180910390f35b34801561040857600080fd5b50610423600480360381019061041e919061258b565b610b41565b60405161043091906124e6565b60405180910390f35b34801561044557600080fd5b5061044e610b8a565b005b34801561045c57600080fd5b50610465610cdd565b005b34801561047357600080fd5b5061047c610d8b565b60405161048991906124e6565b60405180910390f35b34801561049e57600080fd5b506104a7610d91565b6040516104b491906124e6565b60405180910390f35b3480156104c957600080fd5b506104d2610d97565b6040516104df91906125c7565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a919061258b565b610dc0565b005b34801561051d57600080fd5b50610526610e99565b60405161053391906124e6565b60405180910390f35b34801561054857600080fd5b50610551610e9f565b60405161055e919061232c565b60405180910390f35b34801561057357600080fd5b5061058e600480360381019061058991906123e7565b610f31565b60405161059b9190612442565b60405180910390f35b3480156105b057600080fd5b506105b9610ffe565b6040516105c69190612603565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f191906123e7565b611024565b6040516106039190612442565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061261e565b611042565b005b34801561064157600080fd5b5061065c60048036038101906106579190612677565b6110e1565b005b34801561066a57600080fd5b506106736111ca565b60405161068091906124e6565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab91906126a4565b6111d0565b6040516106bd91906124e6565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e8919061258b565b611257565b005b3480156106fb57600080fd5b50610716600480360381019061071191906126e4565b611347565b005b34801561072457600080fd5b5061073f600480360381019061073a919061258b565b6113ee565b005b60606007805461075090612753565b80601f016020809104026020016040519081016040528092919081815260200182805461077c90612753565b80156107c95780601f1061079e576101008083540402835291602001916107c9565b820191906000526020600020905b8154815290600101906020018083116107ac57829003601f168201915b5050505050905090565b60006107e76107e061160d565b8484611615565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600654905090565b600061082c8484846117de565b6108ed8461083861160d565b6108e88560405180606001604052806028815260200161308f60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061089e61160d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b619092919063ffffffff16565b611615565b600190509392505050565b6000600960009054906101000a900460ff16905090565b60006109b861091c61160d565b846109b3856003600061092d61160d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115af90919063ffffffff16565b611615565b6001905092915050565b6109ca61160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4e906127d0565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160159054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b9261160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c16906127d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ce561160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d69906127d0565b60405180910390fd5b6000610d7d30610b41565b9050610d8881611bbf565b50565b600c5481565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610dc861160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c906127d0565b60405180910390fd5b80600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b606060088054610eae90612753565b80601f0160208091040260200160405190810160405280929190818152602001828054610eda90612753565b8015610f275780601f10610efc57610100808354040283529160200191610f27565b820191906000526020600020905b815481529060010190602001808311610f0a57829003601f168201915b5050505050905090565b6000610ff4610f3e61160d565b84610fef856040518060600160405280602581526020016130b76025913960036000610f6861160d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b619092919063ffffffff16565b611615565b6001905092915050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061103861103161160d565b84846117de565b6001905092915050565b61104a61160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ce906127d0565b60405180910390fd5b80600e8190555050565b6110e961160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116d906127d0565b60405180910390fd5b80600160156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516111bf9190612442565b60405180910390a150565b600e5481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61125f61160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e3906127d0565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61134f61160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d3906127d0565b60405180910390fd5b80600c8190555081600b819055505050565b6113f661160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a906127d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e990612862565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082846115be91906128b1565b905083811015611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fa90612931565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b906129c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea90612a55565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117d191906124e6565b60405180910390a3505050565b6117e6610d97565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118545750611824610d97565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561189f57600d5481111561189e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189590612ac1565b60405180910390fd5b5b60006118aa30610b41565b90506000600e548210159050600160149054906101000a900460ff161580156118df5750600160159054906101000a900460ff165b80156119395750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119785750611948610d97565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119ae575060006119ac600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b41565b115b156119c95780156119c857600e5491506119c782611bbf565b5b5b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a6d5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b4f576000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611af857611af1600b54611ae3606487611c6f90919063ffffffff16565b611cc790919063ffffffff16565b9050611b23565b611b20600c54611b12606487611c6f90919063ffffffff16565b611cc790919063ffffffff16565b90505b6000811115611b4d57611b37863083611d41565b611b4a8185611fcd90919063ffffffff16565b93505b505b611b5a858585611d41565b5050505050565b6000838311158290611ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba0919061232c565b60405180910390fd5b508284611bb69190612ae1565b90509392505050565b60018060146101000a81548160ff021916908315150217905550611be281612026565b6000479050600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c4f573d6000803e3d6000fd5b50506000600160146101000a81548160ff02191690831515021790555050565b6000808211611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa90612b61565b60405180910390fd5b8183611cbf9190612bb0565b905092915050565b6000808303611cd95760009050611d3b565b60008284611ce79190612be1565b9050828482611cf69190612bb0565b14611d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2d90612c95565b60405180910390fd5b809150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da790612d27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1690612db9565b60405180910390fd5b611e8b8160405180606001604052806026815260200161306960269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b619092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f2081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115af90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fc091906124e6565b60405180910390a3505050565b600082821115612012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200990612e25565b60405180910390fd5b818361201e9190612ae1565b905092915050565b6000600267ffffffffffffffff81111561204357612042612e45565b5b6040519080825280602002602001820160405280156120715781602001602082028036833780820191505090505b509050308160008151811061208957612088612e74565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121529190612eb8565b8160018151811061216657612165612e74565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121cb307f000000000000000000000000000000000000000000000000000000000000000084611615565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161222d959493929190612fde565b600060405180830381600087803b15801561224757600080fd5b505af115801561225b573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612290929190613038565b60405180910390a15050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122d65780820151818401526020810190506122bb565b60008484015250505050565b6000601f19601f8301169050919050565b60006122fe8261229c565b61230881856122a7565b93506123188185602086016122b8565b612321816122e2565b840191505092915050565b6000602082019050818103600083015261234681846122f3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061237e82612353565b9050919050565b61238e81612373565b811461239957600080fd5b50565b6000813590506123ab81612385565b92915050565b6000819050919050565b6123c4816123b1565b81146123cf57600080fd5b50565b6000813590506123e1816123bb565b92915050565b600080604083850312156123fe576123fd61234e565b5b600061240c8582860161239c565b925050602061241d858286016123d2565b9150509250929050565b60008115159050919050565b61243c81612427565b82525050565b60006020820190506124576000830184612433565b92915050565b6000819050919050565b600061248261247d61247884612353565b61245d565b612353565b9050919050565b600061249482612467565b9050919050565b60006124a682612489565b9050919050565b6124b68161249b565b82525050565b60006020820190506124d160008301846124ad565b92915050565b6124e0816123b1565b82525050565b60006020820190506124fb60008301846124d7565b92915050565b60008060006060848603121561251a5761251961234e565b5b60006125288682870161239c565b93505060206125398682870161239c565b925050604061254a868287016123d2565b9150509250925092565b600060ff82169050919050565b61256a81612554565b82525050565b60006020820190506125856000830184612561565b92915050565b6000602082840312156125a1576125a061234e565b5b60006125af8482850161239c565b91505092915050565b6125c181612373565b82525050565b60006020820190506125dc60008301846125b8565b92915050565b60006125ed82612353565b9050919050565b6125fd816125e2565b82525050565b600060208201905061261860008301846125f4565b92915050565b6000602082840312156126345761263361234e565b5b6000612642848285016123d2565b91505092915050565b61265481612427565b811461265f57600080fd5b50565b6000813590506126718161264b565b92915050565b60006020828403121561268d5761268c61234e565b5b600061269b84828501612662565b91505092915050565b600080604083850312156126bb576126ba61234e565b5b60006126c98582860161239c565b92505060206126da8582860161239c565b9150509250929050565b600080604083850312156126fb576126fa61234e565b5b6000612709858286016123d2565b925050602061271a858286016123d2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061276b57607f821691505b60208210810361277e5761277d612724565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006127ba6020836122a7565b91506127c582612784565b602082019050919050565b600060208201905081810360008301526127e9816127ad565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061284c6026836122a7565b9150612857826127f0565b604082019050919050565b6000602082019050818103600083015261287b8161283f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128bc826123b1565b91506128c7836123b1565b92508282019050808211156128df576128de612882565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061291b601b836122a7565b9150612926826128e5565b602082019050919050565b6000602082019050818103600083015261294a8161290e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006129ad6024836122a7565b91506129b882612951565b604082019050919050565b600060208201905081810360008301526129dc816129a0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a3f6022836122a7565b9150612a4a826129e3565b604082019050919050565b60006020820190508181036000830152612a6e81612a32565b9050919050565b7f45786365656473204d617820547820416d6f756e740000000000000000000000600082015250565b6000612aab6015836122a7565b9150612ab682612a75565b602082019050919050565b60006020820190508181036000830152612ada81612a9e565b9050919050565b6000612aec826123b1565b9150612af7836123b1565b9250828203905081811115612b0f57612b0e612882565b5b92915050565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000600082015250565b6000612b4b601a836122a7565b9150612b5682612b15565b602082019050919050565b60006020820190508181036000830152612b7a81612b3e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612bbb826123b1565b9150612bc6836123b1565b925082612bd657612bd5612b81565b5b828204905092915050565b6000612bec826123b1565b9150612bf7836123b1565b9250828202612c05816123b1565b91508282048414831517612c1c57612c1b612882565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c7f6021836122a7565b9150612c8a82612c23565b604082019050919050565b60006020820190508181036000830152612cae81612c72565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d116025836122a7565b9150612d1c82612cb5565b604082019050919050565b60006020820190508181036000830152612d4081612d04565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612da36023836122a7565b9150612dae82612d47565b604082019050919050565b60006020820190508181036000830152612dd281612d96565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000612e0f601e836122a7565b9150612e1a82612dd9565b602082019050919050565b60006020820190508181036000830152612e3e81612e02565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612eb281612385565b92915050565b600060208284031215612ece57612ecd61234e565b5b6000612edc84828501612ea3565b91505092915050565b6000819050919050565b6000612f0a612f05612f0084612ee5565b61245d565b6123b1565b9050919050565b612f1a81612eef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f5581612373565b82525050565b6000612f678383612f4c565b60208301905092915050565b6000602082019050919050565b6000612f8b82612f20565b612f958185612f2b565b9350612fa083612f3c565b8060005b83811015612fd1578151612fb88882612f5b565b9750612fc383612f73565b925050600181019050612fa4565b5085935050505092915050565b600060a082019050612ff360008301886124d7565b6130006020830187612f11565b81810360408301526130128186612f80565b905061302160608301856125b8565b61302e60808301846124d7565b9695505050505050565b600060408201905061304d60008301856124d7565b818103602083015261305f8184612f80565b9050939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b01eb841a159d8a197a4821bcf37844ec58fdae618bc9258c668137bb9b5154064736f6c63430008120033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c80637d1db4a5116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610689578063ea2f0b37146106c6578063f2d2a751146106ef578063f2fde38b14610718576101d8565b8063a9059cbb146105cf578063aee50b1e1461060c578063c49b9a8014610635578063d2d7ad831461065e576101d8565b806392136913116100d1578063921369131461051157806395d89b411461053c578063a457c2d714610567578063a5ece941146105a4576101d8565b80637d1db4a5146104925780638da5cb5b146104bd578063906e9dd0146104e8576101d8565b8063437823ec1161016f57806370a082311161013e57806370a08231146103fc578063715018a61461043957806377e3e3fb146104505780637bce5a0414610467576101d8565b8063437823ec1461034057806349bd5a5e146103695780634a74bb02146103945780635342acb4146103bf576101d8565b806318160ddd116101ab57806318160ddd1461027057806323b872dd1461029b578063313ce567146102d85780633950935114610303576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610741565b6040516101ff919061232c565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906123e7565b6107d3565b60405161023c9190612442565b60405180910390f35b34801561025157600080fd5b5061025a6107f1565b60405161026791906124bc565b60405180910390f35b34801561027c57600080fd5b50610285610815565b60405161029291906124e6565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612501565b61081f565b6040516102cf9190612442565b60405180910390f35b3480156102e457600080fd5b506102ed6108f8565b6040516102fa9190612570565b60405180910390f35b34801561030f57600080fd5b5061032a600480360381019061032591906123e7565b61090f565b6040516103379190612442565b60405180910390f35b34801561034c57600080fd5b506103676004803603810190610362919061258b565b6109c2565b005b34801561037557600080fd5b5061037e610ab2565b60405161038b91906125c7565b60405180910390f35b3480156103a057600080fd5b506103a9610ad8565b6040516103b69190612442565b60405180910390f35b3480156103cb57600080fd5b506103e660048036038101906103e1919061258b565b610aeb565b6040516103f39190612442565b60405180910390f35b34801561040857600080fd5b50610423600480360381019061041e919061258b565b610b41565b60405161043091906124e6565b60405180910390f35b34801561044557600080fd5b5061044e610b8a565b005b34801561045c57600080fd5b50610465610cdd565b005b34801561047357600080fd5b5061047c610d8b565b60405161048991906124e6565b60405180910390f35b34801561049e57600080fd5b506104a7610d91565b6040516104b491906124e6565b60405180910390f35b3480156104c957600080fd5b506104d2610d97565b6040516104df91906125c7565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a919061258b565b610dc0565b005b34801561051d57600080fd5b50610526610e99565b60405161053391906124e6565b60405180910390f35b34801561054857600080fd5b50610551610e9f565b60405161055e919061232c565b60405180910390f35b34801561057357600080fd5b5061058e600480360381019061058991906123e7565b610f31565b60405161059b9190612442565b60405180910390f35b3480156105b057600080fd5b506105b9610ffe565b6040516105c69190612603565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f191906123e7565b611024565b6040516106039190612442565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061261e565b611042565b005b34801561064157600080fd5b5061065c60048036038101906106579190612677565b6110e1565b005b34801561066a57600080fd5b506106736111ca565b60405161068091906124e6565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab91906126a4565b6111d0565b6040516106bd91906124e6565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e8919061258b565b611257565b005b3480156106fb57600080fd5b50610716600480360381019061071191906126e4565b611347565b005b34801561072457600080fd5b5061073f600480360381019061073a919061258b565b6113ee565b005b60606007805461075090612753565b80601f016020809104026020016040519081016040528092919081815260200182805461077c90612753565b80156107c95780601f1061079e576101008083540402835291602001916107c9565b820191906000526020600020905b8154815290600101906020018083116107ac57829003601f168201915b5050505050905090565b60006107e76107e061160d565b8484611615565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600654905090565b600061082c8484846117de565b6108ed8461083861160d565b6108e88560405180606001604052806028815260200161308f60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061089e61160d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b619092919063ffffffff16565b611615565b600190509392505050565b6000600960009054906101000a900460ff16905090565b60006109b861091c61160d565b846109b3856003600061092d61160d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115af90919063ffffffff16565b611615565b6001905092915050565b6109ca61160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4e906127d0565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160159054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b9261160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c16906127d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ce561160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d69906127d0565b60405180910390fd5b6000610d7d30610b41565b9050610d8881611bbf565b50565b600c5481565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610dc861160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c906127d0565b60405180910390fd5b80600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b606060088054610eae90612753565b80601f0160208091040260200160405190810160405280929190818152602001828054610eda90612753565b8015610f275780601f10610efc57610100808354040283529160200191610f27565b820191906000526020600020905b815481529060010190602001808311610f0a57829003601f168201915b5050505050905090565b6000610ff4610f3e61160d565b84610fef856040518060600160405280602581526020016130b76025913960036000610f6861160d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b619092919063ffffffff16565b611615565b6001905092915050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061103861103161160d565b84846117de565b6001905092915050565b61104a61160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ce906127d0565b60405180910390fd5b80600e8190555050565b6110e961160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116d906127d0565b60405180910390fd5b80600160156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516111bf9190612442565b60405180910390a150565b600e5481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61125f61160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e3906127d0565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61134f61160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d3906127d0565b60405180910390fd5b80600c8190555081600b819055505050565b6113f661160d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a906127d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e990612862565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082846115be91906128b1565b905083811015611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fa90612931565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b906129c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea90612a55565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117d191906124e6565b60405180910390a3505050565b6117e6610d97565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118545750611824610d97565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561189f57600d5481111561189e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189590612ac1565b60405180910390fd5b5b60006118aa30610b41565b90506000600e548210159050600160149054906101000a900460ff161580156118df5750600160159054906101000a900460ff165b80156119395750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119785750611948610d97565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119ae575060006119ac600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b41565b115b156119c95780156119c857600e5491506119c782611bbf565b5b5b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a6d5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b4f576000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611af857611af1600b54611ae3606487611c6f90919063ffffffff16565b611cc790919063ffffffff16565b9050611b23565b611b20600c54611b12606487611c6f90919063ffffffff16565b611cc790919063ffffffff16565b90505b6000811115611b4d57611b37863083611d41565b611b4a8185611fcd90919063ffffffff16565b93505b505b611b5a858585611d41565b5050505050565b6000838311158290611ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba0919061232c565b60405180910390fd5b508284611bb69190612ae1565b90509392505050565b60018060146101000a81548160ff021916908315150217905550611be281612026565b6000479050600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c4f573d6000803e3d6000fd5b50506000600160146101000a81548160ff02191690831515021790555050565b6000808211611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa90612b61565b60405180910390fd5b8183611cbf9190612bb0565b905092915050565b6000808303611cd95760009050611d3b565b60008284611ce79190612be1565b9050828482611cf69190612bb0565b14611d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2d90612c95565b60405180910390fd5b809150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da790612d27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1690612db9565b60405180910390fd5b611e8b8160405180606001604052806026815260200161306960269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b619092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f2081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115af90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fc091906124e6565b60405180910390a3505050565b600082821115612012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200990612e25565b60405180910390fd5b818361201e9190612ae1565b905092915050565b6000600267ffffffffffffffff81111561204357612042612e45565b5b6040519080825280602002602001820160405280156120715781602001602082028036833780820191505090505b509050308160008151811061208957612088612e74565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121529190612eb8565b8160018151811061216657612165612e74565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121cb307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611615565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161222d959493929190612fde565b600060405180830381600087803b15801561224757600080fd5b505af115801561225b573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612290929190613038565b60405180910390a15050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122d65780820151818401526020810190506122bb565b60008484015250505050565b6000601f19601f8301169050919050565b60006122fe8261229c565b61230881856122a7565b93506123188185602086016122b8565b612321816122e2565b840191505092915050565b6000602082019050818103600083015261234681846122f3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061237e82612353565b9050919050565b61238e81612373565b811461239957600080fd5b50565b6000813590506123ab81612385565b92915050565b6000819050919050565b6123c4816123b1565b81146123cf57600080fd5b50565b6000813590506123e1816123bb565b92915050565b600080604083850312156123fe576123fd61234e565b5b600061240c8582860161239c565b925050602061241d858286016123d2565b9150509250929050565b60008115159050919050565b61243c81612427565b82525050565b60006020820190506124576000830184612433565b92915050565b6000819050919050565b600061248261247d61247884612353565b61245d565b612353565b9050919050565b600061249482612467565b9050919050565b60006124a682612489565b9050919050565b6124b68161249b565b82525050565b60006020820190506124d160008301846124ad565b92915050565b6124e0816123b1565b82525050565b60006020820190506124fb60008301846124d7565b92915050565b60008060006060848603121561251a5761251961234e565b5b60006125288682870161239c565b93505060206125398682870161239c565b925050604061254a868287016123d2565b9150509250925092565b600060ff82169050919050565b61256a81612554565b82525050565b60006020820190506125856000830184612561565b92915050565b6000602082840312156125a1576125a061234e565b5b60006125af8482850161239c565b91505092915050565b6125c181612373565b82525050565b60006020820190506125dc60008301846125b8565b92915050565b60006125ed82612353565b9050919050565b6125fd816125e2565b82525050565b600060208201905061261860008301846125f4565b92915050565b6000602082840312156126345761263361234e565b5b6000612642848285016123d2565b91505092915050565b61265481612427565b811461265f57600080fd5b50565b6000813590506126718161264b565b92915050565b60006020828403121561268d5761268c61234e565b5b600061269b84828501612662565b91505092915050565b600080604083850312156126bb576126ba61234e565b5b60006126c98582860161239c565b92505060206126da8582860161239c565b9150509250929050565b600080604083850312156126fb576126fa61234e565b5b6000612709858286016123d2565b925050602061271a858286016123d2565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061276b57607f821691505b60208210810361277e5761277d612724565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006127ba6020836122a7565b91506127c582612784565b602082019050919050565b600060208201905081810360008301526127e9816127ad565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061284c6026836122a7565b9150612857826127f0565b604082019050919050565b6000602082019050818103600083015261287b8161283f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128bc826123b1565b91506128c7836123b1565b92508282019050808211156128df576128de612882565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061291b601b836122a7565b9150612926826128e5565b602082019050919050565b6000602082019050818103600083015261294a8161290e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006129ad6024836122a7565b91506129b882612951565b604082019050919050565b600060208201905081810360008301526129dc816129a0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a3f6022836122a7565b9150612a4a826129e3565b604082019050919050565b60006020820190508181036000830152612a6e81612a32565b9050919050565b7f45786365656473204d617820547820416d6f756e740000000000000000000000600082015250565b6000612aab6015836122a7565b9150612ab682612a75565b602082019050919050565b60006020820190508181036000830152612ada81612a9e565b9050919050565b6000612aec826123b1565b9150612af7836123b1565b9250828203905081811115612b0f57612b0e612882565b5b92915050565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000600082015250565b6000612b4b601a836122a7565b9150612b5682612b15565b602082019050919050565b60006020820190508181036000830152612b7a81612b3e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612bbb826123b1565b9150612bc6836123b1565b925082612bd657612bd5612b81565b5b828204905092915050565b6000612bec826123b1565b9150612bf7836123b1565b9250828202612c05816123b1565b91508282048414831517612c1c57612c1b612882565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c7f6021836122a7565b9150612c8a82612c23565b604082019050919050565b60006020820190508181036000830152612cae81612c72565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d116025836122a7565b9150612d1c82612cb5565b604082019050919050565b60006020820190508181036000830152612d4081612d04565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612da36023836122a7565b9150612dae82612d47565b604082019050919050565b60006020820190508181036000830152612dd281612d96565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b6000612e0f601e836122a7565b9150612e1a82612dd9565b602082019050919050565b60006020820190508181036000830152612e3e81612e02565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612eb281612385565b92915050565b600060208284031215612ece57612ecd61234e565b5b6000612edc84828501612ea3565b91505092915050565b6000819050919050565b6000612f0a612f05612f0084612ee5565b61245d565b6123b1565b9050919050565b612f1a81612eef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f5581612373565b82525050565b6000612f678383612f4c565b60208301905092915050565b6000602082019050919050565b6000612f8b82612f20565b612f958185612f2b565b9350612fa083612f3c565b8060005b83811015612fd1578151612fb88882612f5b565b9750612fc383612f73565b925050600181019050612fa4565b5085935050505092915050565b600060a082019050612ff360008301886124d7565b6130006020830187612f11565b81810360408301526130128186612f80565b905061302160608301856125b8565b61302e60808301846124d7565b9695505050505050565b600060408201905061304d60008301856124d7565b818103602083015261305f8184612f80565b9050939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b01eb841a159d8a197a4821bcf37844ec58fdae618bc9258c668137bb9b5154064736f6c63430008120033
Deployed Bytecode Sourcemap
13732:14267:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16071:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18223:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14586:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17170:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18874:327;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17014:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19610:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15764:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14646:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13970:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15627:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17341:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1111:148;;;;;;;;;;;;;:::i;:::-;;21292:171;;;;;;;;;;;;;:::i;:::-;;14723:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14762:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;886:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27811:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14683:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16281:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20331:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14537:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17681:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27446:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27622:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14798:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17925:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15889:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21091:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1267:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16071:91;16116:13;16149:5;16142:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16071:91;:::o;18223:169::-;18306:4;18323:39;18332:12;:10;:12::i;:::-;18346:7;18355:6;18323:8;:39::i;:::-;18380:4;18373:11;;18223:169;;;;:::o;14586:51::-;;;:::o;17170:108::-;17231:7;17258:12;;17251:19;;17170:108;:::o;18874:327::-;18980:4;18997:42;19013:6;19021:9;19032:6;18997:15;:42::i;:::-;19050:121;19059:6;19067:12;:10;:12::i;:::-;19081:89;19119:6;19081:89;;;;;;;;;;;;;;;;;:11;:19;19093:6;19081:19;;;;;;;;;;;;;;;:33;19101:12;:10;:12::i;:::-;19081:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;19050:8;:121::i;:::-;19189:4;19182:11;;18874:327;;;;;:::o;17014:91::-;17063:5;17088:9;;;;;;;;;;;17081:16;;17014:91;:::o;19610:218::-;19698:4;19715:83;19724:12;:10;:12::i;:::-;19738:7;19747:50;19786:10;19747:11;:25;19759:12;:10;:12::i;:::-;19747:25;;;;;;;;;;;;;;;:34;19773:7;19747:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19715:8;:83::i;:::-;19816:4;19809:11;;19610:218;;;;:::o;15764:113::-;1030:12;:10;:12::i;:::-;1020:22;;:6;;;;;;;;;;:22;;;1012:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15865:4:::1;15835:18;:27;15854:7;15835:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;15764:113:::0;:::o;14646:28::-;;;;;;;;;;;;;:::o;13970:40::-;;;;;;;;;;;;;:::o;15627:125::-;15693:4;15717:18;:27;15736:7;15717:27;;;;;;;;;;;;;;;;;;;;;;;;;15710:34;;15627:125;;;:::o;17341:127::-;17415:7;17442:9;:18;17452:7;17442:18;;;;;;;;;;;;;;;;17435:25;;17341:127;;;:::o;1111:148::-;1030:12;:10;:12::i;:::-;1020:22;;:6;;;;;;;;;;:22;;;1012:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1218:1:::1;1181:40;;1202:6;::::0;::::1;;;;;;;;1181:40;;;;;;;;;;;;1249:1;1232:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1111:148::o:0;21292:171::-;1030:12;:10;:12::i;:::-;1020:22;;:6;;;;;;;;;;:22;;;1012:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21348:28:::1;21379:24;21397:4;21379:9;:24::i;:::-;21348:55;;21414:41;21434:20;21414:19;:41::i;:::-;21337:126;21292:171::o:0;14723:30::-;;;;:::o;14762:27::-;;;;:::o;886:79::-;924:7;951:6;;;;;;;;;;;944:13;;886:79;:::o;27811:147::-;1030:12;:10;:12::i;:::-;1020:22;;:6;;;;;;;;;;:22;;;1012:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27932:17:::1;27905:16;;:45;;;;;;;;;;;;;;;;;;27811:147:::0;:::o;14683:31::-;;;;:::o;16281:95::-;16328:13;16361:7;16354:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16281:95;:::o;20331:269::-;20424:4;20441:129;20450:12;:10;:12::i;:::-;20464:7;20473:96;20512:15;20473:96;;;;;;;;;;;;;;;;;:11;:25;20485:12;:10;:12::i;:::-;20473:25;;;;;;;;;;;;;;;:34;20499:7;20473:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;20441:8;:129::i;:::-;20588:4;20581:11;;20331:269;;;;:::o;14537:39::-;;;;;;;;;;;;;:::o;17681:181::-;17767:4;17784:48;17800:12;:10;:12::i;:::-;17814:9;17825:6;17784:15;:48::i;:::-;17850:4;17843:11;;17681:181;;;;:::o;27446:166::-;1030:12;:10;:12::i;:::-;1020:22;;:6;;;;;;;;;;:22;;;1012:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27580:24:::1;27554:23;:50;;;;27446:166:::0;:::o;27622:177::-;1030:12;:10;:12::i;:::-;1020:22;;:6;;;;;;;;;;:22;;;1012:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27729:8:::1;27705:21;;:32;;;;;;;;;;;;;;;;;;27753:38;27782:8;27753:38;;;;;;:::i;:::-;;;;;;;;27622:177:::0;:::o;14798:38::-;;;;:::o;17925:151::-;18014:7;18041:11;:18;18053:5;18041:18;;;;;;;;;;;;;;;:27;18060:7;18041:27;;;;;;;;;;;;;;;;18034:34;;17925:151;;;;:::o;15889:112::-;1030:12;:10;:12::i;:::-;1020:22;;:6;;;;;;;;;;:22;;;1012:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15988:5:::1;15958:18;:27;15977:7;15958:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15889:112:::0;:::o;21091:191::-;1030:12;:10;:12::i;:::-;1020:22;;:6;;;;;;;;;;:22;;;1012:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21214:16:::1;21196:15;:34;;;;21258:17;21239:16;:36;;;;21091:191:::0;;:::o;1267:244::-;1030:12;:10;:12::i;:::-;1020:22;;:6;;;;;;;;;;:22;;;1012:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1376:1:::1;1356:22;;:8;:22;;::::0;1348:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1466:8;1437:38;;1458:6;::::0;::::1;;;;;;;;1437:38;;;;;;;;;;;;1495:8;1486:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1267:244:::0;:::o;6867:179::-;6925:7;6945:9;6961:1;6957;:5;;;;:::i;:::-;6945:17;;6986:1;6981;:6;;6973:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7037:1;7030:8;;;6867:179;;;;:::o;166:115::-;219:15;262:10;247:26;;166:115;:::o;26063:344::-;26182:1;26165:19;;:5;:19;;;26157:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26263:1;26244:21;;:7;:21;;;26236:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26345:6;26315:11;:18;26327:5;26315:18;;;;;;;;;;;;;;;:27;26334:7;26315:27;;;;;;;;;;;;;;;:36;;;;26383:7;26367:32;;26376:5;26367:32;;;26392:6;26367:32;;;;;;:::i;:::-;;;;;;;;26063:344;;;:::o;22409:1434::-;22524:7;:5;:7::i;:::-;22516:15;;:4;:15;;;;:32;;;;;22541:7;:5;:7::i;:::-;22535:13;;:2;:13;;;;22516:32;22513:132;;;22594:12;;22584:6;:22;;22576:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;22513:132;22657:28;22688:24;22706:4;22688:9;:24::i;:::-;22657:55;;22723:28;22778:23;;22754:20;:47;;22723:78;;22827:16;;;;;;;;;;;22826:17;:56;;;;;22861:21;;;;;;;;;;;22826:56;:95;;;;;22908:13;;;;;;;;;;;22900:21;;:4;:21;;;;22826:95;:128;;;;;22947:7;:5;:7::i;:::-;22939:15;;:4;:15;;;;22826:128;:172;;;;;22997:1;22972:24;22982:13;;;;;;;;;;;22972:9;:24::i;:::-;:26;22826:172;22822:398;;;23029:23;23025:184;;;23110:23;;23087:46;;23152:41;23172:20;23152:19;:41::i;:::-;23025:184;22822:398;23239:18;:24;23258:4;23239:24;;;;;;;;;;;;;;;;;;;;;;;;;23238:25;:52;;;;;23268:18;:22;23287:2;23268:22;;;;;;;;;;;;;;;;;;;;;;;;;23267:23;23238:52;23235:551;;;23318:18;23363:13;;;;;;;;;;;23359:17;;:2;:17;;;23356:245;;23425:37;23445:16;;23425:15;23436:3;23425:6;:10;;:15;;;;:::i;:::-;:19;;:37;;;;:::i;:::-;23412:50;;23356:245;;;23548:36;23568:15;;23548;23559:3;23548:6;:10;;:15;;;;:::i;:::-;:19;;:36;;;;:::i;:::-;23535:49;;23356:245;23631:1;23620:10;:12;23617:157;;;23666:42;23676:4;23690;23697:10;23666:9;:42::i;:::-;23736:22;23747:10;23736:6;:10;;:22;;;;:::i;:::-;23727:31;;23617:157;23302:484;23235:551;23808:27;23818:4;23824:2;23828:6;23808:9;:27::i;:::-;22499:1344;;22409:1434;;;:::o;9694:166::-;9780:7;9813:1;9808;:6;;9816:12;9800:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9851:1;9847;:5;;;;:::i;:::-;9840:12;;9694:166;;;;;:::o;21473:244::-;14076:4;14057:16;;:23;;;;;;;;;;;;;;;;;;21569:38:::1;21586:20;21569:16;:38::i;:::-;21619:18;21640:21;21619:42;;21672:16;;;;;;;;;;;:25;;:37;21698:10;21672:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21558:159;14124:5:::0;14105:16;;:24;;;;;;;;;;;;;;;;;;21473:244;:::o;8444:153::-;8502:7;8534:1;8530;:5;8522:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;8588:1;8584;:5;;;;:::i;:::-;8577:12;;8444:153;;;;:::o;7746:220::-;7804:7;7833:1;7828;:6;7824:20;;7843:1;7836:8;;;;7824:20;7855:9;7871:1;7867;:5;;;;:::i;:::-;7855:17;;7900:1;7895;7891;:5;;;;:::i;:::-;:10;7883:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;7957:1;7950:8;;;7746:220;;;;;:::o;23855:485::-;23985:1;23967:20;;:6;:20;;;23959:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24069:1;24048:23;;:9;:23;;;24040:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;24142;24164:6;24142:71;;;;;;;;;;;;;;;;;:9;:17;24152:6;24142:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;24122:9;:17;24132:6;24122:17;;;;;;;;;;;;;;;:91;;;;24247:32;24272:6;24247:9;:20;24257:9;24247:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;24224:9;:20;24234:9;24224:20;;;;;;;;;;;;;;;:55;;;;24312:9;24295:35;;24304:6;24295:35;;;24323:6;24295:35;;;;;;:::i;:::-;;;;;;;;23855:485;;;:::o;7329:158::-;7387:7;7420:1;7415;:6;;7407:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;7478:1;7474;:5;;;;:::i;:::-;7467:12;;7329:158;;;;:::o;21727:666::-;21853:21;21891:1;21877:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21853:40;;21922:4;21904;21909:1;21904:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21948:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21938:4;21943:1;21938:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;21983:62;22000:4;22015:15;22033:11;21983:8;:62::i;:::-;22084:15;:66;;;22165:11;22191:1;22235:4;22262;22298:15;22084:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22350:35;22367:11;22380:4;22350:35;;;;;;;:::i;:::-;;;;;;;;21782:611;21727:666;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:329::-;5885:6;5934:2;5922:9;5913:7;5909:23;5905:32;5902:119;;;5940:79;;:::i;:::-;5902:119;6060:1;6085:53;6130:7;6121:6;6110:9;6106:22;6085:53;:::i;:::-;6075:63;;6031:117;5826:329;;;;:::o;6161:118::-;6248:24;6266:5;6248:24;:::i;:::-;6243:3;6236:37;6161:118;;:::o;6285:222::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:71;6497:1;6486:9;6482:17;6473:6;6429:71;:::i;:::-;6285:222;;;;:::o;6513:104::-;6558:7;6587:24;6605:5;6587:24;:::i;:::-;6576:35;;6513:104;;;:::o;6623:142::-;6726:32;6752:5;6726:32;:::i;:::-;6721:3;6714:45;6623:142;;:::o;6771:254::-;6880:4;6918:2;6907:9;6903:18;6895:26;;6931:87;7015:1;7004:9;7000:17;6991:6;6931:87;:::i;:::-;6771:254;;;;:::o;7031:329::-;7090:6;7139:2;7127:9;7118:7;7114:23;7110:32;7107:119;;;7145:79;;:::i;:::-;7107:119;7265:1;7290:53;7335:7;7326:6;7315:9;7311:22;7290:53;:::i;:::-;7280:63;;7236:117;7031:329;;;;:::o;7366:116::-;7436:21;7451:5;7436:21;:::i;:::-;7429:5;7426:32;7416:60;;7472:1;7469;7462:12;7416:60;7366:116;:::o;7488:133::-;7531:5;7569:6;7556:20;7547:29;;7585:30;7609:5;7585:30;:::i;:::-;7488:133;;;;:::o;7627:323::-;7683:6;7732:2;7720:9;7711:7;7707:23;7703:32;7700:119;;;7738:79;;:::i;:::-;7700:119;7858:1;7883:50;7925:7;7916:6;7905:9;7901:22;7883:50;:::i;:::-;7873:60;;7829:114;7627:323;;;;:::o;7956:474::-;8024:6;8032;8081:2;8069:9;8060:7;8056:23;8052:32;8049:119;;;8087:79;;:::i;:::-;8049:119;8207:1;8232:53;8277:7;8268:6;8257:9;8253:22;8232:53;:::i;:::-;8222:63;;8178:117;8334:2;8360:53;8405:7;8396:6;8385:9;8381:22;8360:53;:::i;:::-;8350:63;;8305:118;7956:474;;;;;:::o;8436:::-;8504:6;8512;8561:2;8549:9;8540:7;8536:23;8532:32;8529:119;;;8567:79;;:::i;:::-;8529:119;8687:1;8712:53;8757:7;8748:6;8737:9;8733:22;8712:53;:::i;:::-;8702:63;;8658:117;8814:2;8840:53;8885:7;8876:6;8865:9;8861:22;8840:53;:::i;:::-;8830:63;;8785:118;8436:474;;;;;:::o;8916:180::-;8964:77;8961:1;8954:88;9061:4;9058:1;9051:15;9085:4;9082:1;9075:15;9102:320;9146:6;9183:1;9177:4;9173:12;9163:22;;9230:1;9224:4;9220:12;9251:18;9241:81;;9307:4;9299:6;9295:17;9285:27;;9241:81;9369:2;9361:6;9358:14;9338:18;9335:38;9332:84;;9388:18;;:::i;:::-;9332:84;9153:269;9102:320;;;:::o;9428:182::-;9568:34;9564:1;9556:6;9552:14;9545:58;9428:182;:::o;9616:366::-;9758:3;9779:67;9843:2;9838:3;9779:67;:::i;:::-;9772:74;;9855:93;9944:3;9855:93;:::i;:::-;9973:2;9968:3;9964:12;9957:19;;9616:366;;;:::o;9988:419::-;10154:4;10192:2;10181:9;10177:18;10169:26;;10241:9;10235:4;10231:20;10227:1;10216:9;10212:17;10205:47;10269:131;10395:4;10269:131;:::i;:::-;10261:139;;9988:419;;;:::o;10413:225::-;10553:34;10549:1;10541:6;10537:14;10530:58;10622:8;10617:2;10609:6;10605:15;10598:33;10413:225;:::o;10644:366::-;10786:3;10807:67;10871:2;10866:3;10807:67;:::i;:::-;10800:74;;10883:93;10972:3;10883:93;:::i;:::-;11001:2;10996:3;10992:12;10985:19;;10644:366;;;:::o;11016:419::-;11182:4;11220:2;11209:9;11205:18;11197:26;;11269:9;11263:4;11259:20;11255:1;11244:9;11240:17;11233:47;11297:131;11423:4;11297:131;:::i;:::-;11289:139;;11016:419;;;:::o;11441:180::-;11489:77;11486:1;11479:88;11586:4;11583:1;11576:15;11610:4;11607:1;11600:15;11627:191;11667:3;11686:20;11704:1;11686:20;:::i;:::-;11681:25;;11720:20;11738:1;11720:20;:::i;:::-;11715:25;;11763:1;11760;11756:9;11749:16;;11784:3;11781:1;11778:10;11775:36;;;11791:18;;:::i;:::-;11775:36;11627:191;;;;:::o;11824:177::-;11964:29;11960:1;11952:6;11948:14;11941:53;11824:177;:::o;12007:366::-;12149:3;12170:67;12234:2;12229:3;12170:67;:::i;:::-;12163:74;;12246:93;12335:3;12246:93;:::i;:::-;12364:2;12359:3;12355:12;12348:19;;12007:366;;;:::o;12379:419::-;12545:4;12583:2;12572:9;12568:18;12560:26;;12632:9;12626:4;12622:20;12618:1;12607:9;12603:17;12596:47;12660:131;12786:4;12660:131;:::i;:::-;12652:139;;12379:419;;;:::o;12804:223::-;12944:34;12940:1;12932:6;12928:14;12921:58;13013:6;13008:2;13000:6;12996:15;12989:31;12804:223;:::o;13033:366::-;13175:3;13196:67;13260:2;13255:3;13196:67;:::i;:::-;13189:74;;13272:93;13361:3;13272:93;:::i;:::-;13390:2;13385:3;13381:12;13374:19;;13033:366;;;:::o;13405:419::-;13571:4;13609:2;13598:9;13594:18;13586:26;;13658:9;13652:4;13648:20;13644:1;13633:9;13629:17;13622:47;13686:131;13812:4;13686:131;:::i;:::-;13678:139;;13405:419;;;:::o;13830:221::-;13970:34;13966:1;13958:6;13954:14;13947:58;14039:4;14034:2;14026:6;14022:15;14015:29;13830:221;:::o;14057:366::-;14199:3;14220:67;14284:2;14279:3;14220:67;:::i;:::-;14213:74;;14296:93;14385:3;14296:93;:::i;:::-;14414:2;14409:3;14405:12;14398:19;;14057:366;;;:::o;14429:419::-;14595:4;14633:2;14622:9;14618:18;14610:26;;14682:9;14676:4;14672:20;14668:1;14657:9;14653:17;14646:47;14710:131;14836:4;14710:131;:::i;:::-;14702:139;;14429:419;;;:::o;14854:171::-;14994:23;14990:1;14982:6;14978:14;14971:47;14854:171;:::o;15031:366::-;15173:3;15194:67;15258:2;15253:3;15194:67;:::i;:::-;15187:74;;15270:93;15359:3;15270:93;:::i;:::-;15388:2;15383:3;15379:12;15372:19;;15031:366;;;:::o;15403:419::-;15569:4;15607:2;15596:9;15592:18;15584:26;;15656:9;15650:4;15646:20;15642:1;15631:9;15627:17;15620:47;15684:131;15810:4;15684:131;:::i;:::-;15676:139;;15403:419;;;:::o;15828:194::-;15868:4;15888:20;15906:1;15888:20;:::i;:::-;15883:25;;15922:20;15940:1;15922:20;:::i;:::-;15917:25;;15966:1;15963;15959:9;15951:17;;15990:1;15984:4;15981:11;15978:37;;;15995:18;;:::i;:::-;15978:37;15828:194;;;;:::o;16028:176::-;16168:28;16164:1;16156:6;16152:14;16145:52;16028:176;:::o;16210:366::-;16352:3;16373:67;16437:2;16432:3;16373:67;:::i;:::-;16366:74;;16449:93;16538:3;16449:93;:::i;:::-;16567:2;16562:3;16558:12;16551:19;;16210:366;;;:::o;16582:419::-;16748:4;16786:2;16775:9;16771:18;16763:26;;16835:9;16829:4;16825:20;16821:1;16810:9;16806:17;16799:47;16863:131;16989:4;16863:131;:::i;:::-;16855:139;;16582:419;;;:::o;17007:180::-;17055:77;17052:1;17045:88;17152:4;17149:1;17142:15;17176:4;17173:1;17166:15;17193:185;17233:1;17250:20;17268:1;17250:20;:::i;:::-;17245:25;;17284:20;17302:1;17284:20;:::i;:::-;17279:25;;17323:1;17313:35;;17328:18;;:::i;:::-;17313:35;17370:1;17367;17363:9;17358:14;;17193:185;;;;:::o;17384:410::-;17424:7;17447:20;17465:1;17447:20;:::i;:::-;17442:25;;17481:20;17499:1;17481:20;:::i;:::-;17476:25;;17536:1;17533;17529:9;17558:30;17576:11;17558:30;:::i;:::-;17547:41;;17737:1;17728:7;17724:15;17721:1;17718:22;17698:1;17691:9;17671:83;17648:139;;17767:18;;:::i;:::-;17648:139;17432:362;17384:410;;;;:::o;17800:220::-;17940:34;17936:1;17928:6;17924:14;17917:58;18009:3;18004:2;17996:6;17992:15;17985:28;17800:220;:::o;18026:366::-;18168:3;18189:67;18253:2;18248:3;18189:67;:::i;:::-;18182:74;;18265:93;18354:3;18265:93;:::i;:::-;18383:2;18378:3;18374:12;18367:19;;18026:366;;;:::o;18398:419::-;18564:4;18602:2;18591:9;18587:18;18579:26;;18651:9;18645:4;18641:20;18637:1;18626:9;18622:17;18615:47;18679:131;18805:4;18679:131;:::i;:::-;18671:139;;18398:419;;;:::o;18823:224::-;18963:34;18959:1;18951:6;18947:14;18940:58;19032:7;19027:2;19019:6;19015:15;19008:32;18823:224;:::o;19053:366::-;19195:3;19216:67;19280:2;19275:3;19216:67;:::i;:::-;19209:74;;19292:93;19381:3;19292:93;:::i;:::-;19410:2;19405:3;19401:12;19394:19;;19053:366;;;:::o;19425:419::-;19591:4;19629:2;19618:9;19614:18;19606:26;;19678:9;19672:4;19668:20;19664:1;19653:9;19649:17;19642:47;19706:131;19832:4;19706:131;:::i;:::-;19698:139;;19425:419;;;:::o;19850:222::-;19990:34;19986:1;19978:6;19974:14;19967:58;20059:5;20054:2;20046:6;20042:15;20035:30;19850:222;:::o;20078:366::-;20220:3;20241:67;20305:2;20300:3;20241:67;:::i;:::-;20234:74;;20317:93;20406:3;20317:93;:::i;:::-;20435:2;20430:3;20426:12;20419:19;;20078:366;;;:::o;20450:419::-;20616:4;20654:2;20643:9;20639:18;20631:26;;20703:9;20697:4;20693:20;20689:1;20678:9;20674:17;20667:47;20731:131;20857:4;20731:131;:::i;:::-;20723:139;;20450:419;;;:::o;20875:180::-;21015:32;21011:1;21003:6;20999:14;20992:56;20875:180;:::o;21061:366::-;21203:3;21224:67;21288:2;21283:3;21224:67;:::i;:::-;21217:74;;21300:93;21389:3;21300:93;:::i;:::-;21418:2;21413:3;21409:12;21402:19;;21061:366;;;:::o;21433:419::-;21599:4;21637:2;21626:9;21622:18;21614:26;;21686:9;21680:4;21676:20;21672:1;21661:9;21657:17;21650:47;21714:131;21840:4;21714:131;:::i;:::-;21706:139;;21433:419;;;:::o;21858:180::-;21906:77;21903:1;21896:88;22003:4;22000:1;21993:15;22027:4;22024:1;22017:15;22044:180;22092:77;22089:1;22082:88;22189:4;22186:1;22179:15;22213:4;22210:1;22203:15;22230:143;22287:5;22318:6;22312:13;22303:22;;22334:33;22361:5;22334:33;:::i;:::-;22230:143;;;;:::o;22379:351::-;22449:6;22498:2;22486:9;22477:7;22473:23;22469:32;22466:119;;;22504:79;;:::i;:::-;22466:119;22624:1;22649:64;22705:7;22696:6;22685:9;22681:22;22649:64;:::i;:::-;22639:74;;22595:128;22379:351;;;;:::o;22736:85::-;22781:7;22810:5;22799:16;;22736:85;;;:::o;22827:158::-;22885:9;22918:61;22936:42;22945:32;22971:5;22945:32;:::i;:::-;22936:42;:::i;:::-;22918:61;:::i;:::-;22905:74;;22827:158;;;:::o;22991:147::-;23086:45;23125:5;23086:45;:::i;:::-;23081:3;23074:58;22991:147;;:::o;23144:114::-;23211:6;23245:5;23239:12;23229:22;;23144:114;;;:::o;23264:184::-;23363:11;23397:6;23392:3;23385:19;23437:4;23432:3;23428:14;23413:29;;23264:184;;;;:::o;23454:132::-;23521:4;23544:3;23536:11;;23574:4;23569:3;23565:14;23557:22;;23454:132;;;:::o;23592:108::-;23669:24;23687:5;23669:24;:::i;:::-;23664:3;23657:37;23592:108;;:::o;23706:179::-;23775:10;23796:46;23838:3;23830:6;23796:46;:::i;:::-;23874:4;23869:3;23865:14;23851:28;;23706:179;;;;:::o;23891:113::-;23961:4;23993;23988:3;23984:14;23976:22;;23891:113;;;:::o;24040:732::-;24159:3;24188:54;24236:5;24188:54;:::i;:::-;24258:86;24337:6;24332:3;24258:86;:::i;:::-;24251:93;;24368:56;24418:5;24368:56;:::i;:::-;24447:7;24478:1;24463:284;24488:6;24485:1;24482:13;24463:284;;;24564:6;24558:13;24591:63;24650:3;24635:13;24591:63;:::i;:::-;24584:70;;24677:60;24730:6;24677:60;:::i;:::-;24667:70;;24523:224;24510:1;24507;24503:9;24498:14;;24463:284;;;24467:14;24763:3;24756:10;;24164:608;;;24040:732;;;;:::o;24778:831::-;25041:4;25079:3;25068:9;25064:19;25056:27;;25093:71;25161:1;25150:9;25146:17;25137:6;25093:71;:::i;:::-;25174:80;25250:2;25239:9;25235:18;25226:6;25174:80;:::i;:::-;25301:9;25295:4;25291:20;25286:2;25275:9;25271:18;25264:48;25329:108;25432:4;25423:6;25329:108;:::i;:::-;25321:116;;25447:72;25515:2;25504:9;25500:18;25491:6;25447:72;:::i;:::-;25529:73;25597:3;25586:9;25582:19;25573:6;25529:73;:::i;:::-;24778:831;;;;;;;;:::o;25615:483::-;25786:4;25824:2;25813:9;25809:18;25801:26;;25837:71;25905:1;25894:9;25890:17;25881:6;25837:71;:::i;:::-;25955:9;25949:4;25945:20;25940:2;25929:9;25925:18;25918:48;25983:108;26086:4;26077:6;25983:108;:::i;:::-;25975:116;;25615:483;;;;;:::o
Swarm Source
ipfs://b01eb841a159d8a197a4821bcf37844ec58fdae618bc9258c668137bb9b51540
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.