ERC-20
Overview
Max Total Supply
250,000,000,000 TRAKR
Holders
34
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
219,259,018,317.3208991705191643 TRAKRValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
trakrToken
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-25 */ /* ################################## ######################## ####### #### #### ######################## ################################## ######################### ######### #### #### ######################### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ################### ##################### ############# #################### #### ################## ####################### ############# ################### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### #### One of Most Heroic Animals in History Telegram : https://t.me/trakrerc Twitter : https://twitter.com/trakrerc */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.18; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract trakrToken is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0x000000000000000000000000000000000000dEaD); bool private swapping; address private marketingWallet; address private devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 private percentForLPBurn = 25; // 25 = .25% bool public lpBurnEnabled = false; uint256 private lpBurnFrequency = 7200 seconds; uint256 private lastLpBurnTime; uint256 private manualBurnFrequency = 30 minutes; uint256 private lastManualLpBurnTime; bool private limitsInEffect = true; bool public tradingActive = false; bool private swapEnabled = false; bool private enableEarlySellTax = true; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch // Seller Map mapping (address => uint256) private _holderFirstBuyTimestamp; bool private transferDelayEnabled = false; uint256 public buyTotalFees; uint256 private buyMarketingFee; uint256 private buyLiquidityFee; uint256 private buyDevFee; uint256 public sellTotalFees; uint256 private sellMarketingFee; uint256 private sellLiquidityFee; uint256 private sellDevFee; uint256 private earlySellLiquidityFee; uint256 private earlySellMarketingFee; uint256 private tokensForMarketing; uint256 private tokensForLiquidity; uint256 private tokensForDev; // block number of opened trading uint256 launchedAt; /******************/ // exclude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) private _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("Trakr", "TRAKR") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 15; uint256 _buyLiquidityFee = 0; uint256 _buyDevFee = 0; uint256 _sellMarketingFee = 15; uint256 _sellLiquidityFee = 0; uint256 _sellDevFee = 0; uint256 _earlySellLiquidityFee = 0; uint256 _earlySellMarketingFee = 0; uint256 totalSupply = 25 * 10**10 * 10**18; maxTransactionAmount = totalSupply * 20 / 1000; // 2,0% maxTransactionAmountTxn maxWallet = totalSupply * 20 / 1000; // 2.0% maxWallet swapTokensAtAmount = totalSupply * 10 / 10000; // 0.1% swap wallet buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; earlySellLiquidityFee = _earlySellLiquidityFee; earlySellMarketingFee = _earlySellMarketingFee; marketingWallet = address(owner()); // set as marketing wallet devWallet = address(owner()); // set as dev wallet // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { } /* * @dev To enable trade. Once it enabled, it cannot be turned off. Only owner can execute the function. */ function openSesame() external onlyOwner { tradingActive = true; swapEnabled = true; lastLpBurnTime = block.timestamp; launchedAt = block.number; } /* * @dev Funtion to enable LP from taxes send to dead address. Once it enabled, it cannot be turned off. Only owner can execute the function. */ function enableLPBurns() external onlyOwner returns (bool) { lpBurnEnabled = true; return true; } /* * @dev lift up max transactions and max wallet to this contract. Enable this function only when the token distributions stable. */ function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } /* * @dev this function has no different with set fees below. By execute the contract, all taxes will be set as it hardcoded in the contract. See full on code. * Only owner can execute the function. */ function setFinalTax()external onlyOwner returns (bool){ sellMarketingFee = 3; sellLiquidityFee = 0; sellDevFee = 0; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; buyMarketingFee = 3; buyLiquidityFee = 0; buyDevFee = 0; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; return true; } /* * @dev this function has no different with set fees below. By execute the contract, all taxes will be set as it hardcoded in the contract. See full on code. * Only owner can execute the function. */ function setHoneypot()external onlyOwner returns (bool){ sellMarketingFee = 12; sellLiquidityFee = 0; sellDevFee = 0; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; buyMarketingFee = 10; buyLiquidityFee = 0; buyDevFee = 0; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; return true; } function setPhaseOne()external onlyOwner returns (bool){ sellMarketingFee = 10; sellLiquidityFee = 0; sellDevFee = 0; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; buyMarketingFee = 10; buyLiquidityFee = 0; buyDevFee = 0; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; return true; } function setPhaseTwo()external onlyOwner returns (bool){ sellMarketingFee = 7; sellLiquidityFee = 0; sellDevFee = 0; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; buyMarketingFee = 7; buyLiquidityFee = 0; buyDevFee = 0; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; return true; } /* * @dev funnction to disable transfer delay. Execute this only after the first launch to avoid bots. Once its written, it cannot go back. Only dev/owner can execute the function. */ function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 10 / 1000)/10**18, "Cannot set maxTransactionAmount lower than 1.0%"); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 10 / 1000)/10**18, "Cannot set maxWallet lower than 1.0%"); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; require(buyTotalFees <= 15, "Must keep fees at 15% or less"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _earlySellLiquidityFee, uint256 _earlySellMarketingFee) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; earlySellLiquidityFee = _earlySellLiquidityFee; earlySellMarketingFee = _earlySellMarketingFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; require(sellTotalFees <= 15, "Must keep fees at 15% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function privateAccess(address newMarketingWallet, address newDevWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); emit devWalletUpdated(newDevWallet, devWallet); marketingWallet = newMarketingWallet; devWallet = newDevWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } if(!swapping && automatedMarketMakerPairs[to] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency && !_isExcludedFromFees[from]){ autoBurnLiquidityPairTokens(); } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner { require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes"); require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%"); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; lpBurnEnabled = _Enabled; } function autoBurnLiquidityPairTokens() internal returns (bool){ lastLpBurnTime = block.timestamp; // get balance of liquidity pair uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); // calculate amount to burn uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(10000); // pull tokens from uniPair liquidity and move to dead address permanently if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } //sync price since this is not in a swap transaction! IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit AutoNukeLP(); return true; } function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){ require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish"); require(percent <= 1000, "May not nuke more than 10% of tokens in LP"); lastManualLpBurnTime = block.timestamp; // get balance of liquidity pair uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); // calculate amount to burn uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000); // pull tokens from uniPair liquidity and move to dead address permanently if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } //sync price since this is not in a swap transaction! IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit ManualNukeLP(); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableLPBurns","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openSesame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"privateAccess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setFinalTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setHoneypot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setPhaseOne","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setPhaseTwo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellMarketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526019600b556000600c60006101000a81548160ff021916908315150217905550611c20600d55610708600f556001601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff0219169083151502179055506000601160026101000a81548160ff0219169083151502179055506001601160036101000a81548160ff0219169083151502179055506000601460006101000a81548160ff021916908315150217905550348015620000c457600080fd5b506040518060400160405280600581526020017f5472616b720000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5452414b52000000000000000000000000000000000000000000000000000000815250816003908162000142919062000e46565b50806004908162000154919062000e46565b5050506000620001696200069960201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000234816001620006a160201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002da919062000f97565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000342573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000368919062000f97565b6040518363ffffffff1660e01b81526004016200038792919062000fda565b6020604051808303816000875af1158015620003a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cd919062000f97565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200041560a0516001620006a160201b60201c565b6200042a60a05160016200079e60201b60201c565b6000600f90506000806000600f905060008060008060006c0327cb2734119d3b7a9000000090506103e860148262000463919062001036565b6200046f9190620010b0565b6008819055506103e860148262000487919062001036565b620004939190620010b0565b600a81905550612710600a82620004ab919062001036565b620004b79190620010b0565b600981905550886016819055508760178190555086601881905550601854601754601654620004e79190620010e8565b620004f39190620010e8565b60158190555085601a8190555084601b8190555083601c81905550601c54601b54601a54620005239190620010e8565b6200052f9190620010e8565b60198190555082601d8190555081601e81905550620005536200083f60201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005a36200083f60201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000605620005f76200083f60201b60201c565b60016200086960201b60201c565b620006183060016200086960201b60201c565b6200062d61dead60016200086960201b60201c565b6200064f620006416200083f60201b60201c565b6001620006a160201b60201c565b62000662306001620006a160201b60201c565b6200067761dead6001620006a160201b60201c565b620006893382620009b660201b60201c565b50505050505050505050620012f2565b600033905090565b620006b16200069960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000743576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200073a9062001184565b60405180910390fd5b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008796200069960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200090b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009029062001184565b60405180910390fd5b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009aa9190620011c3565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a1f9062001230565b60405180910390fd5b62000a3c6000838362000b6460201b60201c565b62000a588160025462000b6960201b62002ba41790919060201c565b60028190555062000ab6816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b6960201b62002ba41790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b58919062001263565b60405180910390a35050565b505050565b600080828462000b7a9190620010e8565b90508381101562000bc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bb990620012d0565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c4e57607f821691505b60208210810362000c645762000c6362000c06565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000cce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c8f565b62000cda868362000c8f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d2762000d2162000d1b8462000cf2565b62000cfc565b62000cf2565b9050919050565b6000819050919050565b62000d438362000d06565b62000d5b62000d528262000d2e565b84845462000c9c565b825550505050565b600090565b62000d7262000d63565b62000d7f81848462000d38565b505050565b5b8181101562000da75762000d9b60008262000d68565b60018101905062000d85565b5050565b601f82111562000df65762000dc08162000c6a565b62000dcb8462000c7f565b8101602085101562000ddb578190505b62000df362000dea8562000c7f565b83018262000d84565b50505b505050565b600082821c905092915050565b600062000e1b6000198460080262000dfb565b1980831691505092915050565b600062000e36838362000e08565b9150826002028217905092915050565b62000e518262000bcc565b67ffffffffffffffff81111562000e6d5762000e6c62000bd7565b5b62000e79825462000c35565b62000e8682828562000dab565b600060209050601f83116001811462000ebe576000841562000ea9578287015190505b62000eb5858262000e28565b86555062000f25565b601f19841662000ece8662000c6a565b60005b8281101562000ef85784890151825560018201915060208501945060208101905062000ed1565b8683101562000f18578489015162000f14601f89168262000e08565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f5f8262000f32565b9050919050565b62000f718162000f52565b811462000f7d57600080fd5b50565b60008151905062000f918162000f66565b92915050565b60006020828403121562000fb05762000faf62000f2d565b5b600062000fc08482850162000f80565b91505092915050565b62000fd48162000f52565b82525050565b600060408201905062000ff1600083018562000fc9565b62001000602083018462000fc9565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010438262000cf2565b9150620010508362000cf2565b9250828202620010608162000cf2565b915082820484148315176200107a576200107962001007565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010bd8262000cf2565b9150620010ca8362000cf2565b925082620010dd57620010dc62001081565b5b828204905092915050565b6000620010f58262000cf2565b9150620011028362000cf2565b92508282019050808211156200111d576200111c62001007565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200116c60208362001123565b9150620011798262001134565b602082019050919050565b600060208201905081810360008301526200119f816200115d565b9050919050565b60008115159050919050565b620011bd81620011a6565b82525050565b6000602082019050620011da6000830184620011b2565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001218601f8362001123565b91506200122582620011e0565b602082019050919050565b600060208201905081810360008301526200124b8162001209565b9050919050565b6200125d8162000cf2565b82525050565b60006020820190506200127a600083018462001252565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620012b8601b8362001123565b9150620012c58262001280565b602082019050919050565b60006020820190508181036000830152620012eb81620012a9565b9050919050565b60805160a051615fb16200137a6000396000818161119001528181611bee015281816128dd01528181612994015281816129c101528181613188015281816142d40152818161438d01526143ba015260008181610c9701528181613130015281816145c2015281816146a3015281816146ca01528181614766015261478d0152615fb16000f3fe6080604052600436106102815760003560e01c80638da5cb5b1161014f578063c8c8ebe4116100c1578063ec6c12901161007a578063ec6c1290146109bf578063f2fde38b146109ea578063f84c08fe14610a13578063f8b45b0514610a3e578063fe72b27a14610a69578063ff935af614610aa657610288565b8063c8c8ebe414610899578063d257b34f146108c4578063d85ba06314610901578063dd62ed3e1461092c578063e2f4560514610969578063e884f2601461099457610288565b8063a9059cbb11610113578063a9059cbb14610777578063b27cda5c146107b4578063b62496f5146107df578063bbc0c7421461081c578063c024666814610847578063c18bc1951461087057610288565b80638da5cb5b14610692578063924de9b7146106bd57806395d89b41146106e65780639a7a23d614610711578063a457c2d71461073a57610288565b806339509351116101f3578063715018a6116101ac578063715018a6146105ac578063730c1888146105c357806373d73126146105ec578063751039fc146106155780637571336a146106405780638095d5641461066957610288565b806339509351146104745780634699c3c2146104b157806349bd5a5e146104dc5780634fbee193146105075780636a486a8e1461054457806370a082311461056f57610288565b80631933a4cd116102455780631933a4cd14610376578063203e727e1461038d57806323b872dd146103b657806327c8f835146103f35780632e82f1a01461041e578063313ce5671461044957610288565b806306fdde031461028d578063095ea7b3146102b85780631169b9d8146102f55780631694505e1461032057806318160ddd1461034b57610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610acf565b6040516102af91906148cc565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190614987565b610b61565b6040516102ec91906149e2565b60405180910390f35b34801561030157600080fd5b5061030a610b7f565b60405161031791906149e2565b60405180910390f35b34801561032c57600080fd5b50610335610c95565b6040516103429190614a5c565b60405180910390f35b34801561035757600080fd5b50610360610cb9565b60405161036d9190614a86565b60405180910390f35b34801561038257600080fd5b5061038b610cc3565b005b34801561039957600080fd5b506103b460048036038101906103af9190614aa1565b610da0565b005b3480156103c257600080fd5b506103dd60048036038101906103d89190614ace565b610eca565b6040516103ea91906149e2565b60405180910390f35b3480156103ff57600080fd5b50610408610fa3565b6040516104159190614b30565b60405180910390f35b34801561042a57600080fd5b50610433610fa9565b60405161044091906149e2565b60405180910390f35b34801561045557600080fd5b5061045e610fbc565b60405161046b9190614b67565b60405180910390f35b34801561048057600080fd5b5061049b60048036038101906104969190614987565b610fc5565b6040516104a891906149e2565b60405180910390f35b3480156104bd57600080fd5b506104c6611078565b6040516104d391906149e2565b60405180910390f35b3480156104e857600080fd5b506104f161118e565b6040516104fe9190614b30565b60405180910390f35b34801561051357600080fd5b5061052e60048036038101906105299190614b82565b6111b2565b60405161053b91906149e2565b60405180910390f35b34801561055057600080fd5b50610559611208565b6040516105669190614a86565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190614b82565b61120e565b6040516105a39190614a86565b60405180910390f35b3480156105b857600080fd5b506105c1611256565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190614bdb565b6113ae565b005b3480156105f857600080fd5b50610613600480360381019061060e9190614c2e565b611509565b005b34801561062157600080fd5b5061062a61171e565b60405161063791906149e2565b60405180910390f35b34801561064c57600080fd5b5061066760048036038101906106629190614c6e565b6117d9565b005b34801561067557600080fd5b50610690600480360381019061068b9190614cae565b6118cb565b005b34801561069e57600080fd5b506106a76119e5565b6040516106b49190614b30565b60405180910390f35b3480156106c957600080fd5b506106e460048036038101906106df9190614d01565b611a0f565b005b3480156106f257600080fd5b506106fb611ac3565b60405161070891906148cc565b60405180910390f35b34801561071d57600080fd5b5061073860048036038101906107339190614c6e565b611b55565b005b34801561074657600080fd5b50610761600480360381019061075c9190614987565b611c88565b60405161076e91906149e2565b60405180910390f35b34801561078357600080fd5b5061079e60048036038101906107999190614987565b611d55565b6040516107ab91906149e2565b60405180910390f35b3480156107c057600080fd5b506107c9611d73565b6040516107d691906149e2565b60405180910390f35b3480156107eb57600080fd5b5061080660048036038101906108019190614b82565b611e89565b60405161081391906149e2565b60405180910390f35b34801561082857600080fd5b50610831611ea9565b60405161083e91906149e2565b60405180910390f35b34801561085357600080fd5b5061086e60048036038101906108699190614c6e565b611ebc565b005b34801561087c57600080fd5b5061089760048036038101906108929190614aa1565b611ffc565b005b3480156108a557600080fd5b506108ae612126565b6040516108bb9190614a86565b60405180910390f35b3480156108d057600080fd5b506108eb60048036038101906108e69190614aa1565b61212c565b6040516108f891906149e2565b60405180910390f35b34801561090d57600080fd5b5061091661229c565b6040516109239190614a86565b60405180910390f35b34801561093857600080fd5b50610953600480360381019061094e9190614c2e565b6122a2565b6040516109609190614a86565b60405180910390f35b34801561097557600080fd5b5061097e612329565b60405161098b9190614a86565b60405180910390f35b3480156109a057600080fd5b506109a961232f565b6040516109b691906149e2565b60405180910390f35b3480156109cb57600080fd5b506109d46123ea565b6040516109e191906149e2565b60405180910390f35b3480156109f657600080fd5b50610a116004803603810190610a0c9190614b82565b612500565b005b348015610a1f57600080fd5b50610a286126c6565b604051610a3591906149e2565b60405180910390f35b348015610a4a57600080fd5b50610a53612781565b604051610a609190614a86565b60405180910390f35b348015610a7557600080fd5b50610a906004803603810190610a8b9190614aa1565b612787565b604051610a9d91906149e2565b60405180910390f35b348015610ab257600080fd5b50610acd6004803603810190610ac89190614d2e565b612a7a565b005b606060038054610ade90614dd8565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0a90614dd8565b8015610b575780601f10610b2c57610100808354040283529160200191610b57565b820191906000526020600020905b815481529060010190602001808311610b3a57829003601f168201915b5050505050905090565b6000610b75610b6e612c02565b8484612c0a565b6001905092915050565b6000610b89612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0f90614e55565b60405180910390fd5b6007601a819055506000601b819055506000601c81905550601c54601b54601a54610c439190614ea4565b610c4d9190614ea4565b601981905550600760168190555060006017819055506000601881905550601854601754601654610c7e9190614ea4565b610c889190614ea4565b6015819055506001905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610ccb612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5190614e55565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e8190555043602281905550565b610da8612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2e90614e55565b60405180910390fd5b670de0b6b3a76400006103e8600a610e4d610cb9565b610e579190614ed8565b610e619190614f49565b610e6b9190614f49565b811015610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea490614fec565b60405180910390fd5b670de0b6b3a764000081610ec19190614ed8565b60088190555050565b6000610ed7848484612dd3565b610f9884610ee3612c02565b610f9385604051806060016040528060288152602001615f2f60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f49612c02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b689092919063ffffffff16565b612c0a565b600190509392505050565b61dead81565b600c60009054906101000a900460ff1681565b60006012905090565b600061106e610fd2612c02565b846110698560016000610fe3612c02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ba490919063ffffffff16565b612c0a565b6001905092915050565b6000611082612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110890614e55565b60405180910390fd5b600a601a819055506000601b819055506000601c81905550601c54601b54601a5461113c9190614ea4565b6111469190614ea4565b601981905550600a601681905550600060178190555060006018819055506018546017546016546111779190614ea4565b6111819190614ea4565b6015819055506001905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60195481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61125e612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490614e55565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6113b6612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c90614e55565b60405180910390fd5b61025883101561148a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114819061507e565b60405180910390fd5b6103e8821115801561149d575060008210155b6114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d390615110565b60405180910390fd5b82600d8190555081600b8190555080600c60006101000a81548160ff021916908315150217905550505050565b611511612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159790614e55565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a381600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000611728612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ae90614e55565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b6117e1612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186790614e55565b60405180910390fd5b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6118d3612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195990614e55565b60405180910390fd5b82601681905550816017819055508060188190555060185460175460165461198a9190614ea4565b6119949190614ea4565b601581905550600f60155411156119e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d79061517c565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611a17612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9d90614e55565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b606060048054611ad290614dd8565b80601f0160208091040260200160405190810160405280929190818152602001828054611afe90614dd8565b8015611b4b5780601f10611b2057610100808354040283529160200191611b4b565b820191906000526020600020905b815481529060010190602001808311611b2e57829003601f168201915b5050505050905090565b611b5d612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be390614e55565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c719061520e565b60405180910390fd5b611c848282613bcc565b5050565b6000611d4b611c95612c02565b84611d4685604051806060016040528060258152602001615f576025913960016000611cbf612c02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b689092919063ffffffff16565b612c0a565b6001905092915050565b6000611d69611d62612c02565b8484612dd3565b6001905092915050565b6000611d7d612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0390614e55565b60405180910390fd5b600c601a819055506000601b819055506000601c81905550601c54601b54601a54611e379190614ea4565b611e419190614ea4565b601981905550600a60168190555060006017819055506000601881905550601854601754601654611e729190614ea4565b611e7c9190614ea4565b6015819055506001905090565b60256020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611ec4612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4a90614e55565b60405180910390fd5b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ff091906149e2565b60405180910390a25050565b612004612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a90614e55565b60405180910390fd5b670de0b6b3a76400006103e8600a6120a9610cb9565b6120b39190614ed8565b6120bd9190614f49565b6120c79190614f49565b811015612109576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612100906152a0565b60405180910390fd5b670de0b6b3a76400008161211d9190614ed8565b600a8190555050565b60085481565b6000612136612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bc90614e55565b60405180910390fd5b620186a060016121d3610cb9565b6121dd9190614ed8565b6121e79190614f49565b821015612229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222090615332565b60405180910390fd5b6103e86005612236610cb9565b6122409190614ed8565b61224a9190614f49565b82111561228c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612283906153c4565b60405180910390fd5b8160098190555060019050919050565b60155481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000612339612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bf90614e55565b60405180910390fd5b6000601460006101000a81548160ff0219169083151502179055506001905090565b60006123f4612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247a90614e55565b60405180910390fd5b6003601a819055506000601b819055506000601c81905550601c54601b54601a546124ae9190614ea4565b6124b89190614ea4565b6019819055506003601681905550600060178190555060006018819055506018546017546016546124e99190614ea4565b6124f39190614ea4565b6015819055506001905090565b612508612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258e90614e55565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fd90615456565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006126d0612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461275f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275690614e55565b60405180910390fd5b6001600c60006101000a81548160ff0219169083151502179055506001905090565b600a5481565b6000612791612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281790614e55565b60405180910390fd5b600f546010546128309190614ea4565b4211612871576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612868906154c2565b60405180910390fd5b6103e88211156128b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ad90615554565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016129189190614b30565b602060405180830381865afa158015612935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129599190615589565b905060006129846127106129768685613c6d90919063ffffffff16565b613ce790919063ffffffff16565b905060008111156129bd576129bc7f000000000000000000000000000000000000000000000000000000000000000061dead83613d31565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a2a57600080fd5b505af1158015612a3e573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b612a82612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0890614e55565b60405180910390fd5b84601a8190555083601b8190555082601c8190555081601d8190555080601e81905550601c54601b54601a54612b479190614ea4565b612b519190614ea4565b601981905550600f6019541115612b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b949061517c565b60405180910390fd5b5050505050565b6000808284612bb39190614ea4565b905083811015612bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bef90615602565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7090615694565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdf90615726565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612dc69190614a86565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e39906157b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea89061584a565b60405180910390fd5b60008103612eca57612ec583836000613d31565b613b63565b601160009054906101000a900460ff161561358d57612ee76119e5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f555750612f256119e5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f8e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fc8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fe15750600560149054906101000a900460ff16155b1561358c57601160019054906101000a900460ff166130db57602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061309b5750602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d1906158b6565b60405180910390fd5b5b601460009054906101000a900460ff16156132a3576130f86119e5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561317f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131d757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156132a25743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061325d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132549061596e565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133465750602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133ed57600854811115613390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338790615a00565b60405180910390fd5b600a5461339c8361120e565b826133a79190614ea4565b11156133e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133df90615a6c565b60405180910390fd5b61358b565b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134905750602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134df576008548111156134da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134d190615afe565b60405180910390fd5b61358a565b602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661358957600a5461353c8361120e565b826135479190614ea4565b1115613588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357f90615a6c565b60405180910390fd5b5b5b5b5b5b60006135983061120e565b9050600060095482101590508080156135bd5750601160029054906101000a900460ff165b80156135d65750600560149054906101000a900460ff16155b801561362c5750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136825750602360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136d85750602360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561371c576001600560146101000a81548160ff021916908315150217905550613700613fc4565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff161580156137825750602560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561379a5750600c60009054906101000a900460ff165b80156137b55750600d54600e546137b19190614ea4565b4210155b801561380b5750602360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561381a576138186142ab565b505b6000600560149054906101000a900460ff16159050602360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138d05750602360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138da57600090505b60008115613b5357602560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561393d57506000601954115b15613a0a5761396a606461395c60195488613c6d90919063ffffffff16565b613ce790919063ffffffff16565b9050601954601b548261397d9190614ed8565b6139879190614f49565b602060008282546139989190614ea4565b92505081905550601954601c54826139b09190614ed8565b6139ba9190614f49565b602160008282546139cb9190614ea4565b92505081905550601954601a54826139e39190614ed8565b6139ed9190614f49565b601f60008282546139fe9190614ea4565b92505081905550613b2f565b602560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a6557506000601554115b15613b2e57613a926064613a8460155488613c6d90919063ffffffff16565b613ce790919063ffffffff16565b905060155460175482613aa59190614ed8565b613aaf9190614f49565b60206000828254613ac09190614ea4565b9250508190555060155460185482613ad89190614ed8565b613ae29190614f49565b60216000828254613af39190614ea4565b9250508190555060155460165482613b0b9190614ed8565b613b159190614f49565b601f6000828254613b269190614ea4565b925050819055505b5b6000811115613b4457613b43873083613d31565b5b8085613b509190615b1e565b94505b613b5e878787613d31565b505050505b505050565b6000838311158290613bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba791906148cc565b60405180910390fd5b5060008385613bbf9190615b1e565b9050809150509392505050565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000808303613c7f5760009050613ce1565b60008284613c8d9190614ed8565b9050828482613c9c9190614f49565b14613cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cd390615bc4565b60405180910390fd5b809150505b92915050565b6000613d2983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614471565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d97906157b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e069061584a565b60405180910390fd5b613e1a8383836144d4565b613e8581604051806060016040528060268152602001615f09602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b689092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f18816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ba490919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613fb79190614a86565b60405180910390a3505050565b6000613fcf3061120e565b90506000602154601f54602054613fe69190614ea4565b613ff09190614ea4565b90506000808314806140025750600082145b1561400f575050506142a9565b601460095461401e9190614ed8565b8311156140375760146009546140349190614ed8565b92505b60006002836020548661404a9190614ed8565b6140549190614f49565b61405e9190614f49565b9050600061407582866144d990919063ffffffff16565b9050600047905061408582614523565b600061409a82476144d990919063ffffffff16565b905060006140c5876140b7601f5485613c6d90919063ffffffff16565b613ce790919063ffffffff16565b905060006140f0886140e260215486613c6d90919063ffffffff16565b613ce790919063ffffffff16565b905060008183856141019190615b1e565b61410b9190615b1e565b905060006020819055506000601f819055506000602181905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161416b90615c15565b60006040518083038185875af1925050503d80600081146141a8576040519150601f19603f3d011682016040523d82523d6000602084013e6141ad565b606091505b5050809850506000871180156141c35750600081115b15614210576141d28782614760565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260205460405161420793929190615c2a565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161425690615c15565b60006040518083038185875af1925050503d8060008114614293576040519150601f19603f3d011682016040523d82523d6000602084013e614298565b606091505b505080985050505050505050505050505b565b600042600e8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161430f9190614b30565b602060405180830381865afa15801561432c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143509190615589565b9050600061437d61271061436f600b5485613c6d90919063ffffffff16565b613ce790919063ffffffff16565b905060008111156143b6576143b57f000000000000000000000000000000000000000000000000000000000000000061dead83613d31565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561442357600080fd5b505af1158015614437573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b600080831182906144b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144af91906148cc565b60405180910390fd5b50600083856144c79190614f49565b9050809150509392505050565b505050565b600061451b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b68565b905092915050565b6000600267ffffffffffffffff8111156145405761453f615c61565b5b60405190808252806020026020018201604052801561456e5781602001602082028036833780820191505090505b509050308160008151811061458657614585615c90565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561462b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061464f9190615cd4565b8160018151811061466357614662615c90565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506146c8307f000000000000000000000000000000000000000000000000000000000000000084612c0a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161472a959493929190615dfa565b600060405180830381600087803b15801561474457600080fd5b505af1158015614758573d6000803e3d6000fd5b505050505050565b61478b307f000000000000000000000000000000000000000000000000000000000000000084612c0a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016147f296959493929190615e54565b60606040518083038185885af1158015614810573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906148359190615eb5565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561487657808201518184015260208101905061485b565b60008484015250505050565b6000601f19601f8301169050919050565b600061489e8261483c565b6148a88185614847565b93506148b8818560208601614858565b6148c181614882565b840191505092915050565b600060208201905081810360008301526148e68184614893565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061491e826148f3565b9050919050565b61492e81614913565b811461493957600080fd5b50565b60008135905061494b81614925565b92915050565b6000819050919050565b61496481614951565b811461496f57600080fd5b50565b6000813590506149818161495b565b92915050565b6000806040838503121561499e5761499d6148ee565b5b60006149ac8582860161493c565b92505060206149bd85828601614972565b9150509250929050565b60008115159050919050565b6149dc816149c7565b82525050565b60006020820190506149f760008301846149d3565b92915050565b6000819050919050565b6000614a22614a1d614a18846148f3565b6149fd565b6148f3565b9050919050565b6000614a3482614a07565b9050919050565b6000614a4682614a29565b9050919050565b614a5681614a3b565b82525050565b6000602082019050614a716000830184614a4d565b92915050565b614a8081614951565b82525050565b6000602082019050614a9b6000830184614a77565b92915050565b600060208284031215614ab757614ab66148ee565b5b6000614ac584828501614972565b91505092915050565b600080600060608486031215614ae757614ae66148ee565b5b6000614af58682870161493c565b9350506020614b068682870161493c565b9250506040614b1786828701614972565b9150509250925092565b614b2a81614913565b82525050565b6000602082019050614b456000830184614b21565b92915050565b600060ff82169050919050565b614b6181614b4b565b82525050565b6000602082019050614b7c6000830184614b58565b92915050565b600060208284031215614b9857614b976148ee565b5b6000614ba68482850161493c565b91505092915050565b614bb8816149c7565b8114614bc357600080fd5b50565b600081359050614bd581614baf565b92915050565b600080600060608486031215614bf457614bf36148ee565b5b6000614c0286828701614972565b9350506020614c1386828701614972565b9250506040614c2486828701614bc6565b9150509250925092565b60008060408385031215614c4557614c446148ee565b5b6000614c538582860161493c565b9250506020614c648582860161493c565b9150509250929050565b60008060408385031215614c8557614c846148ee565b5b6000614c938582860161493c565b9250506020614ca485828601614bc6565b9150509250929050565b600080600060608486031215614cc757614cc66148ee565b5b6000614cd586828701614972565b9350506020614ce686828701614972565b9250506040614cf786828701614972565b9150509250925092565b600060208284031215614d1757614d166148ee565b5b6000614d2584828501614bc6565b91505092915050565b600080600080600060a08688031215614d4a57614d496148ee565b5b6000614d5888828901614972565b9550506020614d6988828901614972565b9450506040614d7a88828901614972565b9350506060614d8b88828901614972565b9250506080614d9c88828901614972565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614df057607f821691505b602082108103614e0357614e02614da9565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614e3f602083614847565b9150614e4a82614e09565b602082019050919050565b60006020820190508181036000830152614e6e81614e32565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614eaf82614951565b9150614eba83614951565b9250828201905080821115614ed257614ed1614e75565b5b92915050565b6000614ee382614951565b9150614eee83614951565b9250828202614efc81614951565b91508282048414831517614f1357614f12614e75565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f5482614951565b9150614f5f83614951565b925082614f6f57614f6e614f1a565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20312e30250000000000000000000000000000000000602082015250565b6000614fd6602f83614847565b9150614fe182614f7a565b604082019050919050565b6000602082019050818103600083015261500581614fc9565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000615068603383614847565b91506150738261500c565b604082019050919050565b600060208201905081810360008301526150978161505b565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b60006150fa603083614847565b91506151058261509e565b604082019050919050565b60006020820190508181036000830152615129816150ed565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000615166601d83614847565b915061517182615130565b602082019050919050565b6000602082019050818103600083015261519581615159565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006151f8603983614847565b91506152038261519c565b604082019050919050565b60006020820190508181036000830152615227816151eb565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f312e302500000000000000000000000000000000000000000000000000000000602082015250565b600061528a602483614847565b91506152958261522e565b604082019050919050565b600060208201905081810360008301526152b98161527d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061531c603583614847565b9150615327826152c0565b604082019050919050565b6000602082019050818103600083015261534b8161530f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006153ae603483614847565b91506153b982615352565b604082019050919050565b600060208201905081810360008301526153dd816153a1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615440602683614847565b915061544b826153e4565b604082019050919050565b6000602082019050818103600083015261546f81615433565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b60006154ac602083614847565b91506154b782615476565b602082019050919050565b600060208201905081810360008301526154db8161549f565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b600061553e602a83614847565b9150615549826154e2565b604082019050919050565b6000602082019050818103600083015261556d81615531565b9050919050565b6000815190506155838161495b565b92915050565b60006020828403121561559f5761559e6148ee565b5b60006155ad84828501615574565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006155ec601b83614847565b91506155f7826155b6565b602082019050919050565b6000602082019050818103600083015261561b816155df565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061567e602483614847565b915061568982615622565b604082019050919050565b600060208201905081810360008301526156ad81615671565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615710602283614847565b915061571b826156b4565b604082019050919050565b6000602082019050818103600083015261573f81615703565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006157a2602583614847565b91506157ad82615746565b604082019050919050565b600060208201905081810360008301526157d181615795565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615834602383614847565b915061583f826157d8565b604082019050919050565b6000602082019050818103600083015261586381615827565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006158a0601683614847565b91506158ab8261586a565b602082019050919050565b600060208201905081810360008301526158cf81615893565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615958604983614847565b9150615963826158d6565b606082019050919050565b600060208201905081810360008301526159878161594b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006159ea603583614847565b91506159f58261598e565b604082019050919050565b60006020820190508181036000830152615a19816159dd565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615a56601383614847565b9150615a6182615a20565b602082019050919050565b60006020820190508181036000830152615a8581615a49565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615ae8603683614847565b9150615af382615a8c565b604082019050919050565b60006020820190508181036000830152615b1781615adb565b9050919050565b6000615b2982614951565b9150615b3483614951565b9250828203905081811115615b4c57615b4b614e75565b5b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615bae602183614847565b9150615bb982615b52565b604082019050919050565b60006020820190508181036000830152615bdd81615ba1565b9050919050565b600081905092915050565b50565b6000615bff600083615be4565b9150615c0a82615bef565b600082019050919050565b6000615c2082615bf2565b9150819050919050565b6000606082019050615c3f6000830186614a77565b615c4c6020830185614a77565b615c596040830184614a77565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615cce81614925565b92915050565b600060208284031215615cea57615ce96148ee565b5b6000615cf884828501615cbf565b91505092915050565b6000819050919050565b6000615d26615d21615d1c84615d01565b6149fd565b614951565b9050919050565b615d3681615d0b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d7181614913565b82525050565b6000615d838383615d68565b60208301905092915050565b6000602082019050919050565b6000615da782615d3c565b615db18185615d47565b9350615dbc83615d58565b8060005b83811015615ded578151615dd48882615d77565b9750615ddf83615d8f565b925050600181019050615dc0565b5085935050505092915050565b600060a082019050615e0f6000830188614a77565b615e1c6020830187615d2d565b8181036040830152615e2e8186615d9c565b9050615e3d6060830185614b21565b615e4a6080830184614a77565b9695505050505050565b600060c082019050615e696000830189614b21565b615e766020830188614a77565b615e836040830187615d2d565b615e906060830186615d2d565b615e9d6080830185614b21565b615eaa60a0830184614a77565b979650505050505050565b600080600060608486031215615ece57615ecd6148ee565b5b6000615edc86828701615574565b9350506020615eed86828701615574565b9250506040615efe86828701615574565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201c6f457eb52ad1becb5621c827fc441f8b82ba98f3ce6a046bb27cda0eb8e12864736f6c63430008120033
Deployed Bytecode
0x6080604052600436106102815760003560e01c80638da5cb5b1161014f578063c8c8ebe4116100c1578063ec6c12901161007a578063ec6c1290146109bf578063f2fde38b146109ea578063f84c08fe14610a13578063f8b45b0514610a3e578063fe72b27a14610a69578063ff935af614610aa657610288565b8063c8c8ebe414610899578063d257b34f146108c4578063d85ba06314610901578063dd62ed3e1461092c578063e2f4560514610969578063e884f2601461099457610288565b8063a9059cbb11610113578063a9059cbb14610777578063b27cda5c146107b4578063b62496f5146107df578063bbc0c7421461081c578063c024666814610847578063c18bc1951461087057610288565b80638da5cb5b14610692578063924de9b7146106bd57806395d89b41146106e65780639a7a23d614610711578063a457c2d71461073a57610288565b806339509351116101f3578063715018a6116101ac578063715018a6146105ac578063730c1888146105c357806373d73126146105ec578063751039fc146106155780637571336a146106405780638095d5641461066957610288565b806339509351146104745780634699c3c2146104b157806349bd5a5e146104dc5780634fbee193146105075780636a486a8e1461054457806370a082311461056f57610288565b80631933a4cd116102455780631933a4cd14610376578063203e727e1461038d57806323b872dd146103b657806327c8f835146103f35780632e82f1a01461041e578063313ce5671461044957610288565b806306fdde031461028d578063095ea7b3146102b85780631169b9d8146102f55780631694505e1461032057806318160ddd1461034b57610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610acf565b6040516102af91906148cc565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190614987565b610b61565b6040516102ec91906149e2565b60405180910390f35b34801561030157600080fd5b5061030a610b7f565b60405161031791906149e2565b60405180910390f35b34801561032c57600080fd5b50610335610c95565b6040516103429190614a5c565b60405180910390f35b34801561035757600080fd5b50610360610cb9565b60405161036d9190614a86565b60405180910390f35b34801561038257600080fd5b5061038b610cc3565b005b34801561039957600080fd5b506103b460048036038101906103af9190614aa1565b610da0565b005b3480156103c257600080fd5b506103dd60048036038101906103d89190614ace565b610eca565b6040516103ea91906149e2565b60405180910390f35b3480156103ff57600080fd5b50610408610fa3565b6040516104159190614b30565b60405180910390f35b34801561042a57600080fd5b50610433610fa9565b60405161044091906149e2565b60405180910390f35b34801561045557600080fd5b5061045e610fbc565b60405161046b9190614b67565b60405180910390f35b34801561048057600080fd5b5061049b60048036038101906104969190614987565b610fc5565b6040516104a891906149e2565b60405180910390f35b3480156104bd57600080fd5b506104c6611078565b6040516104d391906149e2565b60405180910390f35b3480156104e857600080fd5b506104f161118e565b6040516104fe9190614b30565b60405180910390f35b34801561051357600080fd5b5061052e60048036038101906105299190614b82565b6111b2565b60405161053b91906149e2565b60405180910390f35b34801561055057600080fd5b50610559611208565b6040516105669190614a86565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190614b82565b61120e565b6040516105a39190614a86565b60405180910390f35b3480156105b857600080fd5b506105c1611256565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190614bdb565b6113ae565b005b3480156105f857600080fd5b50610613600480360381019061060e9190614c2e565b611509565b005b34801561062157600080fd5b5061062a61171e565b60405161063791906149e2565b60405180910390f35b34801561064c57600080fd5b5061066760048036038101906106629190614c6e565b6117d9565b005b34801561067557600080fd5b50610690600480360381019061068b9190614cae565b6118cb565b005b34801561069e57600080fd5b506106a76119e5565b6040516106b49190614b30565b60405180910390f35b3480156106c957600080fd5b506106e460048036038101906106df9190614d01565b611a0f565b005b3480156106f257600080fd5b506106fb611ac3565b60405161070891906148cc565b60405180910390f35b34801561071d57600080fd5b5061073860048036038101906107339190614c6e565b611b55565b005b34801561074657600080fd5b50610761600480360381019061075c9190614987565b611c88565b60405161076e91906149e2565b60405180910390f35b34801561078357600080fd5b5061079e60048036038101906107999190614987565b611d55565b6040516107ab91906149e2565b60405180910390f35b3480156107c057600080fd5b506107c9611d73565b6040516107d691906149e2565b60405180910390f35b3480156107eb57600080fd5b5061080660048036038101906108019190614b82565b611e89565b60405161081391906149e2565b60405180910390f35b34801561082857600080fd5b50610831611ea9565b60405161083e91906149e2565b60405180910390f35b34801561085357600080fd5b5061086e60048036038101906108699190614c6e565b611ebc565b005b34801561087c57600080fd5b5061089760048036038101906108929190614aa1565b611ffc565b005b3480156108a557600080fd5b506108ae612126565b6040516108bb9190614a86565b60405180910390f35b3480156108d057600080fd5b506108eb60048036038101906108e69190614aa1565b61212c565b6040516108f891906149e2565b60405180910390f35b34801561090d57600080fd5b5061091661229c565b6040516109239190614a86565b60405180910390f35b34801561093857600080fd5b50610953600480360381019061094e9190614c2e565b6122a2565b6040516109609190614a86565b60405180910390f35b34801561097557600080fd5b5061097e612329565b60405161098b9190614a86565b60405180910390f35b3480156109a057600080fd5b506109a961232f565b6040516109b691906149e2565b60405180910390f35b3480156109cb57600080fd5b506109d46123ea565b6040516109e191906149e2565b60405180910390f35b3480156109f657600080fd5b50610a116004803603810190610a0c9190614b82565b612500565b005b348015610a1f57600080fd5b50610a286126c6565b604051610a3591906149e2565b60405180910390f35b348015610a4a57600080fd5b50610a53612781565b604051610a609190614a86565b60405180910390f35b348015610a7557600080fd5b50610a906004803603810190610a8b9190614aa1565b612787565b604051610a9d91906149e2565b60405180910390f35b348015610ab257600080fd5b50610acd6004803603810190610ac89190614d2e565b612a7a565b005b606060038054610ade90614dd8565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0a90614dd8565b8015610b575780601f10610b2c57610100808354040283529160200191610b57565b820191906000526020600020905b815481529060010190602001808311610b3a57829003601f168201915b5050505050905090565b6000610b75610b6e612c02565b8484612c0a565b6001905092915050565b6000610b89612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0f90614e55565b60405180910390fd5b6007601a819055506000601b819055506000601c81905550601c54601b54601a54610c439190614ea4565b610c4d9190614ea4565b601981905550600760168190555060006017819055506000601881905550601854601754601654610c7e9190614ea4565b610c889190614ea4565b6015819055506001905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610ccb612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5190614e55565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e8190555043602281905550565b610da8612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2e90614e55565b60405180910390fd5b670de0b6b3a76400006103e8600a610e4d610cb9565b610e579190614ed8565b610e619190614f49565b610e6b9190614f49565b811015610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea490614fec565b60405180910390fd5b670de0b6b3a764000081610ec19190614ed8565b60088190555050565b6000610ed7848484612dd3565b610f9884610ee3612c02565b610f9385604051806060016040528060288152602001615f2f60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f49612c02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b689092919063ffffffff16565b612c0a565b600190509392505050565b61dead81565b600c60009054906101000a900460ff1681565b60006012905090565b600061106e610fd2612c02565b846110698560016000610fe3612c02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ba490919063ffffffff16565b612c0a565b6001905092915050565b6000611082612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110890614e55565b60405180910390fd5b600a601a819055506000601b819055506000601c81905550601c54601b54601a5461113c9190614ea4565b6111469190614ea4565b601981905550600a601681905550600060178190555060006018819055506018546017546016546111779190614ea4565b6111819190614ea4565b6015819055506001905090565b7f0000000000000000000000009308ada7cf6f44471c0fa442198cdf202e7b2ea381565b6000602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60195481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61125e612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490614e55565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6113b6612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c90614e55565b60405180910390fd5b61025883101561148a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114819061507e565b60405180910390fd5b6103e8821115801561149d575060008210155b6114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d390615110565b60405180910390fd5b82600d8190555081600b8190555080600c60006101000a81548160ff021916908315150217905550505050565b611511612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159790614e55565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a381600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000611728612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ae90614e55565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b6117e1612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186790614e55565b60405180910390fd5b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6118d3612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195990614e55565b60405180910390fd5b82601681905550816017819055508060188190555060185460175460165461198a9190614ea4565b6119949190614ea4565b601581905550600f60155411156119e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d79061517c565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611a17612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9d90614e55565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b606060048054611ad290614dd8565b80601f0160208091040260200160405190810160405280929190818152602001828054611afe90614dd8565b8015611b4b5780601f10611b2057610100808354040283529160200191611b4b565b820191906000526020600020905b815481529060010190602001808311611b2e57829003601f168201915b5050505050905090565b611b5d612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be390614e55565b60405180910390fd5b7f0000000000000000000000009308ada7cf6f44471c0fa442198cdf202e7b2ea373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c719061520e565b60405180910390fd5b611c848282613bcc565b5050565b6000611d4b611c95612c02565b84611d4685604051806060016040528060258152602001615f576025913960016000611cbf612c02565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b689092919063ffffffff16565b612c0a565b6001905092915050565b6000611d69611d62612c02565b8484612dd3565b6001905092915050565b6000611d7d612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0390614e55565b60405180910390fd5b600c601a819055506000601b819055506000601c81905550601c54601b54601a54611e379190614ea4565b611e419190614ea4565b601981905550600a60168190555060006017819055506000601881905550601854601754601654611e729190614ea4565b611e7c9190614ea4565b6015819055506001905090565b60256020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611ec4612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4a90614e55565b60405180910390fd5b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ff091906149e2565b60405180910390a25050565b612004612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a90614e55565b60405180910390fd5b670de0b6b3a76400006103e8600a6120a9610cb9565b6120b39190614ed8565b6120bd9190614f49565b6120c79190614f49565b811015612109576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612100906152a0565b60405180910390fd5b670de0b6b3a76400008161211d9190614ed8565b600a8190555050565b60085481565b6000612136612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bc90614e55565b60405180910390fd5b620186a060016121d3610cb9565b6121dd9190614ed8565b6121e79190614f49565b821015612229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222090615332565b60405180910390fd5b6103e86005612236610cb9565b6122409190614ed8565b61224a9190614f49565b82111561228c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612283906153c4565b60405180910390fd5b8160098190555060019050919050565b60155481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000612339612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bf90614e55565b60405180910390fd5b6000601460006101000a81548160ff0219169083151502179055506001905090565b60006123f4612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247a90614e55565b60405180910390fd5b6003601a819055506000601b819055506000601c81905550601c54601b54601a546124ae9190614ea4565b6124b89190614ea4565b6019819055506003601681905550600060178190555060006018819055506018546017546016546124e99190614ea4565b6124f39190614ea4565b6015819055506001905090565b612508612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258e90614e55565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fd90615456565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006126d0612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461275f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275690614e55565b60405180910390fd5b6001600c60006101000a81548160ff0219169083151502179055506001905090565b600a5481565b6000612791612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281790614e55565b60405180910390fd5b600f546010546128309190614ea4565b4211612871576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612868906154c2565b60405180910390fd5b6103e88211156128b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ad90615554565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f0000000000000000000000009308ada7cf6f44471c0fa442198cdf202e7b2ea36040518263ffffffff1660e01b81526004016129189190614b30565b602060405180830381865afa158015612935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129599190615589565b905060006129846127106129768685613c6d90919063ffffffff16565b613ce790919063ffffffff16565b905060008111156129bd576129bc7f0000000000000000000000009308ada7cf6f44471c0fa442198cdf202e7b2ea361dead83613d31565b5b60007f0000000000000000000000009308ada7cf6f44471c0fa442198cdf202e7b2ea390508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a2a57600080fd5b505af1158015612a3e573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b612a82612c02565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0890614e55565b60405180910390fd5b84601a8190555083601b8190555082601c8190555081601d8190555080601e81905550601c54601b54601a54612b479190614ea4565b612b519190614ea4565b601981905550600f6019541115612b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b949061517c565b60405180910390fd5b5050505050565b6000808284612bb39190614ea4565b905083811015612bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bef90615602565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7090615694565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdf90615726565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612dc69190614a86565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e39906157b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea89061584a565b60405180910390fd5b60008103612eca57612ec583836000613d31565b613b63565b601160009054906101000a900460ff161561358d57612ee76119e5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f555750612f256119e5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f8e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fc8575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fe15750600560149054906101000a900460ff16155b1561358c57601160019054906101000a900460ff166130db57602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061309b5750602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d1906158b6565b60405180910390fd5b5b601460009054906101000a900460ff16156132a3576130f86119e5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561317f57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131d757507f0000000000000000000000009308ada7cf6f44471c0fa442198cdf202e7b2ea373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156132a25743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061325d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132549061596e565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133465750602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133ed57600854811115613390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338790615a00565b60405180910390fd5b600a5461339c8361120e565b826133a79190614ea4565b11156133e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133df90615a6c565b60405180910390fd5b61358b565b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134905750602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134df576008548111156134da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134d190615afe565b60405180910390fd5b61358a565b602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661358957600a5461353c8361120e565b826135479190614ea4565b1115613588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357f90615a6c565b60405180910390fd5b5b5b5b5b5b60006135983061120e565b9050600060095482101590508080156135bd5750601160029054906101000a900460ff165b80156135d65750600560149054906101000a900460ff16155b801561362c5750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136825750602360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136d85750602360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561371c576001600560146101000a81548160ff021916908315150217905550613700613fc4565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff161580156137825750602560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561379a5750600c60009054906101000a900460ff165b80156137b55750600d54600e546137b19190614ea4565b4210155b801561380b5750602360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561381a576138186142ab565b505b6000600560149054906101000a900460ff16159050602360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138d05750602360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138da57600090505b60008115613b5357602560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561393d57506000601954115b15613a0a5761396a606461395c60195488613c6d90919063ffffffff16565b613ce790919063ffffffff16565b9050601954601b548261397d9190614ed8565b6139879190614f49565b602060008282546139989190614ea4565b92505081905550601954601c54826139b09190614ed8565b6139ba9190614f49565b602160008282546139cb9190614ea4565b92505081905550601954601a54826139e39190614ed8565b6139ed9190614f49565b601f60008282546139fe9190614ea4565b92505081905550613b2f565b602560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a6557506000601554115b15613b2e57613a926064613a8460155488613c6d90919063ffffffff16565b613ce790919063ffffffff16565b905060155460175482613aa59190614ed8565b613aaf9190614f49565b60206000828254613ac09190614ea4565b9250508190555060155460185482613ad89190614ed8565b613ae29190614f49565b60216000828254613af39190614ea4565b9250508190555060155460165482613b0b9190614ed8565b613b159190614f49565b601f6000828254613b269190614ea4565b925050819055505b5b6000811115613b4457613b43873083613d31565b5b8085613b509190615b1e565b94505b613b5e878787613d31565b505050505b505050565b6000838311158290613bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba791906148cc565b60405180910390fd5b5060008385613bbf9190615b1e565b9050809150509392505050565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000808303613c7f5760009050613ce1565b60008284613c8d9190614ed8565b9050828482613c9c9190614f49565b14613cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cd390615bc4565b60405180910390fd5b809150505b92915050565b6000613d2983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614471565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d97906157b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e069061584a565b60405180910390fd5b613e1a8383836144d4565b613e8581604051806060016040528060268152602001615f09602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b689092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f18816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ba490919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613fb79190614a86565b60405180910390a3505050565b6000613fcf3061120e565b90506000602154601f54602054613fe69190614ea4565b613ff09190614ea4565b90506000808314806140025750600082145b1561400f575050506142a9565b601460095461401e9190614ed8565b8311156140375760146009546140349190614ed8565b92505b60006002836020548661404a9190614ed8565b6140549190614f49565b61405e9190614f49565b9050600061407582866144d990919063ffffffff16565b9050600047905061408582614523565b600061409a82476144d990919063ffffffff16565b905060006140c5876140b7601f5485613c6d90919063ffffffff16565b613ce790919063ffffffff16565b905060006140f0886140e260215486613c6d90919063ffffffff16565b613ce790919063ffffffff16565b905060008183856141019190615b1e565b61410b9190615b1e565b905060006020819055506000601f819055506000602181905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161416b90615c15565b60006040518083038185875af1925050503d80600081146141a8576040519150601f19603f3d011682016040523d82523d6000602084013e6141ad565b606091505b5050809850506000871180156141c35750600081115b15614210576141d28782614760565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260205460405161420793929190615c2a565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161425690615c15565b60006040518083038185875af1925050503d8060008114614293576040519150601f19603f3d011682016040523d82523d6000602084013e614298565b606091505b505080985050505050505050505050505b565b600042600e8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f0000000000000000000000009308ada7cf6f44471c0fa442198cdf202e7b2ea36040518263ffffffff1660e01b815260040161430f9190614b30565b602060405180830381865afa15801561432c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143509190615589565b9050600061437d61271061436f600b5485613c6d90919063ffffffff16565b613ce790919063ffffffff16565b905060008111156143b6576143b57f0000000000000000000000009308ada7cf6f44471c0fa442198cdf202e7b2ea361dead83613d31565b5b60007f0000000000000000000000009308ada7cf6f44471c0fa442198cdf202e7b2ea390508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561442357600080fd5b505af1158015614437573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b600080831182906144b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144af91906148cc565b60405180910390fd5b50600083856144c79190614f49565b9050809150509392505050565b505050565b600061451b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b68565b905092915050565b6000600267ffffffffffffffff8111156145405761453f615c61565b5b60405190808252806020026020018201604052801561456e5781602001602082028036833780820191505090505b509050308160008151811061458657614585615c90565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561462b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061464f9190615cd4565b8160018151811061466357614662615c90565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506146c8307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612c0a565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161472a959493929190615dfa565b600060405180830381600087803b15801561474457600080fd5b505af1158015614758573d6000803e3d6000fd5b505050505050565b61478b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612c0a565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016147f296959493929190615e54565b60606040518083038185885af1158015614810573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906148359190615eb5565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561487657808201518184015260208101905061485b565b60008484015250505050565b6000601f19601f8301169050919050565b600061489e8261483c565b6148a88185614847565b93506148b8818560208601614858565b6148c181614882565b840191505092915050565b600060208201905081810360008301526148e68184614893565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061491e826148f3565b9050919050565b61492e81614913565b811461493957600080fd5b50565b60008135905061494b81614925565b92915050565b6000819050919050565b61496481614951565b811461496f57600080fd5b50565b6000813590506149818161495b565b92915050565b6000806040838503121561499e5761499d6148ee565b5b60006149ac8582860161493c565b92505060206149bd85828601614972565b9150509250929050565b60008115159050919050565b6149dc816149c7565b82525050565b60006020820190506149f760008301846149d3565b92915050565b6000819050919050565b6000614a22614a1d614a18846148f3565b6149fd565b6148f3565b9050919050565b6000614a3482614a07565b9050919050565b6000614a4682614a29565b9050919050565b614a5681614a3b565b82525050565b6000602082019050614a716000830184614a4d565b92915050565b614a8081614951565b82525050565b6000602082019050614a9b6000830184614a77565b92915050565b600060208284031215614ab757614ab66148ee565b5b6000614ac584828501614972565b91505092915050565b600080600060608486031215614ae757614ae66148ee565b5b6000614af58682870161493c565b9350506020614b068682870161493c565b9250506040614b1786828701614972565b9150509250925092565b614b2a81614913565b82525050565b6000602082019050614b456000830184614b21565b92915050565b600060ff82169050919050565b614b6181614b4b565b82525050565b6000602082019050614b7c6000830184614b58565b92915050565b600060208284031215614b9857614b976148ee565b5b6000614ba68482850161493c565b91505092915050565b614bb8816149c7565b8114614bc357600080fd5b50565b600081359050614bd581614baf565b92915050565b600080600060608486031215614bf457614bf36148ee565b5b6000614c0286828701614972565b9350506020614c1386828701614972565b9250506040614c2486828701614bc6565b9150509250925092565b60008060408385031215614c4557614c446148ee565b5b6000614c538582860161493c565b9250506020614c648582860161493c565b9150509250929050565b60008060408385031215614c8557614c846148ee565b5b6000614c938582860161493c565b9250506020614ca485828601614bc6565b9150509250929050565b600080600060608486031215614cc757614cc66148ee565b5b6000614cd586828701614972565b9350506020614ce686828701614972565b9250506040614cf786828701614972565b9150509250925092565b600060208284031215614d1757614d166148ee565b5b6000614d2584828501614bc6565b91505092915050565b600080600080600060a08688031215614d4a57614d496148ee565b5b6000614d5888828901614972565b9550506020614d6988828901614972565b9450506040614d7a88828901614972565b9350506060614d8b88828901614972565b9250506080614d9c88828901614972565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614df057607f821691505b602082108103614e0357614e02614da9565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614e3f602083614847565b9150614e4a82614e09565b602082019050919050565b60006020820190508181036000830152614e6e81614e32565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614eaf82614951565b9150614eba83614951565b9250828201905080821115614ed257614ed1614e75565b5b92915050565b6000614ee382614951565b9150614eee83614951565b9250828202614efc81614951565b91508282048414831517614f1357614f12614e75565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f5482614951565b9150614f5f83614951565b925082614f6f57614f6e614f1a565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20312e30250000000000000000000000000000000000602082015250565b6000614fd6602f83614847565b9150614fe182614f7a565b604082019050919050565b6000602082019050818103600083015261500581614fc9565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000615068603383614847565b91506150738261500c565b604082019050919050565b600060208201905081810360008301526150978161505b565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b60006150fa603083614847565b91506151058261509e565b604082019050919050565b60006020820190508181036000830152615129816150ed565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000615166601d83614847565b915061517182615130565b602082019050919050565b6000602082019050818103600083015261519581615159565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006151f8603983614847565b91506152038261519c565b604082019050919050565b60006020820190508181036000830152615227816151eb565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f312e302500000000000000000000000000000000000000000000000000000000602082015250565b600061528a602483614847565b91506152958261522e565b604082019050919050565b600060208201905081810360008301526152b98161527d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061531c603583614847565b9150615327826152c0565b604082019050919050565b6000602082019050818103600083015261534b8161530f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006153ae603483614847565b91506153b982615352565b604082019050919050565b600060208201905081810360008301526153dd816153a1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615440602683614847565b915061544b826153e4565b604082019050919050565b6000602082019050818103600083015261546f81615433565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b60006154ac602083614847565b91506154b782615476565b602082019050919050565b600060208201905081810360008301526154db8161549f565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b600061553e602a83614847565b9150615549826154e2565b604082019050919050565b6000602082019050818103600083015261556d81615531565b9050919050565b6000815190506155838161495b565b92915050565b60006020828403121561559f5761559e6148ee565b5b60006155ad84828501615574565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006155ec601b83614847565b91506155f7826155b6565b602082019050919050565b6000602082019050818103600083015261561b816155df565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061567e602483614847565b915061568982615622565b604082019050919050565b600060208201905081810360008301526156ad81615671565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615710602283614847565b915061571b826156b4565b604082019050919050565b6000602082019050818103600083015261573f81615703565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006157a2602583614847565b91506157ad82615746565b604082019050919050565b600060208201905081810360008301526157d181615795565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615834602383614847565b915061583f826157d8565b604082019050919050565b6000602082019050818103600083015261586381615827565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006158a0601683614847565b91506158ab8261586a565b602082019050919050565b600060208201905081810360008301526158cf81615893565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615958604983614847565b9150615963826158d6565b606082019050919050565b600060208201905081810360008301526159878161594b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006159ea603583614847565b91506159f58261598e565b604082019050919050565b60006020820190508181036000830152615a19816159dd565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615a56601383614847565b9150615a6182615a20565b602082019050919050565b60006020820190508181036000830152615a8581615a49565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615ae8603683614847565b9150615af382615a8c565b604082019050919050565b60006020820190508181036000830152615b1781615adb565b9050919050565b6000615b2982614951565b9150615b3483614951565b9250828203905081811115615b4c57615b4b614e75565b5b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615bae602183614847565b9150615bb982615b52565b604082019050919050565b60006020820190508181036000830152615bdd81615ba1565b9050919050565b600081905092915050565b50565b6000615bff600083615be4565b9150615c0a82615bef565b600082019050919050565b6000615c2082615bf2565b9150819050919050565b6000606082019050615c3f6000830186614a77565b615c4c6020830185614a77565b615c596040830184614a77565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615cce81614925565b92915050565b600060208284031215615cea57615ce96148ee565b5b6000615cf884828501615cbf565b91505092915050565b6000819050919050565b6000615d26615d21615d1c84615d01565b6149fd565b614951565b9050919050565b615d3681615d0b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d7181614913565b82525050565b6000615d838383615d68565b60208301905092915050565b6000602082019050919050565b6000615da782615d3c565b615db18185615d47565b9350615dbc83615d58565b8060005b83811015615ded578151615dd48882615d77565b9750615ddf83615d8f565b925050600181019050615dc0565b5085935050505092915050565b600060a082019050615e0f6000830188614a77565b615e1c6020830187615d2d565b8181036040830152615e2e8186615d9c565b9050615e3d6060830185614b21565b615e4a6080830184614a77565b9695505050505050565b600060c082019050615e696000830189614b21565b615e766020830188614a77565b615e836040830187615d2d565b615e906060830186615d2d565b615e9d6080830185614b21565b615eaa60a0830184614a77565b979650505050505050565b600080600060608486031215615ece57615ecd6148ee565b5b6000615edc86828701615574565b9350506020615eed86828701615574565b9250506040615efe86828701615574565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201c6f457eb52ad1becb5621c827fc441f8b82ba98f3ce6a046bb27cda0eb8e12864736f6c63430008120033
Deployed Bytecode Sourcemap
34167:21196:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12265:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14439:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42095:406;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34249:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13388:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39645:188;;;;;;;;;;;;;:::i;:::-;;43302:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15091:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34352:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34728:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13229:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15856:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41679:408;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34307:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46040:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35598:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13560:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26767:148;;;;;;;;;;;;;:::i;:::-;;53144:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45718:314;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40278:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43775:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44126:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26123:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44016:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12485:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45266:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16578:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13901:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41262:408;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36391:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35003:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45075:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43548:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34555:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42912:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35453:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14140:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34597:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42707:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40626:406;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27071:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40000:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34637:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;54374:986;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44504:556;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12265:100;12319:13;12352:5;12345:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12265:100;:::o;14439:169::-;14522:4;14539:39;14548:12;:10;:12::i;:::-;14562:7;14571:6;14539:8;:39::i;:::-;14596:4;14589:11;;14439:169;;;;:::o;42095:406::-;42145:4;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;42180:1:::1;42161:16;:20;;;;42211:1;42192:16;:20;;;;42236:1;42223:10;:14;;;;42302:10;;42283:16;;42264;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;42248:13;:64;;;;42343:1;42325:15;:19;;;;42373:1;42355:15;:19;;;;42397:1;42385:9;:13;;;;42460:9;;42442:15;;42424;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;42409:12;:60;;;;42489:4;42482:11;;42095:406:::0;:::o;34249:51::-;;;:::o;13388:108::-;13449:7;13476:12;;13469:19;;13388:108;:::o;39645:188::-;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39713:4:::1;39697:13;;:20;;;;;;;;;;;;;;;;;;39742:4;39728:11;;:18;;;;;;;;;;;;;;;;;;39774:15;39757:14;:32;;;;39813:12;39800:10;:25;;;;39645:188::o:0;43302:237::-;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43422:6:::1;43416:4;43411:2;43395:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;43394:34;;;;:::i;:::-;43384:6;:44;;43376:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;43524:6;43514;:17;;;;:::i;:::-;43491:20;:40;;;;43302:237:::0;:::o;15091:355::-;15231:4;15248:36;15258:6;15266:9;15277:6;15248:9;:36::i;:::-;15295:121;15304:6;15312:12;:10;:12::i;:::-;15326:89;15364:6;15326:89;;;;;;;;;;;;;;;;;:11;:19;15338:6;15326:19;;;;;;;;;;;;;;;:33;15346:12;:10;:12::i;:::-;15326:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;15295:8;:121::i;:::-;15434:4;15427:11;;15091:355;;;;;:::o;34352:89::-;34398:42;34352:89;:::o;34728:33::-;;;;;;;;;;;;;:::o;13229:93::-;13287:5;13312:2;13305:9;;13229:93;:::o;15856:218::-;15944:4;15961:83;15970:12;:10;:12::i;:::-;15984:7;15993:50;16032:10;15993:11;:25;16005:12;:10;:12::i;:::-;15993:25;;;;;;;;;;;;;;;:34;16019:7;15993:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;15961:8;:83::i;:::-;16062:4;16055:11;;15856:218;;;;:::o;41679:408::-;41729:4;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;41764:2:::1;41745:16;:21;;;;41796:1;41777:16;:20;;;;41821:1;41808:10;:14;;;;41887:10;;41868:16;;41849;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;41833:13;:64;;;;41928:2;41910:15;:20;;;;41959:1;41941:15;:19;;;;41983:1;41971:9;:13;;;;42046:9;;42028:15;;42010;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;41995:12;:60;;;;42075:4;42068:11;;41679:408:::0;:::o;34307:38::-;;;:::o;46040:125::-;46105:4;46129:19;:28;46149:7;46129:28;;;;;;;;;;;;;;;;;;;;;;;;;46122:35;;46040:125;;;:::o;35598:28::-;;;;:::o;13560:127::-;13634:7;13661:9;:18;13671:7;13661:18;;;;;;;;;;;;;;;;13654:25;;13560:127;;;:::o;26767:148::-;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26874:1:::1;26837:40;;26858:6;;;;;;;;;;;26837:40;;;;;;;;;;;;26905:1;26888:6;;:19;;;;;;;;;;;;;;;;;;26767:148::o:0;53144:447::-;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;53298:3:::1;53275:19;:26;;53267:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;53388:4;53376:8;:16;;:33;;;;;53408:1;53396:8;:13;;53376:33;53368:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;53491:19;53473:15;:37;;;;53540:8;53521:16;:27;;;;53575:8;53559:13;;:24;;;;;;;;;;;;;;;;;;53144:447:::0;;;:::o;45718:314::-;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;45869:15:::1;;;;;;;;;;;45826:59;;45849:18;45826:59;;;;;;;;;;;;45932:9;;;;;;;;;;;45901:41;;45918:12;45901:41;;;;;;;;;;;;45971:18;45953:15;;:36;;;;;;;;;;;;;;;;;;46012:12;46000:9;;:24;;;;;;;;;;;;;;;;;;45718:314:::0;;:::o;40278:120::-;40330:4;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;40363:5:::1;40346:14;;:22;;;;;;;;;;;;;;;;;;40386:4;40379:11;;40278:120:::0;:::o;43775:144::-;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43907:4:::1;43865:31;:39;43897:6;43865:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;43775:144:::0;;:::o;44126:369::-;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;44260:13:::1;44242:15;:31;;;;44302:13;44284:15;:31;;;;44338:7;44326:9;:19;;;;44407:9;;44389:15;;44371;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;44356:12;:60;;;;44451:2;44435:12;;:18;;44427:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;44126:369:::0;;;:::o;26123:79::-;26161:7;26188:6;;;;;;;;;;;26181:13;;26123:79;:::o;44016:101::-;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;44102:7:::1;44088:11;;:21;;;;;;;;;;;;;;;;;;44016:101:::0;:::o;12485:104::-;12541:13;12574:7;12567:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12485:104;:::o;45266:245::-;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;45373:13:::1;45365:21;;:4;:21;;::::0;45357:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;45462:41;45491:4;45497:5;45462:28;:41::i;:::-;45266:245:::0;;:::o;16578:269::-;16671:4;16688:129;16697:12;:10;:12::i;:::-;16711:7;16720:96;16759:15;16720:96;;;;;;;;;;;;;;;;;:11;:25;16732:12;:10;:12::i;:::-;16720:25;;;;;;;;;;;;;;;:34;16746:7;16720:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;16688:8;:129::i;:::-;16835:4;16828:11;;16578:269;;;;:::o;13901:175::-;13987:4;14004:42;14014:12;:10;:12::i;:::-;14028:9;14039:6;14004:9;:42::i;:::-;14064:4;14057:11;;13901:175;;;;:::o;41262:408::-;41312:4;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;41347:2:::1;41328:16;:21;;;;41379:1;41360:16;:20;;;;41404:1;41391:10;:14;;;;41470:10;;41451:16;;41432;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;41416:13;:64;;;;41511:2;41493:15;:20;;;;41542:1;41524:15;:19;;;;41566:1;41554:9;:13;;;;41629:9;;41611:15;;41593;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;41578:12;:60;;;;41658:4;41651:11;;41262:408:::0;:::o;36391:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;35003:33::-;;;;;;;;;;;;;:::o;45075:182::-;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;45191:8:::1;45160:19;:28;45180:7;45160:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;45231:7;45215:34;;;45240:8;45215:34;;;;;;:::i;:::-;;;;;;;;45075:182:::0;;:::o;43548:218::-;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43671:6:::1;43665:4;43660:2;43644:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;43643:34;;;;:::i;:::-;43633:6;:44;;43625:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;43751:6;43741;:17;;;;:::i;:::-;43729:9;:29;;;;43548:218:::0;:::o;34555:35::-;;;;:::o;42912:381::-;42993:4;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43049:6:::1;43045:1;43029:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;43016:9;:39;;43008:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;43164:4;43160:1;43144:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;43131:9;:37;;43123:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;43256:9;43235:18;:30;;;;43282:4;43275:11;;42912:381:::0;;;:::o;35453:27::-;;;;:::o;14140:151::-;14229:7;14256:11;:18;14268:5;14256:18;;;;;;;;;;;;;;;:27;14275:7;14256:27;;;;;;;;;;;;;;;;14249:34;;14140:151;;;;:::o;34597:33::-;;;;:::o;42707:134::-;42767:4;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;42806:5:::1;42783:20;;:28;;;;;;;;;;;;;;;;;;42829:4;42822:11;;42707:134:::0;:::o;40626:406::-;40676:4;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;40711:1:::1;40692:16;:20;;;;40742:1;40723:16;:20;;;;40767:1;40754:10;:14;;;;40833:10;;40814:16;;40795;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;40779:13;:64;;;;40874:1;40856:15;:19;;;;40904:1;40886:15;:19;;;;40928:1;40916:9;:13;;;;40991:9;;40973:15;;40955;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;40940:12;:60;;;;41020:4;41013:11;;40626:406:::0;:::o;27071:244::-;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27180:1:::1;27160:22;;:8;:22;;::::0;27152:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27270:8;27241:38;;27262:6;;;;;;;;;;;27241:38;;;;;;;;;;;;27299:8;27290:6;;:17;;;;;;;;;;;;;;;;;;27071:244:::0;:::o;40000:120::-;40053:4;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;40086:4:::1;40070:13;;:20;;;;;;;;;;;;;;;;;;40108:4;40101:11;;40000:120:::0;:::o;34637:24::-;;;;:::o;54374:986::-;54458:4;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;54523:19:::1;;54500:20;;:42;;;;:::i;:::-;54482:15;:60;54474:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;54610:4;54599:7;:15;;54591:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;54695:15;54672:20;:38;;;;54766:28;54797:4;:14;;;54812:13;54797:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;54766:60;;54877:20;54900:44;54938:5;54900:33;54925:7;54900:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;54877:67;;55061:1;55046:12;:16;55042:109;;;55078:61;55094:13;55117:6;55126:12;55078:15;:61::i;:::-;55042:109;55227:19;55264:13;55227:51;;55289:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;55316:14;;;;;;;;;;55348:4;55341:11;;;;;54374:986:::0;;;:::o;44504:556::-;26346:12;:10;:12::i;:::-;26336:22;;:6;;;;;;;;;;;:22;;;26328:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;44704:13:::1;44685:16;:32;;;;44747:13;44728:16;:32;;;;44784:7;44771:10;:20;;;;44826:22;44802:21;:46;;;;44883:22;44859:21;:46;;;;44970:10;;44951:16;;44932;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;44916:13;:64;;;;45016:2;44999:13;;:19;;44991:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;44504:556:::0;;;;;:::o;21155:182::-;21213:7;21233:9;21249:1;21245;:5;;;;:::i;:::-;21233:17;;21274:1;21269;:6;;21261:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;21328:1;21321:8;;;21155:182;;;;:::o;4867:98::-;4920:7;4947:10;4940:17;;4867:98;:::o;19774:381::-;19927:1;19910:19;;:5;:19;;;19902:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20008:1;19989:21;;:7;:21;;;19981:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20093:6;20063:11;:18;20075:5;20063:18;;;;;;;;;;;;;;;:27;20082:7;20063:27;;;;;;;;;;;;;;;:36;;;;20131:7;20115:32;;20124:5;20115:32;;;20140:6;20115:32;;;;;;:::i;:::-;;;;;;;;19774:381;;;:::o;46174:4239::-;46322:1;46306:18;;:4;:18;;;46298:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46399:1;46385:16;;:2;:16;;;46377:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;46466:1;46456:6;:11;46453:92;;46484:28;46500:4;46506:2;46510:1;46484:15;:28::i;:::-;46527:7;;46453:92;46561:14;;;;;;;;;;;46558:1811;;;46621:7;:5;:7::i;:::-;46613:15;;:4;:15;;;;:49;;;;;46655:7;:5;:7::i;:::-;46649:13;;:2;:13;;;;46613:49;:86;;;;;46697:1;46683:16;;:2;:16;;;;46613:86;:128;;;;;46734:6;46720:21;;:2;:21;;;;46613:128;:158;;;;;46763:8;;;;;;;;;;;46762:9;46613:158;46591:1767;;;46809:13;;;;;;;;;;;46805:148;;46854:19;:25;46874:4;46854:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;46883:19;:23;46903:2;46883:23;;;;;;;;;;;;;;;;;;;;;;;;;46854:52;46846:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;46805:148;47112:20;;;;;;;;;;;47108:423;;;47166:7;:5;:7::i;:::-;47160:13;;:2;:13;;;;:47;;;;;47191:15;47177:30;;:2;:30;;;;47160:47;:79;;;;;47225:13;47211:28;;:2;:28;;;;47160:79;47156:356;;;47317:12;47275:28;:39;47304:9;47275:39;;;;;;;;;;;;;;;;:54;47267:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;47476:12;47434:28;:39;47463:9;47434:39;;;;;;;;;;;;;;;:54;;;;47156:356;47108:423;47584:25;:31;47610:4;47584:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;47620:31;:35;47652:2;47620:35;;;;;;;;;;;;;;;;;;;;;;;;;47619:36;47584:71;47580:763;;;47702:20;;47692:6;:30;;47684:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;47841:9;;47824:13;47834:2;47824:9;:13::i;:::-;47815:6;:22;;;;:::i;:::-;:35;;47807:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;47580:763;;;47953:25;:29;47979:2;47953:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;47987:31;:37;48019:4;47987:37;;;;;;;;;;;;;;;;;;;;;;;;;47986:38;47953:71;47949:394;;;48071:20;;48061:6;:30;;48053:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;47949:394;;;48197:31;:35;48229:2;48197:35;;;;;;;;;;;;;;;;;;;;;;;;;48193:150;;48290:9;;48273:13;48283:2;48273:9;:13::i;:::-;48264:6;:22;;;;:::i;:::-;:35;;48256:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;48193:150;47949:394;47580:763;46591:1767;46558:1811;48377:28;48408:24;48426:4;48408:9;:24::i;:::-;48377:55;;48446:12;48485:18;;48461:20;:42;;48446:57;;48535:7;:35;;;;;48559:11;;;;;;;;;;;48535:35;:61;;;;;48588:8;;;;;;;;;;;48587:9;48535:61;:110;;;;;48614:25;:31;48640:4;48614:31;;;;;;;;;;;;;;;;;;;;;;;;;48613:32;48535:110;:153;;;;;48663:19;:25;48683:4;48663:25;;;;;;;;;;;;;;;;;;;;;;;;;48662:26;48535:153;:194;;;;;48706:19;:23;48726:2;48706:23;;;;;;;;;;;;;;;;;;;;;;;;;48705:24;48535:194;48517:328;;;48767:4;48756:8;;:15;;;;;;;;;;;;;;;;;;48789:10;:8;:10::i;:::-;48828:5;48817:8;;:16;;;;;;;;;;;;;;;;;;48517:328;48862:8;;;;;;;;;;;48861:9;:42;;;;;48874:25;:29;48900:2;48874:29;;;;;;;;;;;;;;;;;;;;;;;;;48861:42;:59;;;;;48907:13;;;;;;;;;;;48861:59;:114;;;;;48960:15;;48943:14;;:32;;;;:::i;:::-;48924:15;:51;;48861:114;:144;;;;;48980:19;:25;49000:4;48980:25;;;;;;;;;;;;;;;;;;;;;;;;;48979:26;48861:144;48858:204;;;49021:29;:27;:29::i;:::-;;48858:204;49075:12;49091:8;;;;;;;;;;;49090:9;49075:24;;49201:19;:25;49221:4;49201:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;49230:19;:23;49250:2;49230:23;;;;;;;;;;;;;;;;;;;;;;;;;49201:52;49198:99;;;49280:5;49270:15;;49198:99;49310:12;49414:7;49411:948;;;49465:25;:29;49491:2;49465:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;49514:1;49498:13;;:17;49465:50;49461:748;;;49542:34;49572:3;49542:25;49553:13;;49542:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;49535:41;;49643:13;;49624:16;;49617:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;49595:18;;:61;;;;;;;:::i;:::-;;;;;;;;49711:13;;49698:10;;49691:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;49675:12;;:49;;;;;;;:::i;:::-;;;;;;;;49791:13;;49772:16;;49765:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;49743:18;;:61;;;;;;;:::i;:::-;;;;;;;;49461:748;;;49865:25;:31;49891:4;49865:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;49915:1;49900:12;;:16;49865:51;49862:347;;;49941:33;49970:3;49941:24;49952:12;;49941:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;49934:40;;50037:12;;50019:15;;50012:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;49990:18;;:59;;;;;;;:::i;:::-;;;;;;;;50103:12;;50091:9;;50084:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;50068:12;;:47;;;;;;;:::i;:::-;;;;;;;;50181:12;;50163:15;;50156:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;50134:18;;:59;;;;;;;:::i;:::-;;;;;;;;49862:347;49461:748;50236:1;50229:4;:8;50226:93;;;50261:42;50277:4;50291;50298;50261:15;:42::i;:::-;50226:93;50343:4;50333:14;;;;;:::i;:::-;;;49411:948;50372:33;50388:4;50394:2;50398:6;50372:15;:33::i;:::-;46287:4126;;;;46174:4239;;;;:::o;22061:193::-;22147:7;22180:1;22175;:6;;22183:12;22167:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;22207:9;22223:1;22219;:5;;;;:::i;:::-;22207:17;;22245:1;22238:8;;;22061:193;;;;;:::o;45520:189::-;45637:5;45603:25;:31;45629:4;45603:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;45695:5;45661:40;;45689:4;45661:40;;;;;;;;;;;;45520:189;;:::o;22514:473::-;22572:7;22822:1;22817;:6;22813:47;;22847:1;22840:8;;;;22813:47;22873:9;22889:1;22885;:5;;;;:::i;:::-;22873:17;;22918:1;22913;22909;:5;;;;:::i;:::-;:10;22901:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;22978:1;22971:8;;;22514:473;;;;;:::o;23464:132::-;23522:7;23549:39;23553:1;23556;23549:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;23542:46;;23464:132;;;;:::o;17338:575::-;17496:1;17478:20;;:6;:20;;;17470:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;17580:1;17559:23;;:9;:23;;;17551:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17636:47;17657:6;17665:9;17676:6;17636:20;:47::i;:::-;17717:71;17739:6;17717:71;;;;;;;;;;;;;;;;;:9;:17;17727:6;17717:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;17697:9;:17;17707:6;17697:17;;;;;;;;;;;;;;;:91;;;;17822:32;17847:6;17822:9;:20;17832:9;17822:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;17799:9;:20;17809:9;17799:20;;;;;;;;;;;;;;;:55;;;;17887:9;17870:35;;17879:6;17870:35;;;17898:6;17870:35;;;;;;:::i;:::-;;;;;;;;17338:575;;;:::o;51558:1577::-;51597:23;51623:24;51641:4;51623:9;:24::i;:::-;51597:50;;51658:25;51728:12;;51707:18;;51686;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;51658:82;;51751:12;51799:1;51780:15;:20;:46;;;;51825:1;51804:17;:22;51780:46;51777:60;;;51829:7;;;;;51777:60;51892:2;51871:18;;:23;;;;:::i;:::-;51853:15;:41;51850:111;;;51947:2;51926:18;;:23;;;;:::i;:::-;51908:41;;51850:111;52023:23;52108:1;52088:17;52067:18;;52049:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;52023:86;;52120:26;52149:36;52169:15;52149;:19;;:36;;;;:::i;:::-;52120:65;;52199:25;52227:21;52199:49;;52262:36;52279:18;52262:16;:36::i;:::-;52313:18;52334:44;52360:17;52334:21;:25;;:44;;;;:::i;:::-;52313:65;;52392:23;52418:57;52457:17;52418:34;52433:18;;52418:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;52392:83;;52486:17;52506:51;52539:17;52506:28;52521:12;;52506:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;52486:71;;52574:23;52631:9;52613:15;52600:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;52574:66;;52678:1;52657:18;:22;;;;52711:1;52690:18;:22;;;;52738:1;52723:12;:16;;;;52774:9;;;;;;;;;;;52766:23;;52797:9;52766:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52753:58;;;;;52846:1;52828:15;:19;:42;;;;;52869:1;52851:15;:19;52828:42;52825:210;;;52886:46;52899:15;52916;52886:12;:46::i;:::-;52952:71;52967:18;52987:15;53004:18;;52952:71;;;;;;;;:::i;:::-;;;;;;;;52825:210;53072:15;;;;;;;;;;;53064:29;;53101:21;53064:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53051:76;;;;;51586:1549;;;;;;;;;;51558:1577;:::o;53600:765::-;53657:4;53693:15;53676:14;:32;;;;53764:28;53795:4;:14;;;53810:13;53795:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;53764:60;;53875:20;53898:53;53945:5;53898:42;53923:16;;53898:20;:24;;:42;;;;:::i;:::-;:46;;:53;;;;:::i;:::-;53875:76;;54068:1;54053:12;:16;54049:109;;;54085:61;54101:13;54124:6;54133:12;54085:15;:61::i;:::-;54049:109;54234:19;54271:13;54234:51;;54296:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54323:12;;;;;;;;;;54353:4;54346:11;;;;;53600:765;:::o;24093:279::-;24179:7;24211:1;24207;:5;24214:12;24199:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;24238:9;24254:1;24250;:5;;;;:::i;:::-;24238:17;;24363:1;24356:8;;;24093:279;;;;;:::o;20759:125::-;;;;:::o;21621:136::-;21679:7;21706:43;21710:1;21713;21706:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;21699:50;;21621:136;;;;:::o;50422:597::-;50551:21;50589:1;50575:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50551:40;;50620:4;50602;50607:1;50602:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;50646:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;50636:4;50641:1;50636:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;50682:62;50699:4;50714:15;50732:11;50682:8;:62::i;:::-;50784:15;:66;;;50865:11;50891:1;50935:4;50962;50982:15;50784:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50477:542;50422:597;:::o;51031:518::-;51179:62;51196:4;51211:15;51229:11;51179:8;:62::i;:::-;51285:15;:31;;;51324:9;51357:4;51377:11;51403:1;51446;34398:42;51515:15;51285:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;51031:518;;:::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:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:329::-;4835:6;4884:2;4872:9;4863:7;4859:23;4855:32;4852:119;;;4890:79;;:::i;:::-;4852:119;5010:1;5035:53;5080:7;5071:6;5060:9;5056:22;5035:53;:::i;:::-;5025:63;;4981:117;4776:329;;;;:::o;5111:619::-;5188:6;5196;5204;5253:2;5241:9;5232:7;5228:23;5224:32;5221:119;;;5259:79;;:::i;:::-;5221:119;5379:1;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5350:117;5506:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5477:118;5634:2;5660:53;5705:7;5696:6;5685:9;5681:22;5660:53;:::i;:::-;5650:63;;5605:118;5111:619;;;;;:::o;5736:118::-;5823:24;5841:5;5823:24;:::i;:::-;5818:3;5811:37;5736:118;;:::o;5860:222::-;5953:4;5991:2;5980:9;5976:18;5968:26;;6004:71;6072:1;6061:9;6057:17;6048:6;6004:71;:::i;:::-;5860:222;;;;:::o;6088:86::-;6123:7;6163:4;6156:5;6152:16;6141:27;;6088:86;;;:::o;6180:112::-;6263:22;6279:5;6263:22;:::i;:::-;6258:3;6251:35;6180:112;;:::o;6298:214::-;6387:4;6425:2;6414:9;6410:18;6402:26;;6438:67;6502:1;6491:9;6487:17;6478:6;6438:67;:::i;:::-;6298:214;;;;:::o;6518:329::-;6577:6;6626:2;6614:9;6605:7;6601:23;6597:32;6594:119;;;6632:79;;:::i;:::-;6594:119;6752:1;6777:53;6822:7;6813:6;6802:9;6798:22;6777:53;:::i;:::-;6767:63;;6723:117;6518:329;;;;:::o;6853:116::-;6923:21;6938:5;6923:21;:::i;:::-;6916:5;6913:32;6903:60;;6959:1;6956;6949:12;6903:60;6853:116;:::o;6975:133::-;7018:5;7056:6;7043:20;7034:29;;7072:30;7096:5;7072:30;:::i;:::-;6975:133;;;;:::o;7114:613::-;7188:6;7196;7204;7253:2;7241:9;7232:7;7228:23;7224:32;7221:119;;;7259:79;;:::i;:::-;7221:119;7379:1;7404:53;7449:7;7440:6;7429:9;7425:22;7404:53;:::i;:::-;7394:63;;7350:117;7506:2;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7477:118;7634:2;7660:50;7702:7;7693:6;7682:9;7678:22;7660:50;:::i;:::-;7650:60;;7605:115;7114:613;;;;;:::o;7733:474::-;7801:6;7809;7858:2;7846:9;7837:7;7833:23;7829:32;7826:119;;;7864:79;;:::i;:::-;7826:119;7984:1;8009:53;8054:7;8045:6;8034:9;8030:22;8009:53;:::i;:::-;7999:63;;7955:117;8111:2;8137:53;8182:7;8173:6;8162:9;8158:22;8137:53;:::i;:::-;8127:63;;8082:118;7733:474;;;;;:::o;8213:468::-;8278:6;8286;8335:2;8323:9;8314:7;8310:23;8306:32;8303:119;;;8341:79;;:::i;:::-;8303:119;8461:1;8486:53;8531:7;8522:6;8511:9;8507:22;8486:53;:::i;:::-;8476:63;;8432:117;8588:2;8614:50;8656:7;8647:6;8636:9;8632:22;8614:50;:::i;:::-;8604:60;;8559:115;8213:468;;;;;:::o;8687:619::-;8764:6;8772;8780;8829:2;8817:9;8808:7;8804:23;8800:32;8797:119;;;8835:79;;:::i;:::-;8797:119;8955:1;8980:53;9025:7;9016:6;9005:9;9001:22;8980:53;:::i;:::-;8970:63;;8926:117;9082:2;9108:53;9153:7;9144:6;9133:9;9129:22;9108:53;:::i;:::-;9098:63;;9053:118;9210:2;9236:53;9281:7;9272:6;9261:9;9257:22;9236:53;:::i;:::-;9226:63;;9181:118;8687:619;;;;;:::o;9312:323::-;9368:6;9417:2;9405:9;9396:7;9392:23;9388:32;9385:119;;;9423:79;;:::i;:::-;9385:119;9543:1;9568:50;9610:7;9601:6;9590:9;9586:22;9568:50;:::i;:::-;9558:60;;9514:114;9312:323;;;;:::o;9641:911::-;9736:6;9744;9752;9760;9768;9817:3;9805:9;9796:7;9792:23;9788:33;9785:120;;;9824:79;;:::i;:::-;9785:120;9944:1;9969:53;10014:7;10005:6;9994:9;9990:22;9969:53;:::i;:::-;9959:63;;9915:117;10071:2;10097:53;10142:7;10133:6;10122:9;10118:22;10097:53;:::i;:::-;10087:63;;10042:118;10199:2;10225:53;10270:7;10261:6;10250:9;10246:22;10225:53;:::i;:::-;10215:63;;10170:118;10327:2;10353:53;10398:7;10389:6;10378:9;10374:22;10353:53;:::i;:::-;10343:63;;10298:118;10455:3;10482:53;10527:7;10518:6;10507:9;10503:22;10482:53;:::i;:::-;10472:63;;10426:119;9641:911;;;;;;;;:::o;10558:180::-;10606:77;10603:1;10596:88;10703:4;10700:1;10693:15;10727:4;10724:1;10717:15;10744:320;10788:6;10825:1;10819:4;10815:12;10805:22;;10872:1;10866:4;10862:12;10893:18;10883:81;;10949:4;10941:6;10937:17;10927:27;;10883:81;11011:2;11003:6;11000:14;10980:18;10977:38;10974:84;;11030:18;;:::i;:::-;10974:84;10795:269;10744:320;;;:::o;11070:182::-;11210:34;11206:1;11198:6;11194:14;11187:58;11070:182;:::o;11258:366::-;11400:3;11421:67;11485:2;11480:3;11421:67;:::i;:::-;11414:74;;11497:93;11586:3;11497:93;:::i;:::-;11615:2;11610:3;11606:12;11599:19;;11258:366;;;:::o;11630:419::-;11796:4;11834:2;11823:9;11819:18;11811:26;;11883:9;11877:4;11873:20;11869:1;11858:9;11854:17;11847:47;11911:131;12037:4;11911:131;:::i;:::-;11903:139;;11630:419;;;:::o;12055:180::-;12103:77;12100:1;12093:88;12200:4;12197:1;12190:15;12224:4;12221:1;12214:15;12241:191;12281:3;12300:20;12318:1;12300:20;:::i;:::-;12295:25;;12334:20;12352:1;12334:20;:::i;:::-;12329:25;;12377:1;12374;12370:9;12363:16;;12398:3;12395:1;12392:10;12389:36;;;12405:18;;:::i;:::-;12389:36;12241:191;;;;:::o;12438:410::-;12478:7;12501:20;12519:1;12501:20;:::i;:::-;12496:25;;12535:20;12553:1;12535:20;:::i;:::-;12530:25;;12590:1;12587;12583:9;12612:30;12630:11;12612:30;:::i;:::-;12601:41;;12791:1;12782:7;12778:15;12775:1;12772:22;12752:1;12745:9;12725:83;12702:139;;12821:18;;:::i;:::-;12702:139;12486:362;12438:410;;;;:::o;12854:180::-;12902:77;12899:1;12892:88;12999:4;12996:1;12989:15;13023:4;13020:1;13013:15;13040:185;13080:1;13097:20;13115:1;13097:20;:::i;:::-;13092:25;;13131:20;13149:1;13131:20;:::i;:::-;13126:25;;13170:1;13160:35;;13175:18;;:::i;:::-;13160:35;13217:1;13214;13210:9;13205:14;;13040:185;;;;:::o;13231:234::-;13371:34;13367:1;13359:6;13355:14;13348:58;13440:17;13435:2;13427:6;13423:15;13416:42;13231:234;:::o;13471:366::-;13613:3;13634:67;13698:2;13693:3;13634:67;:::i;:::-;13627:74;;13710:93;13799:3;13710:93;:::i;:::-;13828:2;13823:3;13819:12;13812:19;;13471:366;;;:::o;13843:419::-;14009:4;14047:2;14036:9;14032:18;14024:26;;14096:9;14090:4;14086:20;14082:1;14071:9;14067:17;14060:47;14124:131;14250:4;14124:131;:::i;:::-;14116:139;;13843:419;;;:::o;14268:238::-;14408:34;14404:1;14396:6;14392:14;14385:58;14477:21;14472:2;14464:6;14460:15;14453:46;14268:238;:::o;14512:366::-;14654:3;14675:67;14739:2;14734:3;14675:67;:::i;:::-;14668:74;;14751:93;14840:3;14751:93;:::i;:::-;14869:2;14864:3;14860:12;14853:19;;14512:366;;;:::o;14884:419::-;15050:4;15088:2;15077:9;15073:18;15065:26;;15137:9;15131:4;15127:20;15123:1;15112:9;15108:17;15101:47;15165:131;15291:4;15165:131;:::i;:::-;15157:139;;14884:419;;;:::o;15309:235::-;15449:34;15445:1;15437:6;15433:14;15426:58;15518:18;15513:2;15505:6;15501:15;15494:43;15309:235;:::o;15550:366::-;15692:3;15713:67;15777:2;15772:3;15713:67;:::i;:::-;15706:74;;15789:93;15878:3;15789:93;:::i;:::-;15907:2;15902:3;15898:12;15891:19;;15550:366;;;:::o;15922:419::-;16088:4;16126:2;16115:9;16111:18;16103:26;;16175:9;16169:4;16165:20;16161:1;16150:9;16146:17;16139:47;16203:131;16329:4;16203:131;:::i;:::-;16195:139;;15922:419;;;:::o;16347:179::-;16487:31;16483:1;16475:6;16471:14;16464:55;16347:179;:::o;16532:366::-;16674:3;16695:67;16759:2;16754:3;16695:67;:::i;:::-;16688:74;;16771:93;16860:3;16771:93;:::i;:::-;16889:2;16884:3;16880:12;16873:19;;16532:366;;;:::o;16904:419::-;17070:4;17108:2;17097:9;17093:18;17085:26;;17157:9;17151:4;17147:20;17143:1;17132:9;17128:17;17121:47;17185:131;17311:4;17185:131;:::i;:::-;17177:139;;16904:419;;;:::o;17329:244::-;17469:34;17465:1;17457:6;17453:14;17446:58;17538:27;17533:2;17525:6;17521:15;17514:52;17329:244;:::o;17579:366::-;17721:3;17742:67;17806:2;17801:3;17742:67;:::i;:::-;17735:74;;17818:93;17907:3;17818:93;:::i;:::-;17936:2;17931:3;17927:12;17920:19;;17579:366;;;:::o;17951:419::-;18117:4;18155:2;18144:9;18140:18;18132:26;;18204:9;18198:4;18194:20;18190:1;18179:9;18175:17;18168:47;18232:131;18358:4;18232:131;:::i;:::-;18224:139;;17951:419;;;:::o;18376:223::-;18516:34;18512:1;18504:6;18500:14;18493:58;18585:6;18580:2;18572:6;18568:15;18561:31;18376:223;:::o;18605:366::-;18747:3;18768:67;18832:2;18827:3;18768:67;:::i;:::-;18761:74;;18844:93;18933:3;18844:93;:::i;:::-;18962:2;18957:3;18953:12;18946:19;;18605:366;;;:::o;18977:419::-;19143:4;19181:2;19170:9;19166:18;19158:26;;19230:9;19224:4;19220:20;19216:1;19205:9;19201:17;19194:47;19258:131;19384:4;19258:131;:::i;:::-;19250:139;;18977:419;;;:::o;19402:240::-;19542:34;19538:1;19530:6;19526:14;19519:58;19611:23;19606:2;19598:6;19594:15;19587:48;19402:240;:::o;19648:366::-;19790:3;19811:67;19875:2;19870:3;19811:67;:::i;:::-;19804:74;;19887:93;19976:3;19887:93;:::i;:::-;20005:2;20000:3;19996:12;19989:19;;19648:366;;;:::o;20020:419::-;20186:4;20224:2;20213:9;20209:18;20201:26;;20273:9;20267:4;20263:20;20259:1;20248:9;20244:17;20237:47;20301:131;20427:4;20301:131;:::i;:::-;20293:139;;20020:419;;;:::o;20445:239::-;20585:34;20581:1;20573:6;20569:14;20562:58;20654:22;20649:2;20641:6;20637:15;20630:47;20445:239;:::o;20690:366::-;20832:3;20853:67;20917:2;20912:3;20853:67;:::i;:::-;20846:74;;20929:93;21018:3;20929:93;:::i;:::-;21047:2;21042:3;21038:12;21031:19;;20690:366;;;:::o;21062:419::-;21228:4;21266:2;21255:9;21251:18;21243:26;;21315:9;21309:4;21305:20;21301:1;21290:9;21286:17;21279:47;21343:131;21469:4;21343:131;:::i;:::-;21335:139;;21062:419;;;:::o;21487:225::-;21627:34;21623:1;21615:6;21611:14;21604:58;21696:8;21691:2;21683:6;21679:15;21672:33;21487:225;:::o;21718:366::-;21860:3;21881:67;21945:2;21940:3;21881:67;:::i;:::-;21874:74;;21957:93;22046:3;21957:93;:::i;:::-;22075:2;22070:3;22066:12;22059:19;;21718:366;;;:::o;22090:419::-;22256:4;22294:2;22283:9;22279:18;22271:26;;22343:9;22337:4;22333:20;22329:1;22318:9;22314:17;22307:47;22371:131;22497:4;22371:131;:::i;:::-;22363:139;;22090:419;;;:::o;22515:182::-;22655:34;22651:1;22643:6;22639:14;22632:58;22515:182;:::o;22703:366::-;22845:3;22866:67;22930:2;22925:3;22866:67;:::i;:::-;22859:74;;22942:93;23031:3;22942:93;:::i;:::-;23060:2;23055:3;23051:12;23044:19;;22703:366;;;:::o;23075:419::-;23241:4;23279:2;23268:9;23264:18;23256:26;;23328:9;23322:4;23318:20;23314:1;23303:9;23299:17;23292:47;23356:131;23482:4;23356:131;:::i;:::-;23348:139;;23075:419;;;:::o;23500:229::-;23640:34;23636:1;23628:6;23624:14;23617:58;23709:12;23704:2;23696:6;23692:15;23685:37;23500:229;:::o;23735:366::-;23877:3;23898:67;23962:2;23957:3;23898:67;:::i;:::-;23891:74;;23974:93;24063:3;23974:93;:::i;:::-;24092:2;24087:3;24083:12;24076:19;;23735:366;;;:::o;24107:419::-;24273:4;24311:2;24300:9;24296:18;24288:26;;24360:9;24354:4;24350:20;24346:1;24335:9;24331:17;24324:47;24388:131;24514:4;24388:131;:::i;:::-;24380:139;;24107:419;;;:::o;24532:143::-;24589:5;24620:6;24614:13;24605:22;;24636:33;24663:5;24636:33;:::i;:::-;24532:143;;;;:::o;24681:351::-;24751:6;24800:2;24788:9;24779:7;24775:23;24771:32;24768:119;;;24806:79;;:::i;:::-;24768:119;24926:1;24951:64;25007:7;24998:6;24987:9;24983:22;24951:64;:::i;:::-;24941:74;;24897:128;24681:351;;;;:::o;25038:177::-;25178:29;25174:1;25166:6;25162:14;25155:53;25038:177;:::o;25221:366::-;25363:3;25384:67;25448:2;25443:3;25384:67;:::i;:::-;25377:74;;25460:93;25549:3;25460:93;:::i;:::-;25578:2;25573:3;25569:12;25562:19;;25221:366;;;:::o;25593:419::-;25759:4;25797:2;25786:9;25782:18;25774:26;;25846:9;25840:4;25836:20;25832:1;25821:9;25817:17;25810:47;25874:131;26000:4;25874:131;:::i;:::-;25866:139;;25593:419;;;:::o;26018:223::-;26158:34;26154:1;26146:6;26142:14;26135:58;26227:6;26222:2;26214:6;26210:15;26203:31;26018:223;:::o;26247:366::-;26389:3;26410:67;26474:2;26469:3;26410:67;:::i;:::-;26403:74;;26486:93;26575:3;26486:93;:::i;:::-;26604:2;26599:3;26595:12;26588:19;;26247:366;;;:::o;26619:419::-;26785:4;26823:2;26812:9;26808:18;26800:26;;26872:9;26866:4;26862:20;26858:1;26847:9;26843:17;26836:47;26900:131;27026:4;26900:131;:::i;:::-;26892:139;;26619:419;;;:::o;27044:221::-;27184:34;27180:1;27172:6;27168:14;27161:58;27253:4;27248:2;27240:6;27236:15;27229:29;27044:221;:::o;27271:366::-;27413:3;27434:67;27498:2;27493:3;27434:67;:::i;:::-;27427:74;;27510:93;27599:3;27510:93;:::i;:::-;27628:2;27623:3;27619:12;27612:19;;27271:366;;;:::o;27643:419::-;27809:4;27847:2;27836:9;27832:18;27824:26;;27896:9;27890:4;27886:20;27882:1;27871:9;27867:17;27860:47;27924:131;28050:4;27924:131;:::i;:::-;27916:139;;27643:419;;;:::o;28068:224::-;28208:34;28204:1;28196:6;28192:14;28185:58;28277:7;28272:2;28264:6;28260:15;28253:32;28068:224;:::o;28298:366::-;28440:3;28461:67;28525:2;28520:3;28461:67;:::i;:::-;28454:74;;28537:93;28626:3;28537:93;:::i;:::-;28655:2;28650:3;28646:12;28639:19;;28298:366;;;:::o;28670:419::-;28836:4;28874:2;28863:9;28859:18;28851:26;;28923:9;28917:4;28913:20;28909:1;28898:9;28894:17;28887:47;28951:131;29077:4;28951:131;:::i;:::-;28943:139;;28670:419;;;:::o;29095:222::-;29235:34;29231:1;29223:6;29219:14;29212:58;29304:5;29299:2;29291:6;29287:15;29280:30;29095:222;:::o;29323:366::-;29465:3;29486:67;29550:2;29545:3;29486:67;:::i;:::-;29479:74;;29562:93;29651:3;29562:93;:::i;:::-;29680:2;29675:3;29671:12;29664:19;;29323:366;;;:::o;29695:419::-;29861:4;29899:2;29888:9;29884:18;29876:26;;29948:9;29942:4;29938:20;29934:1;29923:9;29919:17;29912:47;29976:131;30102:4;29976:131;:::i;:::-;29968:139;;29695:419;;;:::o;30120:172::-;30260:24;30256:1;30248:6;30244:14;30237:48;30120:172;:::o;30298:366::-;30440:3;30461:67;30525:2;30520:3;30461:67;:::i;:::-;30454:74;;30537:93;30626:3;30537:93;:::i;:::-;30655:2;30650:3;30646:12;30639:19;;30298:366;;;:::o;30670:419::-;30836:4;30874:2;30863:9;30859:18;30851:26;;30923:9;30917:4;30913:20;30909:1;30898:9;30894:17;30887:47;30951:131;31077:4;30951:131;:::i;:::-;30943:139;;30670:419;;;:::o;31095:297::-;31235:34;31231:1;31223:6;31219:14;31212:58;31304:34;31299:2;31291:6;31287:15;31280:59;31373:11;31368:2;31360:6;31356:15;31349:36;31095:297;:::o;31398:366::-;31540:3;31561:67;31625:2;31620:3;31561:67;:::i;:::-;31554:74;;31637:93;31726:3;31637:93;:::i;:::-;31755:2;31750:3;31746:12;31739:19;;31398:366;;;:::o;31770:419::-;31936:4;31974:2;31963:9;31959:18;31951:26;;32023:9;32017:4;32013:20;32009:1;31998:9;31994:17;31987:47;32051:131;32177:4;32051:131;:::i;:::-;32043:139;;31770:419;;;:::o;32195:240::-;32335:34;32331:1;32323:6;32319:14;32312:58;32404:23;32399:2;32391:6;32387:15;32380:48;32195:240;:::o;32441:366::-;32583:3;32604:67;32668:2;32663:3;32604:67;:::i;:::-;32597:74;;32680:93;32769:3;32680:93;:::i;:::-;32798:2;32793:3;32789:12;32782:19;;32441:366;;;:::o;32813:419::-;32979:4;33017:2;33006:9;33002:18;32994:26;;33066:9;33060:4;33056:20;33052:1;33041:9;33037:17;33030:47;33094:131;33220:4;33094:131;:::i;:::-;33086:139;;32813:419;;;:::o;33238:169::-;33378:21;33374:1;33366:6;33362:14;33355:45;33238:169;:::o;33413:366::-;33555:3;33576:67;33640:2;33635:3;33576:67;:::i;:::-;33569:74;;33652:93;33741:3;33652:93;:::i;:::-;33770:2;33765:3;33761:12;33754:19;;33413:366;;;:::o;33785:419::-;33951:4;33989:2;33978:9;33974:18;33966:26;;34038:9;34032:4;34028:20;34024:1;34013:9;34009:17;34002:47;34066:131;34192:4;34066:131;:::i;:::-;34058:139;;33785:419;;;:::o;34210:241::-;34350:34;34346:1;34338:6;34334:14;34327:58;34419:24;34414:2;34406:6;34402:15;34395:49;34210:241;:::o;34457:366::-;34599:3;34620:67;34684:2;34679:3;34620:67;:::i;:::-;34613:74;;34696:93;34785:3;34696:93;:::i;:::-;34814:2;34809:3;34805:12;34798:19;;34457:366;;;:::o;34829:419::-;34995:4;35033:2;35022:9;35018:18;35010:26;;35082:9;35076:4;35072:20;35068:1;35057:9;35053:17;35046:47;35110:131;35236:4;35110:131;:::i;:::-;35102:139;;34829:419;;;:::o;35254:194::-;35294:4;35314:20;35332:1;35314:20;:::i;:::-;35309:25;;35348:20;35366:1;35348:20;:::i;:::-;35343:25;;35392:1;35389;35385:9;35377:17;;35416:1;35410:4;35407:11;35404:37;;;35421:18;;:::i;:::-;35404:37;35254:194;;;;:::o;35454:220::-;35594:34;35590:1;35582:6;35578:14;35571:58;35663:3;35658:2;35650:6;35646:15;35639:28;35454:220;:::o;35680:366::-;35822:3;35843:67;35907:2;35902:3;35843:67;:::i;:::-;35836:74;;35919:93;36008:3;35919:93;:::i;:::-;36037:2;36032:3;36028:12;36021:19;;35680:366;;;:::o;36052:419::-;36218:4;36256:2;36245:9;36241:18;36233:26;;36305:9;36299:4;36295:20;36291:1;36280:9;36276:17;36269:47;36333:131;36459:4;36333:131;:::i;:::-;36325:139;;36052:419;;;:::o;36477:147::-;36578:11;36615:3;36600:18;;36477:147;;;;:::o;36630:114::-;;:::o;36750:398::-;36909:3;36930:83;37011:1;37006:3;36930:83;:::i;:::-;36923:90;;37022:93;37111:3;37022:93;:::i;:::-;37140:1;37135:3;37131:11;37124:18;;36750:398;;;:::o;37154:379::-;37338:3;37360:147;37503:3;37360:147;:::i;:::-;37353:154;;37524:3;37517:10;;37154:379;;;:::o;37539:442::-;37688:4;37726:2;37715:9;37711:18;37703:26;;37739:71;37807:1;37796:9;37792:17;37783:6;37739:71;:::i;:::-;37820:72;37888:2;37877:9;37873:18;37864:6;37820:72;:::i;:::-;37902;37970:2;37959:9;37955:18;37946:6;37902:72;:::i;:::-;37539:442;;;;;;:::o;37987:180::-;38035:77;38032:1;38025:88;38132:4;38129:1;38122:15;38156:4;38153:1;38146:15;38173:180;38221:77;38218:1;38211:88;38318:4;38315:1;38308:15;38342:4;38339:1;38332:15;38359:143;38416:5;38447:6;38441:13;38432:22;;38463:33;38490:5;38463:33;:::i;:::-;38359:143;;;;:::o;38508:351::-;38578:6;38627:2;38615:9;38606:7;38602:23;38598:32;38595:119;;;38633:79;;:::i;:::-;38595:119;38753:1;38778:64;38834:7;38825:6;38814:9;38810:22;38778:64;:::i;:::-;38768:74;;38724:128;38508:351;;;;:::o;38865:85::-;38910:7;38939:5;38928:16;;38865:85;;;:::o;38956:158::-;39014:9;39047:61;39065:42;39074:32;39100:5;39074:32;:::i;:::-;39065:42;:::i;:::-;39047:61;:::i;:::-;39034:74;;38956:158;;;:::o;39120:147::-;39215:45;39254:5;39215:45;:::i;:::-;39210:3;39203:58;39120:147;;:::o;39273:114::-;39340:6;39374:5;39368:12;39358:22;;39273:114;;;:::o;39393:184::-;39492:11;39526:6;39521:3;39514:19;39566:4;39561:3;39557:14;39542:29;;39393:184;;;;:::o;39583:132::-;39650:4;39673:3;39665:11;;39703:4;39698:3;39694:14;39686:22;;39583:132;;;:::o;39721:108::-;39798:24;39816:5;39798:24;:::i;:::-;39793:3;39786:37;39721:108;;:::o;39835:179::-;39904:10;39925:46;39967:3;39959:6;39925:46;:::i;:::-;40003:4;39998:3;39994:14;39980:28;;39835:179;;;;:::o;40020:113::-;40090:4;40122;40117:3;40113:14;40105:22;;40020:113;;;:::o;40169:732::-;40288:3;40317:54;40365:5;40317:54;:::i;:::-;40387:86;40466:6;40461:3;40387:86;:::i;:::-;40380:93;;40497:56;40547:5;40497:56;:::i;:::-;40576:7;40607:1;40592:284;40617:6;40614:1;40611:13;40592:284;;;40693:6;40687:13;40720:63;40779:3;40764:13;40720:63;:::i;:::-;40713:70;;40806:60;40859:6;40806:60;:::i;:::-;40796:70;;40652:224;40639:1;40636;40632:9;40627:14;;40592:284;;;40596:14;40892:3;40885:10;;40293:608;;;40169:732;;;;:::o;40907:831::-;41170:4;41208:3;41197:9;41193:19;41185:27;;41222:71;41290:1;41279:9;41275:17;41266:6;41222:71;:::i;:::-;41303:80;41379:2;41368:9;41364:18;41355:6;41303:80;:::i;:::-;41430:9;41424:4;41420:20;41415:2;41404:9;41400:18;41393:48;41458:108;41561:4;41552:6;41458:108;:::i;:::-;41450:116;;41576:72;41644:2;41633:9;41629:18;41620:6;41576:72;:::i;:::-;41658:73;41726:3;41715:9;41711:19;41702:6;41658:73;:::i;:::-;40907:831;;;;;;;;:::o;41744:807::-;41993:4;42031:3;42020:9;42016:19;42008:27;;42045:71;42113:1;42102:9;42098:17;42089:6;42045:71;:::i;:::-;42126:72;42194:2;42183:9;42179:18;42170:6;42126:72;:::i;:::-;42208:80;42284:2;42273:9;42269:18;42260:6;42208:80;:::i;:::-;42298;42374:2;42363:9;42359:18;42350:6;42298:80;:::i;:::-;42388:73;42456:3;42445:9;42441:19;42432:6;42388:73;:::i;:::-;42471;42539:3;42528:9;42524:19;42515:6;42471:73;:::i;:::-;41744:807;;;;;;;;;:::o;42557:663::-;42645:6;42653;42661;42710:2;42698:9;42689:7;42685:23;42681:32;42678:119;;;42716:79;;:::i;:::-;42678:119;42836:1;42861:64;42917:7;42908:6;42897:9;42893:22;42861:64;:::i;:::-;42851:74;;42807:128;42974:2;43000:64;43056:7;43047:6;43036:9;43032:22;43000:64;:::i;:::-;42990:74;;42945:129;43113:2;43139:64;43195:7;43186:6;43175:9;43171:22;43139:64;:::i;:::-;43129:74;;43084:129;42557:663;;;;;:::o
Swarm Source
ipfs://1c6f457eb52ad1becb5621c827fc441f8b82ba98f3ce6a046bb27cda0eb8e128
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.