Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 119 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 19413973 | 714 days ago | IN | 0 ETH | 0.00364425 | ||||
| Approve | 17005375 | 1052 days ago | IN | 0 ETH | 0.00132711 | ||||
| Approve | 15474433 | 1267 days ago | IN | 0 ETH | 0.00052922 | ||||
| Approve | 15289789 | 1297 days ago | IN | 0 ETH | 0.00102639 | ||||
| Approve | 15268685 | 1300 days ago | IN | 0 ETH | 0.00055718 | ||||
| Approve | 15260524 | 1301 days ago | IN | 0 ETH | 0.00056251 | ||||
| Approve | 15260499 | 1301 days ago | IN | 0 ETH | 0.00064788 | ||||
| Approve | 15259640 | 1301 days ago | IN | 0 ETH | 0.00059584 | ||||
| Approve | 15257672 | 1302 days ago | IN | 0 ETH | 0.0006687 | ||||
| Approve | 15257385 | 1302 days ago | IN | 0 ETH | 0.00150983 | ||||
| Approve | 15256870 | 1302 days ago | IN | 0 ETH | 0.00065886 | ||||
| Approve | 15256162 | 1302 days ago | IN | 0 ETH | 0.00053589 | ||||
| Approve | 15255823 | 1302 days ago | IN | 0 ETH | 0.00090823 | ||||
| Approve | 15254087 | 1302 days ago | IN | 0 ETH | 0.00114141 | ||||
| Approve | 15254031 | 1302 days ago | IN | 0 ETH | 0.00038914 | ||||
| Approve | 15253840 | 1302 days ago | IN | 0 ETH | 0.00041285 | ||||
| Approve | 15253289 | 1302 days ago | IN | 0 ETH | 0.00042084 | ||||
| Approve | 15253238 | 1302 days ago | IN | 0 ETH | 0.00031045 | ||||
| Approve | 15253115 | 1302 days ago | IN | 0 ETH | 0.00022935 | ||||
| Approve | 15253099 | 1302 days ago | IN | 0 ETH | 0.00026969 | ||||
| Approve | 15253092 | 1302 days ago | IN | 0 ETH | 0.00029908 | ||||
| Approve | 15253087 | 1302 days ago | IN | 0 ETH | 0.00019967 | ||||
| Approve | 15253086 | 1302 days ago | IN | 0 ETH | 0.00031919 | ||||
| Approve | 15253083 | 1302 days ago | IN | 0 ETH | 0.00046255 | ||||
| Approve | 15253075 | 1302 days ago | IN | 0 ETH | 0.00188956 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 15474439 | 1267 days ago | 0.00568353 ETH | ||||
| Transfer | 15474439 | 1267 days ago | 0.00070907 ETH | ||||
| Add Liquidity ET... | 15474439 | 1267 days ago | 0.00165815 ETH | ||||
| Transfer | 15474439 | 1267 days ago | 0.00663261 ETH | ||||
| Transfer | 15319814 | 1292 days ago | 0.00595124 ETH | ||||
| Transfer | 15319814 | 1292 days ago | 0.00074248 ETH | ||||
| Add Liquidity ET... | 15319814 | 1292 days ago | 0.00173625 ETH | ||||
| Transfer | 15319814 | 1292 days ago | 0.00694501 ETH | ||||
| Transfer | 15309989 | 1294 days ago | 0.00748545 ETH | ||||
| Transfer | 15309989 | 1294 days ago | 0.00093427 ETH | ||||
| Add Liquidity ET... | 15309989 | 1294 days ago | 0.00218372 ETH | ||||
| Transfer | 15309989 | 1294 days ago | 0.0087349 ETH | ||||
| Transfer | 15265297 | 1301 days ago | 0.0089569 ETH | ||||
| Transfer | 15265297 | 1301 days ago | 0.00111834 ETH | ||||
| Add Liquidity ET... | 15265297 | 1301 days ago | 0.00261285 ETH | ||||
| Transfer | 15265297 | 1301 days ago | 0.01045141 ETH | ||||
| Transfer | 15259677 | 1301 days ago | 0.01146379 ETH | ||||
| Transfer | 15259677 | 1301 days ago | 0.00143205 ETH | ||||
| Add Liquidity ET... | 15259677 | 1301 days ago | 0.00334391 ETH | ||||
| Transfer | 15259677 | 1301 days ago | 0.01337564 ETH | ||||
| Transfer | 15259022 | 1302 days ago | 0.00623225 ETH | ||||
| Transfer | 15259022 | 1302 days ago | 0.00077742 ETH | ||||
| Add Liquidity ET... | 15259022 | 1302 days ago | 0.00181827 ETH | ||||
| Transfer | 15259022 | 1302 days ago | 0.00727309 ETH | ||||
| Transfer | 15257511 | 1302 days ago | 0.00845326 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
HAM
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-07-31
*/
// $HAM - Ham the Chimp
// The first great ape launched into space
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;
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 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 HAM is ERC20, Ownable {
using SafeMath for uint256;
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
bool private swapping;
address private marketingWallet;
address private devWallet;
uint256 public maxTransactionAmount;
uint256 public swapTokensAtAmount;
uint256 public maxWallet;
bool public limitsInEffect = true;
bool public tradingActive = false;
bool public swapEnabled = false;
bool public 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;
// Blacklist Map
mapping (address => bool) private _blacklist;
bool public transferDelayEnabled = true;
uint256 public buyTotalFees;
uint256 public buyMarketingFee;
uint256 public buyLiquidityFee;
uint256 public buyDevFee;
uint256 public sellTotalFees;
uint256 public sellMarketingFee;
uint256 public sellLiquidityFee;
uint256 public sellDevFee;
uint256 public earlySellLiquidityFee;
uint256 public earlySellMarketingFee;
uint256 public earlySellDevFee;
uint256 public tokensForMarketing;
uint256 public tokensForLiquidity;
uint256 public tokensForDev;
// block number of opened trading
uint256 launchedAt;
/******************/
// exclude from fees and max transaction amount
mapping (address => bool) private _isExcludedFromFees;
mapping (address => bool) public _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("Ham the Chimp", "HAM") {
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 = 3;
uint256 _buyLiquidityFee = 1;
uint256 _buyDevFee = 0;
uint256 _sellMarketingFee = 3;
uint256 _sellLiquidityFee = 1;
uint256 _sellDevFee = 0;
uint256 _earlySellLiquidityFee = 1;
uint256 _earlySellMarketingFee = 3;
uint256 _earlySellDevFee = 0;
uint256 totalSupply = 1 * 1e12 * 1e18;
maxTransactionAmount = totalSupply * 30 / 1000; // 3% maxTransactionAmountTxn
maxWallet = totalSupply * 30 / 1000; // 3% 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;
earlySellDevFee = _earlySellDevFee;
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 {
}
// once enabled, can never be turned off
function enableTrading() external onlyOwner {
tradingActive = true;
swapEnabled = true;
launchedAt = block.number;
}
// remove limits after token is stable
function removeLimits() external onlyOwner returns (bool){
limitsInEffect = false;
return true;
}
// disable Transfer delay - cannot be reenabled
function disableTransferDelay() external onlyOwner returns (bool){
transferDelayEnabled = false;
return true;
}
function setEarlySellTax(bool onoff) external onlyOwner {
enableEarlySellTax = onoff;
}
// 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() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%");
maxTransactionAmount = newNum * (10**18);
}
function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
maxWallet = newNum * (10**18);
}
function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
_isExcludedMaxTransactionAmount[updAds] = isEx;
}
// only use to disable contract sales if absolutely necessary (emergency use only)
function updateSwapEnabled(bool enabled) external onlyOwner(){
swapEnabled = enabled;
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function blacklistAccount (address account, bool isBlacklisted) public onlyOwner {
_blacklist[account] = isBlacklisted;
}
function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
_setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
automatedMarketMakerPairs[pair] = value;
emit SetAutomatedMarketMakerPair(pair, value);
}
function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
marketingWallet = newMarketingWallet;
}
function updateDevWallet(address newWallet) external onlyOwner {
emit devWalletUpdated(newWallet, devWallet);
devWallet = newWallet;
}
function isExcludedFromFees(address account) public view returns(bool) {
return _isExcludedFromFees[account];
}
event BoughtEarly(address indexed sniper);
function _transfer(
address from,
address to,
uint256 amount
) internal override {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens");
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");
}
}
}
// anti bot logic
if (block.number <= (launchedAt + 1) &&
to != uniswapV2Pair &&
to != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D)
) {
_blacklist[to] = true;
}
// early sell logic
bool isBuy = from == uniswapV2Pair;
if (!isBuy && enableEarlySellTax) {
if (_holderFirstBuyTimestamp[from] != 0 &&
(_holderFirstBuyTimestamp[from] + (24 hours) >= block.timestamp)) {
sellLiquidityFee = earlySellLiquidityFee;
sellMarketingFee = earlySellMarketingFee;
sellDevFee = earlySellDevFee;
sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
} else {
sellLiquidityFee = 1;
sellMarketingFee = 3;
sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
}
} else {
if (_holderFirstBuyTimestamp[to] == 0) {
_holderFirstBuyTimestamp[to] = block.timestamp;
}
if (!enableEarlySellTax) {
sellLiquidityFee = 1;
sellMarketingFee = 3;
sellDevFee = 0;
sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
}
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= swapTokensAtAmount;
if(
canSwap &&
swapEnabled &&
!swapping &&
!automatedMarketMakerPairs[from] &&
!_isExcludedFromFees[from] &&
!_isExcludedFromFees[to]
) {
swapping = true;
swapBack();
swapping = false;
}
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
address(this),
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}("");
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"blacklistAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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
60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506001600b60036101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff0219169083151502179055503480156200009857600080fd5b506040518060400160405280600d81526020017f48616d20746865204368696d70000000000000000000000000000000000000008152506040518060400160405280600381526020017f48414d000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200011d92919062000bf9565b5080600490805190602001906200013692919062000bf9565b50505060006200014b620006c560201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000216816001620006cd60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029157600080fd5b505afa158015620002a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cc919062000d13565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036a919062000d13565b6040518363ffffffff1660e01b81526004016200038992919062000d56565b602060405180830381600087803b158015620003a457600080fd5b505af1158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df919062000d13565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200042760a0516001620006cd60201b60201c565b6200043c60a0516001620007ca60201b60201c565b60006003905060006001905060008060039050600060019050600080600190506000600390506000806c0c9f2c9cd04674edea4000000090506103e8601e8262000487919062000dbc565b62000493919062000e4c565b6008819055506103e8601e82620004ab919062000dbc565b620004b7919062000e4c565b600a81905550612710600a82620004cf919062000dbc565b620004db919062000e4c565b6009819055508960118190555088601281905550876013819055506013546012546011546200050b919062000e84565b62000517919062000e84565b60108190555086601581905550856016819055508460178190555060175460165460155462000547919062000e84565b62000553919062000e84565b601481905550836018819055508260198190555081601a819055506200057e6200086b60201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005ce6200086b60201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000630620006226200086b60201b60201c565b60016200089560201b60201c565b620006433060016200089560201b60201c565b6200065861dead60016200089560201b60201c565b6200067a6200066c6200086b60201b60201c565b6001620006cd60201b60201c565b6200068d306001620006cd60201b60201c565b620006a261dead6001620006cd60201b60201c565b620006b43382620009e260201b60201c565b505050505050505050505062001115565b600033905090565b620006dd620006c560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200076f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007669062000f42565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008a5620006c560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000937576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092e9062000f42565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009d6919062000f81565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a4c9062000fee565b60405180910390fd5b62000a696000838362000b9160201b60201c565b62000a858160025462000b9660201b620025291790919060201c565b60028190555062000ae3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b9660201b620025291790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b85919062001021565b60405180910390a35050565b505050565b600080828462000ba7919062000e84565b90508381101562000bef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000be6906200108e565b60405180910390fd5b8091505092915050565b82805462000c0790620010df565b90600052602060002090601f01602090048101928262000c2b576000855562000c77565b82601f1062000c4657805160ff191683800117855562000c77565b8280016001018555821562000c77579182015b8281111562000c7657825182559160200191906001019062000c59565b5b50905062000c86919062000c8a565b5090565b5b8082111562000ca557600081600090555060010162000c8b565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cdb8262000cae565b9050919050565b62000ced8162000cce565b811462000cf957600080fd5b50565b60008151905062000d0d8162000ce2565b92915050565b60006020828403121562000d2c5762000d2b62000ca9565b5b600062000d3c8482850162000cfc565b91505092915050565b62000d508162000cce565b82525050565b600060408201905062000d6d600083018562000d45565b62000d7c602083018462000d45565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000dc98262000d83565b915062000dd68362000d83565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e125762000e1162000d8d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e598262000d83565b915062000e668362000d83565b92508262000e795762000e7862000e1d565b5b828204905092915050565b600062000e918262000d83565b915062000e9e8362000d83565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ed65762000ed562000d8d565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f2a60208362000ee1565b915062000f378262000ef2565b602082019050919050565b6000602082019050818103600083015262000f5d8162000f1b565b9050919050565b60008115159050919050565b62000f7b8162000f64565b82525050565b600060208201905062000f98600083018462000f70565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000fd6601f8362000ee1565b915062000fe38262000f9e565b602082019050919050565b60006020820190508181036000830152620010098162000fc7565b9050919050565b6200101b8162000d83565b82525050565b600060208201905062001038600083018462001010565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001076601b8362000ee1565b915062001083826200103e565b602082019050919050565b60006020820190508181036000830152620010a98162001067565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010f857607f821691505b602082108114156200110f576200110e620010b0565b5b50919050565b60805160a0516157f6620011816000396000818161133e01528181611a2001528181612bf5015281816130150152613112015260008181610df601528181612b9d0152818161408e0152818161417e015281816141a501528181614241015261426801526157f66000f3fe6080604052600436106103545760003560e01c806392136913116101c6578063bbc0c742116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610c7b578063f2fde38b14610ca6578063f637434214610ccf578063f8b45b0514610cfa5761035b565b8063dd62ed3e14610be8578063e2f4560514610c25578063e884f26014610c505761035b565b8063c876d0b9116100d1578063c876d0b914610b2a578063c8c8ebe414610b55578063d257b34f14610b80578063d85ba06314610bbd5761035b565b8063bbc0c74214610aad578063c024666814610ad8578063c18bc19514610b015761035b565b8063a265777811610164578063a7fc9e211161013e578063a7fc9e21146109df578063a9059cbb14610a0a578063aacebbe314610a47578063b62496f514610a705761035b565b8063a26577781461094e578063a457c2d714610977578063a4d15b64146109b45761035b565b80639a7a23d6116101a05780639a7a23d6146108a45780639c3b4fdc146108cd5780639fccce32146108f8578063a0d82dc5146109235761035b565b80639213691314610825578063924de9b71461085057806395d89b41146108795761035b565b806339509351116102a057806370a082311161023e5780637571336a116102185780637571336a1461078f5780637bce5a04146107b85780638a8c523c146107e35780638da5cb5b146107fa5761035b565b806370a0823114610710578063715018a61461074d578063751039fc146107645761035b565b80634fbee1931161027a5780634fbee19314610652578063541a43cf1461068f5780636a486a8e146106ba5780636ddd1713146106e55761035b565b806339509351146105bf57806349bd5a5e146105fc5780634a62bb65146106275761035b565b80631a8145bb1161030d57806323b872dd116102e757806323b872dd146105035780632bf3d42d146105405780632d5a5d341461056b578063313ce567146105945761035b565b80631a8145bb146104845780631f3fed8f146104af578063203e727e146104da5761035b565b806306fdde0314610360578063095ea7b31461038b57806310d5de53146103c85780631694505e1461040557806318160ddd146104305780631816467f1461045b5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610d25565b6040516103829190614420565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad91906144db565b610db7565b6040516103bf9190614536565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190614551565b610dd5565b6040516103fc9190614536565b60405180910390f35b34801561041157600080fd5b5061041a610df4565b60405161042791906145dd565b60405180910390f35b34801561043c57600080fd5b50610445610e18565b6040516104529190614607565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d9190614551565b610e22565b005b34801561049057600080fd5b50610499610f79565b6040516104a69190614607565b60405180910390f35b3480156104bb57600080fd5b506104c4610f7f565b6040516104d19190614607565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc9190614622565b610f85565b005b34801561050f57600080fd5b5061052a6004803603810190610525919061464f565b6110af565b6040516105379190614536565b60405180910390f35b34801561054c57600080fd5b50610555611188565b6040516105629190614607565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d91906146ce565b61118e565b005b3480156105a057600080fd5b506105a9611280565b6040516105b6919061472a565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e191906144db565b611289565b6040516105f39190614536565b60405180910390f35b34801561060857600080fd5b5061061161133c565b60405161061e9190614754565b60405180910390f35b34801561063357600080fd5b5061063c611360565b6040516106499190614536565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190614551565b611373565b6040516106869190614536565b60405180910390f35b34801561069b57600080fd5b506106a46113c9565b6040516106b19190614607565b60405180910390f35b3480156106c657600080fd5b506106cf6113cf565b6040516106dc9190614607565b60405180910390f35b3480156106f157600080fd5b506106fa6113d5565b6040516107079190614536565b60405180910390f35b34801561071c57600080fd5b5061073760048036038101906107329190614551565b6113e8565b6040516107449190614607565b60405180910390f35b34801561075957600080fd5b50610762611430565b005b34801561077057600080fd5b50610779611588565b6040516107869190614536565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b191906146ce565b611643565b005b3480156107c457600080fd5b506107cd611735565b6040516107da9190614607565b60405180910390f35b3480156107ef57600080fd5b506107f861173b565b005b34801561080657600080fd5b5061080f611811565b60405161081c9190614754565b60405180910390f35b34801561083157600080fd5b5061083a61183b565b6040516108479190614607565b60405180910390f35b34801561085c57600080fd5b506108776004803603810190610872919061476f565b611841565b005b34801561088557600080fd5b5061088e6118f5565b60405161089b9190614420565b60405180910390f35b3480156108b057600080fd5b506108cb60048036038101906108c691906146ce565b611987565b005b3480156108d957600080fd5b506108e2611abb565b6040516108ef9190614607565b60405180910390f35b34801561090457600080fd5b5061090d611ac1565b60405161091a9190614607565b60405180910390f35b34801561092f57600080fd5b50610938611ac7565b6040516109459190614607565b60405180910390f35b34801561095a57600080fd5b506109756004803603810190610970919061476f565b611acd565b005b34801561098357600080fd5b5061099e600480360381019061099991906144db565b611b81565b6040516109ab9190614536565b60405180910390f35b3480156109c057600080fd5b506109c9611c4e565b6040516109d69190614536565b60405180910390f35b3480156109eb57600080fd5b506109f4611c61565b604051610a019190614607565b60405180910390f35b348015610a1657600080fd5b50610a316004803603810190610a2c91906144db565b611c67565b604051610a3e9190614536565b60405180910390f35b348015610a5357600080fd5b50610a6e6004803603810190610a699190614551565b611c85565b005b348015610a7c57600080fd5b50610a976004803603810190610a929190614551565b611ddc565b604051610aa49190614536565b60405180910390f35b348015610ab957600080fd5b50610ac2611dfc565b604051610acf9190614536565b60405180910390f35b348015610ae457600080fd5b50610aff6004803603810190610afa91906146ce565b611e0f565b005b348015610b0d57600080fd5b50610b286004803603810190610b239190614622565b611f4f565b005b348015610b3657600080fd5b50610b3f612079565b604051610b4c9190614536565b60405180910390f35b348015610b6157600080fd5b50610b6a61208c565b604051610b779190614607565b60405180910390f35b348015610b8c57600080fd5b50610ba76004803603810190610ba29190614622565b612092565b604051610bb49190614536565b60405180910390f35b348015610bc957600080fd5b50610bd2612202565b604051610bdf9190614607565b60405180910390f35b348015610bf457600080fd5b50610c0f6004803603810190610c0a919061479c565b612208565b604051610c1c9190614607565b60405180910390f35b348015610c3157600080fd5b50610c3a61228f565b604051610c479190614607565b60405180910390f35b348015610c5c57600080fd5b50610c65612295565b604051610c729190614536565b60405180910390f35b348015610c8757600080fd5b50610c90612350565b604051610c9d9190614607565b60405180910390f35b348015610cb257600080fd5b50610ccd6004803603810190610cc89190614551565b612356565b005b348015610cdb57600080fd5b50610ce461251d565b604051610cf19190614607565b60405180910390f35b348015610d0657600080fd5b50610d0f612523565b604051610d1c9190614607565b60405180910390f35b606060038054610d349061480b565b80601f0160208091040260200160405190810160405280929190818152602001828054610d609061480b565b8015610dad5780601f10610d8257610100808354040283529160200191610dad565b820191906000526020600020905b815481529060010190602001808311610d9057829003601f168201915b5050505050905090565b6000610dcb610dc4612587565b848461258f565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610e2a612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb090614889565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c5481565b601b5481565b610f8d612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101390614889565b60405180910390fd5b670de0b6b3a76400006103e86001611032610e18565b61103c91906148d8565b6110469190614961565b6110509190614961565b811015611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990614a04565b60405180910390fd5b670de0b6b3a7640000816110a691906148d8565b60088190555050565b60006110bc84848461275a565b61117d846110c8612587565b6111788560405180606001604052806028815260200161577460289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061112e612587565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461385a9092919063ffffffff16565b61258f565b600190509392505050565b60195481565b611196612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c90614889565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b6000611332611296612587565b8461132d85600160006112a7612587565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252990919063ffffffff16565b61258f565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b60145481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611438612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90614889565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611592612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161890614889565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61164b612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d190614889565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b611743612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c990614889565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043601e81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b611849612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cf90614889565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6060600480546119049061480b565b80601f01602080910402602001604051908101604052809291908181526020018280546119309061480b565b801561197d5780601f106119525761010080835404028352916020019161197d565b820191906000526020600020905b81548152906001019060200180831161196057829003601f168201915b5050505050905090565b61198f612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1590614889565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa490614a96565b60405180910390fd5b611ab782826138be565b5050565b60135481565b601d5481565b60175481565b611ad5612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5b90614889565b60405180910390fd5b80600b60036101000a81548160ff02191690831515021790555050565b6000611c44611b8e612587565b84611c3f8560405180606001604052806025815260200161579c6025913960016000611bb8612587565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461385a9092919063ffffffff16565b61258f565b6001905092915050565b600b60039054906101000a900460ff1681565b601a5481565b6000611c7b611c74612587565b848461275a565b6001905092915050565b611c8d612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1390614889565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60216020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611e17612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ea6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9d90614889565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f439190614536565b60405180910390a25050565b611f57612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdd90614889565b60405180910390fd5b670de0b6b3a76400006103e86005611ffc610e18565b61200691906148d8565b6120109190614961565b61201a9190614961565b81101561205c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205390614b28565b60405180910390fd5b670de0b6b3a76400008161207091906148d8565b600a8190555050565b600f60009054906101000a900460ff1681565b60085481565b600061209c612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461212b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212290614889565b60405180910390fd5b620186a06001612139610e18565b61214391906148d8565b61214d9190614961565b82101561218f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218690614bba565b60405180910390fd5b6103e8600561219c610e18565b6121a691906148d8565b6121b09190614961565b8211156121f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e990614c4c565b60405180910390fd5b8160098190555060019050919050565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600061229f612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232590614889565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b60125481565b61235e612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e490614889565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245490614cde565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b600a5481565b60008082846125389190614cfe565b90508381101561257d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257490614da0565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f690614e32565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561266f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266690614ec4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161274d9190614607565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c190614f56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561283a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283190614fe8565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128de5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61291d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129149061507a565b60405180910390fd5b6000811415612937576129328383600061395f565b613855565b600b60009054906101000a900460ff1615612ffa57612954611811565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129c25750612992611811565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129fb5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a35575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a4e5750600560149054906101000a900460ff16155b15612ff957600b60019054906101000a900460ff16612b4857601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b085750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3e906150e6565b60405180910390fd5b5b600f60009054906101000a900460ff1615612d1057612b65611811565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612bec57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c4457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d0f5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc19061519e565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612db35750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e5a57600854811115612dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df490615230565b60405180910390fd5b600a54612e09836113e8565b82612e149190614cfe565b1115612e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4c9061529c565b60405180910390fd5b612ff8565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612efd5750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f4c57600854811115612f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3e9061532e565b60405180910390fd5b612ff7565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ff657600a54612fa9836113e8565b82612fb49190614cfe565b1115612ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fec9061529c565b60405180910390fd5b5b5b5b5b5b6001601e546130099190614cfe565b431115801561306457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130b05750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561310e576001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490508015801561317b5750600b60039054906101000a900460ff165b1561329e576000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415801561321d57504262015180600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321a9190614cfe565b10155b1561326557601854601681905550601954601581905550601a546017819055506017546016546015546132509190614cfe565b61325a9190614cfe565b601481905550613299565b600160168190555060036015819055506017546016546015546132889190614cfe565b6132929190614cfe565b6014819055505b61337c565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561332b5742600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60039054906101000a900460ff1661337b5760016016819055506003601581905550600060178190555060175460165460155461336a9190614cfe565b6133749190614cfe565b6014819055505b5b6000613387306113e8565b9050600060095482101590508080156133ac5750600b60029054906101000a900460ff165b80156133c55750600560149054906101000a900460ff16155b801561341b5750602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134715750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134c75750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561350b576001600560146101000a81548160ff0219169083151502179055506134ef613bf4565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135c15750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135cb57600090505b6000811561384457602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561362e57506000601454115b156136fb5761365b606461364d60145489613edb90919063ffffffff16565b613f5690919063ffffffff16565b90506014546016548261366e91906148d8565b6136789190614961565b601c60008282546136899190614cfe565b92505081905550601454601754826136a191906148d8565b6136ab9190614961565b601d60008282546136bc9190614cfe565b92505081905550601454601554826136d491906148d8565b6136de9190614961565b601b60008282546136ef9190614cfe565b92505081905550613820565b602160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561375657506000601054115b1561381f57613783606461377560105489613edb90919063ffffffff16565b613f5690919063ffffffff16565b90506010546012548261379691906148d8565b6137a09190614961565b601c60008282546137b19190614cfe565b92505081905550601054601354826137c991906148d8565b6137d39190614961565b601d60008282546137e49190614cfe565b92505081905550601054601154826137fc91906148d8565b6138069190614961565b601b60008282546138179190614cfe565b925050819055505b5b60008111156138355761383488308361395f565b5b8086613841919061534e565b95505b61384f88888861395f565b50505050505b505050565b60008383111582906138a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138999190614420565b60405180910390fd5b50600083856138b1919061534e565b9050809150509392505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156139cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139c690614f56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a3690614fe8565b60405180910390fd5b613a4a838383613fa0565b613ab58160405180606001604052806026815260200161574e602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461385a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b48816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613be79190614607565b60405180910390a3505050565b6000613bff306113e8565b90506000601d54601b54601c54613c169190614cfe565b613c209190614cfe565b9050600080831480613c325750600082145b15613c3f57505050613ed9565b6014600954613c4e91906148d8565b831115613c67576014600954613c6491906148d8565b92505b6000600283601c5486613c7a91906148d8565b613c849190614961565b613c8e9190614961565b90506000613ca58286613fa590919063ffffffff16565b90506000479050613cb582613fef565b6000613cca8247613fa590919063ffffffff16565b90506000613cf587613ce7601b5485613edb90919063ffffffff16565b613f5690919063ffffffff16565b90506000613d2088613d12601d5486613edb90919063ffffffff16565b613f5690919063ffffffff16565b90506000818385613d31919061534e565b613d3b919061534e565b90506000601c819055506000601b819055506000601d81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613d9b906153b3565b60006040518083038185875af1925050503d8060008114613dd8576040519150601f19603f3d011682016040523d82523d6000602084013e613ddd565b606091505b505080985050600087118015613df35750600081115b15613e4057613e02878261423b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601c54604051613e37939291906153c8565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613e86906153b3565b60006040518083038185875af1925050503d8060008114613ec3576040519150601f19603f3d011682016040523d82523d6000602084013e613ec8565b606091505b505080985050505050505050505050505b565b600080831415613eee5760009050613f50565b60008284613efc91906148d8565b9050828482613f0b9190614961565b14613f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f4290615471565b60405180910390fd5b809150505b92915050565b6000613f9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614324565b905092915050565b505050565b6000613fe783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061385a565b905092915050565b6000600267ffffffffffffffff81111561400c5761400b615491565b5b60405190808252806020026020018201604052801561403a5781602001602082028036833780820191505090505b5090503081600081518110614052576140516154c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156140f257600080fd5b505afa158015614106573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061412a9190615504565b8160018151811061413e5761413d6154c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141a3307f00000000000000000000000000000000000000000000000000000000000000008461258f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161420595949392919061562a565b600060405180830381600087803b15801561421f57600080fd5b505af1158015614233573d6000803e3d6000fd5b505050505050565b614266307f00000000000000000000000000000000000000000000000000000000000000008461258f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b81526004016142cb96959493929190615684565b6060604051808303818588803b1580156142e457600080fd5b505af11580156142f8573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061431d91906156fa565b5050505050565b6000808311829061436b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143629190614420565b60405180910390fd5b506000838561437a9190614961565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143c15780820151818401526020810190506143a6565b838111156143d0576000848401525b50505050565b6000601f19601f8301169050919050565b60006143f282614387565b6143fc8185614392565b935061440c8185602086016143a3565b614415816143d6565b840191505092915050565b6000602082019050818103600083015261443a81846143e7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061447282614447565b9050919050565b61448281614467565b811461448d57600080fd5b50565b60008135905061449f81614479565b92915050565b6000819050919050565b6144b8816144a5565b81146144c357600080fd5b50565b6000813590506144d5816144af565b92915050565b600080604083850312156144f2576144f1614442565b5b600061450085828601614490565b9250506020614511858286016144c6565b9150509250929050565b60008115159050919050565b6145308161451b565b82525050565b600060208201905061454b6000830184614527565b92915050565b60006020828403121561456757614566614442565b5b600061457584828501614490565b91505092915050565b6000819050919050565b60006145a361459e61459984614447565b61457e565b614447565b9050919050565b60006145b582614588565b9050919050565b60006145c7826145aa565b9050919050565b6145d7816145bc565b82525050565b60006020820190506145f260008301846145ce565b92915050565b614601816144a5565b82525050565b600060208201905061461c60008301846145f8565b92915050565b60006020828403121561463857614637614442565b5b6000614646848285016144c6565b91505092915050565b60008060006060848603121561466857614667614442565b5b600061467686828701614490565b935050602061468786828701614490565b9250506040614698868287016144c6565b9150509250925092565b6146ab8161451b565b81146146b657600080fd5b50565b6000813590506146c8816146a2565b92915050565b600080604083850312156146e5576146e4614442565b5b60006146f385828601614490565b9250506020614704858286016146b9565b9150509250929050565b600060ff82169050919050565b6147248161470e565b82525050565b600060208201905061473f600083018461471b565b92915050565b61474e81614467565b82525050565b60006020820190506147696000830184614745565b92915050565b60006020828403121561478557614784614442565b5b6000614793848285016146b9565b91505092915050565b600080604083850312156147b3576147b2614442565b5b60006147c185828601614490565b92505060206147d285828601614490565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061482357607f821691505b60208210811415614837576148366147dc565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614873602083614392565b915061487e8261483d565b602082019050919050565b600060208201905081810360008301526148a281614866565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148e3826144a5565b91506148ee836144a5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614927576149266148a9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061496c826144a5565b9150614977836144a5565b92508261498757614986614932565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006149ee602f83614392565b91506149f982614992565b604082019050919050565b60006020820190508181036000830152614a1d816149e1565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614a80603983614392565b9150614a8b82614a24565b604082019050919050565b60006020820190508181036000830152614aaf81614a73565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614b12602483614392565b9150614b1d82614ab6565b604082019050919050565b60006020820190508181036000830152614b4181614b05565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614ba4603583614392565b9150614baf82614b48565b604082019050919050565b60006020820190508181036000830152614bd381614b97565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614c36603483614392565b9150614c4182614bda565b604082019050919050565b60006020820190508181036000830152614c6581614c29565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614cc8602683614392565b9150614cd382614c6c565b604082019050919050565b60006020820190508181036000830152614cf781614cbb565b9050919050565b6000614d09826144a5565b9150614d14836144a5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d4957614d486148a9565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614d8a601b83614392565b9150614d9582614d54565b602082019050919050565b60006020820190508181036000830152614db981614d7d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614e1c602483614392565b9150614e2782614dc0565b604082019050919050565b60006020820190508181036000830152614e4b81614e0f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614eae602283614392565b9150614eb982614e52565b604082019050919050565b60006020820190508181036000830152614edd81614ea1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614f40602583614392565b9150614f4b82614ee4565b604082019050919050565b60006020820190508181036000830152614f6f81614f33565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614fd2602383614392565b9150614fdd82614f76565b604082019050919050565b6000602082019050818103600083015261500181614fc5565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000615064603183614392565b915061506f82615008565b604082019050919050565b6000602082019050818103600083015261509381615057565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006150d0601683614392565b91506150db8261509a565b602082019050919050565b600060208201905081810360008301526150ff816150c3565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615188604983614392565b915061519382615106565b606082019050919050565b600060208201905081810360008301526151b78161517b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061521a603583614392565b9150615225826151be565b604082019050919050565b600060208201905081810360008301526152498161520d565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615286601383614392565b915061529182615250565b602082019050919050565b600060208201905081810360008301526152b581615279565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615318603683614392565b9150615323826152bc565b604082019050919050565b600060208201905081810360008301526153478161530b565b9050919050565b6000615359826144a5565b9150615364836144a5565b925082821015615377576153766148a9565b5b828203905092915050565b600081905092915050565b50565b600061539d600083615382565b91506153a88261538d565b600082019050919050565b60006153be82615390565b9150819050919050565b60006060820190506153dd60008301866145f8565b6153ea60208301856145f8565b6153f760408301846145f8565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061545b602183614392565b9150615466826153ff565b604082019050919050565b6000602082019050818103600083015261548a8161544e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506154fe81614479565b92915050565b60006020828403121561551a57615519614442565b5b6000615528848285016154ef565b91505092915050565b6000819050919050565b600061555661555161554c84615531565b61457e565b6144a5565b9050919050565b6155668161553b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155a181614467565b82525050565b60006155b38383615598565b60208301905092915050565b6000602082019050919050565b60006155d78261556c565b6155e18185615577565b93506155ec83615588565b8060005b8381101561561d57815161560488826155a7565b975061560f836155bf565b9250506001810190506155f0565b5085935050505092915050565b600060a08201905061563f60008301886145f8565b61564c602083018761555d565b818103604083015261565e81866155cc565b905061566d6060830185614745565b61567a60808301846145f8565b9695505050505050565b600060c0820190506156996000830189614745565b6156a660208301886145f8565b6156b3604083018761555d565b6156c0606083018661555d565b6156cd6080830185614745565b6156da60a08301846145f8565b979650505050505050565b6000815190506156f4816144af565b92915050565b60008060006060848603121561571357615712614442565b5b6000615721868287016156e5565b9350506020615732868287016156e5565b9250506040615743868287016156e5565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220981d5fdac09207e997ebd96d2493fa39567fb8abb660f8e4a3054b6c2fdc5b5064736f6c63430008090033
Deployed Bytecode
0x6080604052600436106103545760003560e01c806392136913116101c6578063bbc0c742116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610c7b578063f2fde38b14610ca6578063f637434214610ccf578063f8b45b0514610cfa5761035b565b8063dd62ed3e14610be8578063e2f4560514610c25578063e884f26014610c505761035b565b8063c876d0b9116100d1578063c876d0b914610b2a578063c8c8ebe414610b55578063d257b34f14610b80578063d85ba06314610bbd5761035b565b8063bbc0c74214610aad578063c024666814610ad8578063c18bc19514610b015761035b565b8063a265777811610164578063a7fc9e211161013e578063a7fc9e21146109df578063a9059cbb14610a0a578063aacebbe314610a47578063b62496f514610a705761035b565b8063a26577781461094e578063a457c2d714610977578063a4d15b64146109b45761035b565b80639a7a23d6116101a05780639a7a23d6146108a45780639c3b4fdc146108cd5780639fccce32146108f8578063a0d82dc5146109235761035b565b80639213691314610825578063924de9b71461085057806395d89b41146108795761035b565b806339509351116102a057806370a082311161023e5780637571336a116102185780637571336a1461078f5780637bce5a04146107b85780638a8c523c146107e35780638da5cb5b146107fa5761035b565b806370a0823114610710578063715018a61461074d578063751039fc146107645761035b565b80634fbee1931161027a5780634fbee19314610652578063541a43cf1461068f5780636a486a8e146106ba5780636ddd1713146106e55761035b565b806339509351146105bf57806349bd5a5e146105fc5780634a62bb65146106275761035b565b80631a8145bb1161030d57806323b872dd116102e757806323b872dd146105035780632bf3d42d146105405780632d5a5d341461056b578063313ce567146105945761035b565b80631a8145bb146104845780631f3fed8f146104af578063203e727e146104da5761035b565b806306fdde0314610360578063095ea7b31461038b57806310d5de53146103c85780631694505e1461040557806318160ddd146104305780631816467f1461045b5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610d25565b6040516103829190614420565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad91906144db565b610db7565b6040516103bf9190614536565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190614551565b610dd5565b6040516103fc9190614536565b60405180910390f35b34801561041157600080fd5b5061041a610df4565b60405161042791906145dd565b60405180910390f35b34801561043c57600080fd5b50610445610e18565b6040516104529190614607565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d9190614551565b610e22565b005b34801561049057600080fd5b50610499610f79565b6040516104a69190614607565b60405180910390f35b3480156104bb57600080fd5b506104c4610f7f565b6040516104d19190614607565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc9190614622565b610f85565b005b34801561050f57600080fd5b5061052a6004803603810190610525919061464f565b6110af565b6040516105379190614536565b60405180910390f35b34801561054c57600080fd5b50610555611188565b6040516105629190614607565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d91906146ce565b61118e565b005b3480156105a057600080fd5b506105a9611280565b6040516105b6919061472a565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e191906144db565b611289565b6040516105f39190614536565b60405180910390f35b34801561060857600080fd5b5061061161133c565b60405161061e9190614754565b60405180910390f35b34801561063357600080fd5b5061063c611360565b6040516106499190614536565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190614551565b611373565b6040516106869190614536565b60405180910390f35b34801561069b57600080fd5b506106a46113c9565b6040516106b19190614607565b60405180910390f35b3480156106c657600080fd5b506106cf6113cf565b6040516106dc9190614607565b60405180910390f35b3480156106f157600080fd5b506106fa6113d5565b6040516107079190614536565b60405180910390f35b34801561071c57600080fd5b5061073760048036038101906107329190614551565b6113e8565b6040516107449190614607565b60405180910390f35b34801561075957600080fd5b50610762611430565b005b34801561077057600080fd5b50610779611588565b6040516107869190614536565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b191906146ce565b611643565b005b3480156107c457600080fd5b506107cd611735565b6040516107da9190614607565b60405180910390f35b3480156107ef57600080fd5b506107f861173b565b005b34801561080657600080fd5b5061080f611811565b60405161081c9190614754565b60405180910390f35b34801561083157600080fd5b5061083a61183b565b6040516108479190614607565b60405180910390f35b34801561085c57600080fd5b506108776004803603810190610872919061476f565b611841565b005b34801561088557600080fd5b5061088e6118f5565b60405161089b9190614420565b60405180910390f35b3480156108b057600080fd5b506108cb60048036038101906108c691906146ce565b611987565b005b3480156108d957600080fd5b506108e2611abb565b6040516108ef9190614607565b60405180910390f35b34801561090457600080fd5b5061090d611ac1565b60405161091a9190614607565b60405180910390f35b34801561092f57600080fd5b50610938611ac7565b6040516109459190614607565b60405180910390f35b34801561095a57600080fd5b506109756004803603810190610970919061476f565b611acd565b005b34801561098357600080fd5b5061099e600480360381019061099991906144db565b611b81565b6040516109ab9190614536565b60405180910390f35b3480156109c057600080fd5b506109c9611c4e565b6040516109d69190614536565b60405180910390f35b3480156109eb57600080fd5b506109f4611c61565b604051610a019190614607565b60405180910390f35b348015610a1657600080fd5b50610a316004803603810190610a2c91906144db565b611c67565b604051610a3e9190614536565b60405180910390f35b348015610a5357600080fd5b50610a6e6004803603810190610a699190614551565b611c85565b005b348015610a7c57600080fd5b50610a976004803603810190610a929190614551565b611ddc565b604051610aa49190614536565b60405180910390f35b348015610ab957600080fd5b50610ac2611dfc565b604051610acf9190614536565b60405180910390f35b348015610ae457600080fd5b50610aff6004803603810190610afa91906146ce565b611e0f565b005b348015610b0d57600080fd5b50610b286004803603810190610b239190614622565b611f4f565b005b348015610b3657600080fd5b50610b3f612079565b604051610b4c9190614536565b60405180910390f35b348015610b6157600080fd5b50610b6a61208c565b604051610b779190614607565b60405180910390f35b348015610b8c57600080fd5b50610ba76004803603810190610ba29190614622565b612092565b604051610bb49190614536565b60405180910390f35b348015610bc957600080fd5b50610bd2612202565b604051610bdf9190614607565b60405180910390f35b348015610bf457600080fd5b50610c0f6004803603810190610c0a919061479c565b612208565b604051610c1c9190614607565b60405180910390f35b348015610c3157600080fd5b50610c3a61228f565b604051610c479190614607565b60405180910390f35b348015610c5c57600080fd5b50610c65612295565b604051610c729190614536565b60405180910390f35b348015610c8757600080fd5b50610c90612350565b604051610c9d9190614607565b60405180910390f35b348015610cb257600080fd5b50610ccd6004803603810190610cc89190614551565b612356565b005b348015610cdb57600080fd5b50610ce461251d565b604051610cf19190614607565b60405180910390f35b348015610d0657600080fd5b50610d0f612523565b604051610d1c9190614607565b60405180910390f35b606060038054610d349061480b565b80601f0160208091040260200160405190810160405280929190818152602001828054610d609061480b565b8015610dad5780601f10610d8257610100808354040283529160200191610dad565b820191906000526020600020905b815481529060010190602001808311610d9057829003601f168201915b5050505050905090565b6000610dcb610dc4612587565b848461258f565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610e2a612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb090614889565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c5481565b601b5481565b610f8d612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101390614889565b60405180910390fd5b670de0b6b3a76400006103e86001611032610e18565b61103c91906148d8565b6110469190614961565b6110509190614961565b811015611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990614a04565b60405180910390fd5b670de0b6b3a7640000816110a691906148d8565b60088190555050565b60006110bc84848461275a565b61117d846110c8612587565b6111788560405180606001604052806028815260200161577460289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061112e612587565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461385a9092919063ffffffff16565b61258f565b600190509392505050565b60195481565b611196612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c90614889565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b6000611332611296612587565b8461132d85600160006112a7612587565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252990919063ffffffff16565b61258f565b6001905092915050565b7f00000000000000000000000007794a475588a2ce3dac29709b8eade131beac5581565b600b60009054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b60145481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611438612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90614889565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611592612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161890614889565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61164b612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d190614889565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b611743612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c990614889565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043601e81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b611849612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cf90614889565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6060600480546119049061480b565b80601f01602080910402602001604051908101604052809291908181526020018280546119309061480b565b801561197d5780601f106119525761010080835404028352916020019161197d565b820191906000526020600020905b81548152906001019060200180831161196057829003601f168201915b5050505050905090565b61198f612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1590614889565b60405180910390fd5b7f00000000000000000000000007794a475588a2ce3dac29709b8eade131beac5573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa490614a96565b60405180910390fd5b611ab782826138be565b5050565b60135481565b601d5481565b60175481565b611ad5612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5b90614889565b60405180910390fd5b80600b60036101000a81548160ff02191690831515021790555050565b6000611c44611b8e612587565b84611c3f8560405180606001604052806025815260200161579c6025913960016000611bb8612587565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461385a9092919063ffffffff16565b61258f565b6001905092915050565b600b60039054906101000a900460ff1681565b601a5481565b6000611c7b611c74612587565b848461275a565b6001905092915050565b611c8d612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1390614889565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60216020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611e17612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ea6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9d90614889565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f439190614536565b60405180910390a25050565b611f57612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdd90614889565b60405180910390fd5b670de0b6b3a76400006103e86005611ffc610e18565b61200691906148d8565b6120109190614961565b61201a9190614961565b81101561205c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205390614b28565b60405180910390fd5b670de0b6b3a76400008161207091906148d8565b600a8190555050565b600f60009054906101000a900460ff1681565b60085481565b600061209c612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461212b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212290614889565b60405180910390fd5b620186a06001612139610e18565b61214391906148d8565b61214d9190614961565b82101561218f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218690614bba565b60405180910390fd5b6103e8600561219c610e18565b6121a691906148d8565b6121b09190614961565b8211156121f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e990614c4c565b60405180910390fd5b8160098190555060019050919050565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b600061229f612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232590614889565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b60125481565b61235e612587565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e490614889565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245490614cde565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b600a5481565b60008082846125389190614cfe565b90508381101561257d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257490614da0565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f690614e32565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561266f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266690614ec4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161274d9190614607565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c190614f56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561283a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283190614fe8565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128de5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61291d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129149061507a565b60405180910390fd5b6000811415612937576129328383600061395f565b613855565b600b60009054906101000a900460ff1615612ffa57612954611811565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129c25750612992611811565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129fb5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a35575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a4e5750600560149054906101000a900460ff16155b15612ff957600b60019054906101000a900460ff16612b4857601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b085750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3e906150e6565b60405180910390fd5b5b600f60009054906101000a900460ff1615612d1057612b65611811565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612bec57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c4457507f00000000000000000000000007794a475588a2ce3dac29709b8eade131beac5573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d0f5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc19061519e565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612db35750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e5a57600854811115612dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df490615230565b60405180910390fd5b600a54612e09836113e8565b82612e149190614cfe565b1115612e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4c9061529c565b60405180910390fd5b612ff8565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612efd5750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f4c57600854811115612f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3e9061532e565b60405180910390fd5b612ff7565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ff657600a54612fa9836113e8565b82612fb49190614cfe565b1115612ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fec9061529c565b60405180910390fd5b5b5b5b5b5b6001601e546130099190614cfe565b431115801561306457507f00000000000000000000000007794a475588a2ce3dac29709b8eade131beac5573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156130b05750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561310e576001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60007f00000000000000000000000007794a475588a2ce3dac29709b8eade131beac5573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490508015801561317b5750600b60039054906101000a900460ff165b1561329e576000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415801561321d57504262015180600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461321a9190614cfe565b10155b1561326557601854601681905550601954601581905550601a546017819055506017546016546015546132509190614cfe565b61325a9190614cfe565b601481905550613299565b600160168190555060036015819055506017546016546015546132889190614cfe565b6132929190614cfe565b6014819055505b61337c565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561332b5742600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60039054906101000a900460ff1661337b5760016016819055506003601581905550600060178190555060175460165460155461336a9190614cfe565b6133749190614cfe565b6014819055505b5b6000613387306113e8565b9050600060095482101590508080156133ac5750600b60029054906101000a900460ff165b80156133c55750600560149054906101000a900460ff16155b801561341b5750602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134715750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134c75750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561350b576001600560146101000a81548160ff0219169083151502179055506134ef613bf4565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135c15750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135cb57600090505b6000811561384457602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561362e57506000601454115b156136fb5761365b606461364d60145489613edb90919063ffffffff16565b613f5690919063ffffffff16565b90506014546016548261366e91906148d8565b6136789190614961565b601c60008282546136899190614cfe565b92505081905550601454601754826136a191906148d8565b6136ab9190614961565b601d60008282546136bc9190614cfe565b92505081905550601454601554826136d491906148d8565b6136de9190614961565b601b60008282546136ef9190614cfe565b92505081905550613820565b602160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561375657506000601054115b1561381f57613783606461377560105489613edb90919063ffffffff16565b613f5690919063ffffffff16565b90506010546012548261379691906148d8565b6137a09190614961565b601c60008282546137b19190614cfe565b92505081905550601054601354826137c991906148d8565b6137d39190614961565b601d60008282546137e49190614cfe565b92505081905550601054601154826137fc91906148d8565b6138069190614961565b601b60008282546138179190614cfe565b925050819055505b5b60008111156138355761383488308361395f565b5b8086613841919061534e565b95505b61384f88888861395f565b50505050505b505050565b60008383111582906138a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138999190614420565b60405180910390fd5b50600083856138b1919061534e565b9050809150509392505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156139cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139c690614f56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a3690614fe8565b60405180910390fd5b613a4a838383613fa0565b613ab58160405180606001604052806026815260200161574e602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461385a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b48816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613be79190614607565b60405180910390a3505050565b6000613bff306113e8565b90506000601d54601b54601c54613c169190614cfe565b613c209190614cfe565b9050600080831480613c325750600082145b15613c3f57505050613ed9565b6014600954613c4e91906148d8565b831115613c67576014600954613c6491906148d8565b92505b6000600283601c5486613c7a91906148d8565b613c849190614961565b613c8e9190614961565b90506000613ca58286613fa590919063ffffffff16565b90506000479050613cb582613fef565b6000613cca8247613fa590919063ffffffff16565b90506000613cf587613ce7601b5485613edb90919063ffffffff16565b613f5690919063ffffffff16565b90506000613d2088613d12601d5486613edb90919063ffffffff16565b613f5690919063ffffffff16565b90506000818385613d31919061534e565b613d3b919061534e565b90506000601c819055506000601b819055506000601d81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613d9b906153b3565b60006040518083038185875af1925050503d8060008114613dd8576040519150601f19603f3d011682016040523d82523d6000602084013e613ddd565b606091505b505080985050600087118015613df35750600081115b15613e4057613e02878261423b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601c54604051613e37939291906153c8565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613e86906153b3565b60006040518083038185875af1925050503d8060008114613ec3576040519150601f19603f3d011682016040523d82523d6000602084013e613ec8565b606091505b505080985050505050505050505050505b565b600080831415613eee5760009050613f50565b60008284613efc91906148d8565b9050828482613f0b9190614961565b14613f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f4290615471565b60405180910390fd5b809150505b92915050565b6000613f9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614324565b905092915050565b505050565b6000613fe783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061385a565b905092915050565b6000600267ffffffffffffffff81111561400c5761400b615491565b5b60405190808252806020026020018201604052801561403a5781602001602082028036833780820191505090505b5090503081600081518110614052576140516154c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156140f257600080fd5b505afa158015614106573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061412a9190615504565b8160018151811061413e5761413d6154c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141a3307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461258f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161420595949392919061562a565b600060405180830381600087803b15801561421f57600080fd5b505af1158015614233573d6000803e3d6000fd5b505050505050565b614266307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461258f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b81526004016142cb96959493929190615684565b6060604051808303818588803b1580156142e457600080fd5b505af11580156142f8573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061431d91906156fa565b5050505050565b6000808311829061436b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143629190614420565b60405180910390fd5b506000838561437a9190614961565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143c15780820151818401526020810190506143a6565b838111156143d0576000848401525b50505050565b6000601f19601f8301169050919050565b60006143f282614387565b6143fc8185614392565b935061440c8185602086016143a3565b614415816143d6565b840191505092915050565b6000602082019050818103600083015261443a81846143e7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061447282614447565b9050919050565b61448281614467565b811461448d57600080fd5b50565b60008135905061449f81614479565b92915050565b6000819050919050565b6144b8816144a5565b81146144c357600080fd5b50565b6000813590506144d5816144af565b92915050565b600080604083850312156144f2576144f1614442565b5b600061450085828601614490565b9250506020614511858286016144c6565b9150509250929050565b60008115159050919050565b6145308161451b565b82525050565b600060208201905061454b6000830184614527565b92915050565b60006020828403121561456757614566614442565b5b600061457584828501614490565b91505092915050565b6000819050919050565b60006145a361459e61459984614447565b61457e565b614447565b9050919050565b60006145b582614588565b9050919050565b60006145c7826145aa565b9050919050565b6145d7816145bc565b82525050565b60006020820190506145f260008301846145ce565b92915050565b614601816144a5565b82525050565b600060208201905061461c60008301846145f8565b92915050565b60006020828403121561463857614637614442565b5b6000614646848285016144c6565b91505092915050565b60008060006060848603121561466857614667614442565b5b600061467686828701614490565b935050602061468786828701614490565b9250506040614698868287016144c6565b9150509250925092565b6146ab8161451b565b81146146b657600080fd5b50565b6000813590506146c8816146a2565b92915050565b600080604083850312156146e5576146e4614442565b5b60006146f385828601614490565b9250506020614704858286016146b9565b9150509250929050565b600060ff82169050919050565b6147248161470e565b82525050565b600060208201905061473f600083018461471b565b92915050565b61474e81614467565b82525050565b60006020820190506147696000830184614745565b92915050565b60006020828403121561478557614784614442565b5b6000614793848285016146b9565b91505092915050565b600080604083850312156147b3576147b2614442565b5b60006147c185828601614490565b92505060206147d285828601614490565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061482357607f821691505b60208210811415614837576148366147dc565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614873602083614392565b915061487e8261483d565b602082019050919050565b600060208201905081810360008301526148a281614866565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148e3826144a5565b91506148ee836144a5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614927576149266148a9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061496c826144a5565b9150614977836144a5565b92508261498757614986614932565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006149ee602f83614392565b91506149f982614992565b604082019050919050565b60006020820190508181036000830152614a1d816149e1565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614a80603983614392565b9150614a8b82614a24565b604082019050919050565b60006020820190508181036000830152614aaf81614a73565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614b12602483614392565b9150614b1d82614ab6565b604082019050919050565b60006020820190508181036000830152614b4181614b05565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614ba4603583614392565b9150614baf82614b48565b604082019050919050565b60006020820190508181036000830152614bd381614b97565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614c36603483614392565b9150614c4182614bda565b604082019050919050565b60006020820190508181036000830152614c6581614c29565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614cc8602683614392565b9150614cd382614c6c565b604082019050919050565b60006020820190508181036000830152614cf781614cbb565b9050919050565b6000614d09826144a5565b9150614d14836144a5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d4957614d486148a9565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614d8a601b83614392565b9150614d9582614d54565b602082019050919050565b60006020820190508181036000830152614db981614d7d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614e1c602483614392565b9150614e2782614dc0565b604082019050919050565b60006020820190508181036000830152614e4b81614e0f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614eae602283614392565b9150614eb982614e52565b604082019050919050565b60006020820190508181036000830152614edd81614ea1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614f40602583614392565b9150614f4b82614ee4565b604082019050919050565b60006020820190508181036000830152614f6f81614f33565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614fd2602383614392565b9150614fdd82614f76565b604082019050919050565b6000602082019050818103600083015261500181614fc5565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000615064603183614392565b915061506f82615008565b604082019050919050565b6000602082019050818103600083015261509381615057565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006150d0601683614392565b91506150db8261509a565b602082019050919050565b600060208201905081810360008301526150ff816150c3565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615188604983614392565b915061519382615106565b606082019050919050565b600060208201905081810360008301526151b78161517b565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061521a603583614392565b9150615225826151be565b604082019050919050565b600060208201905081810360008301526152498161520d565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615286601383614392565b915061529182615250565b602082019050919050565b600060208201905081810360008301526152b581615279565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615318603683614392565b9150615323826152bc565b604082019050919050565b600060208201905081810360008301526153478161530b565b9050919050565b6000615359826144a5565b9150615364836144a5565b925082821015615377576153766148a9565b5b828203905092915050565b600081905092915050565b50565b600061539d600083615382565b91506153a88261538d565b600082019050919050565b60006153be82615390565b9150819050919050565b60006060820190506153dd60008301866145f8565b6153ea60208301856145f8565b6153f760408301846145f8565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061545b602183614392565b9150615466826153ff565b604082019050919050565b6000602082019050818103600083015261548a8161544e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506154fe81614479565b92915050565b60006020828403121561551a57615519614442565b5b6000615528848285016154ef565b91505092915050565b6000819050919050565b600061555661555161554c84615531565b61457e565b6144a5565b9050919050565b6155668161553b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155a181614467565b82525050565b60006155b38383615598565b60208301905092915050565b6000602082019050919050565b60006155d78261556c565b6155e18185615577565b93506155ec83615588565b8060005b8381101561561d57815161560488826155a7565b975061560f836155bf565b9250506001810190506155f0565b5085935050505092915050565b600060a08201905061563f60008301886145f8565b61564c602083018761555d565b818103604083015261565e81866155cc565b905061566d6060830185614745565b61567a60808301846145f8565b9695505050505050565b600060c0820190506156996000830189614745565b6156a660208301886145f8565b6156b3604083018761555d565b6156c0606083018661555d565b6156cd6080830185614745565b6156da60a08301846145f8565b979650505050505050565b6000815190506156f4816144af565b92915050565b60008060006060848603121561571357615712614442565b5b6000615721868287016156e5565b9350506020615732868287016156e5565b9250506040615743868287016156e5565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220981d5fdac09207e997ebd96d2493fa39567fb8abb660f8e4a3054b6c2fdc5b5064736f6c63430008090033
Deployed Bytecode Sourcemap
29379:16673:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7477:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9651:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31078:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29453:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8600:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37464:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30792:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30752;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35642:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10303:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30669:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36651:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8441:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11068:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29511:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29779:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37633:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30626:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30480:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29859:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8772:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21979:148;;;;;;;;;;;;;:::i;:::-;;34748:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36109:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30372:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34547:148;;;;;;;;;;;;;:::i;:::-;;21335:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30515:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36350:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7697:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36795:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30446:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30832:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30591:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35073:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11790:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29897:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30712:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9113:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37247:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31301:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29819:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36460:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35885:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30289:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29663:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35247:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30338:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9352:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29705:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34930:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30409:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22283:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30553:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29745:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7477:100;7531:13;7564:5;7557:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7477:100;:::o;9651:169::-;9734:4;9751:39;9760:12;:10;:12::i;:::-;9774:7;9783:6;9751:8;:39::i;:::-;9808:4;9801:11;;9651:169;;;;:::o;31078:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;29453:51::-;;;:::o;8600:108::-;8661:7;8688:12;;8681:19;;8600:108;:::o;37464:157::-;21558:12;:10;:12::i;:::-;21548:22;;:6;;;;;;;;;;;:22;;;21540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37571:9:::1;;;;;;;;;;;37543:38;;37560:9;37543:38;;;;;;;;;;;;37604:9;37592;;:21;;;;;;;;;;;;;;;;;;37464:157:::0;:::o;30792:33::-;;;;:::o;30752:::-;;;;:::o;35642:234::-;21558:12;:10;:12::i;:::-;21548:22;;:6;;;;;;;;;;;:22;;;21540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35761:4:::1;35755;35751:1;35735:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35734:31;;;;:::i;:::-;35724:6;:41;;35716:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;35861:6;35851;:17;;;;:::i;:::-;35828:20;:40;;;;35642:234:::0;:::o;10303:355::-;10443:4;10460:36;10470:6;10478:9;10489:6;10460:9;:36::i;:::-;10507:121;10516:6;10524:12;:10;:12::i;:::-;10538:89;10576:6;10538:89;;;;;;;;;;;;;;;;;:11;:19;10550:6;10538:19;;;;;;;;;;;;;;;:33;10558:12;:10;:12::i;:::-;10538:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10507:8;:121::i;:::-;10646:4;10639:11;;10303:355;;;;;:::o;30669:36::-;;;;:::o;36651:135::-;21558:12;:10;:12::i;:::-;21548:22;;:6;;;;;;;;;;;:22;;;21540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36765:13:::1;36743:10;:19;36754:7;36743:19;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;36651:135:::0;;:::o;8441:93::-;8499:5;8524:2;8517:9;;8441:93;:::o;11068:218::-;11156:4;11173:83;11182:12;:10;:12::i;:::-;11196:7;11205:50;11244:10;11205:11;:25;11217:12;:10;:12::i;:::-;11205:25;;;;;;;;;;;;;;;:34;11231:7;11205:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11173:8;:83::i;:::-;11274:4;11267:11;;11068:218;;;;:::o;29511:38::-;;;:::o;29779:33::-;;;;;;;;;;;;;:::o;37633:125::-;37698:4;37722:19;:28;37742:7;37722:28;;;;;;;;;;;;;;;;;;;;;;;;;37715:35;;37633:125;;;:::o;30626:36::-;;;;:::o;30480:28::-;;;;:::o;29859:31::-;;;;;;;;;;;;;:::o;8772:127::-;8846:7;8873:9;:18;8883:7;8873:18;;;;;;;;;;;;;;;;8866:25;;8772:127;;;:::o;21979:148::-;21558:12;:10;:12::i;:::-;21548:22;;:6;;;;;;;;;;;:22;;;21540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22086:1:::1;22049:40;;22070:6;;;;;;;;;;;22049:40;;;;;;;;;;;;22117:1;22100:6;;:19;;;;;;;;;;;;;;;;;;21979:148::o:0;34748:120::-;34800:4;21558:12;:10;:12::i;:::-;21548:22;;:6;;;;;;;;;;;:22;;;21540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34833:5:::1;34816:14;;:22;;;;;;;;;;;;;;;;;;34856:4;34849:11;;34748:120:::0;:::o;36109:144::-;21558:12;:10;:12::i;:::-;21548:22;;:6;;;;;;;;;;;:22;;;21540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36241:4:::1;36199:31;:39;36231:6;36199:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;36109:144:::0;;:::o;30372:30::-;;;;:::o;34547:148::-;21558:12;:10;:12::i;:::-;21548:22;;:6;;;;;;;;;;;:22;;;21540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34618:4:::1;34602:13;;:20;;;;;;;;;;;;;;;;;;34647:4;34633:11;;:18;;;;;;;;;;;;;;;;;;34675:12;34662:10;:25;;;;34547:148::o:0;21335:79::-;21373:7;21400:6;;;;;;;;;;;21393:13;;21335:79;:::o;30515:31::-;;;;:::o;36350:101::-;21558:12;:10;:12::i;:::-;21548:22;;:6;;;;;;;;;;;:22;;;21540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36436:7:::1;36422:11;;:21;;;;;;;;;;;;;;;;;;36350:101:::0;:::o;7697:104::-;7753:13;7786:7;7779:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7697:104;:::o;36795:245::-;21558:12;:10;:12::i;:::-;21548:22;;:6;;;;;;;;;;;:22;;;21540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36902:13:::1;36894:21;;:4;:21;;;;36886:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;36991:41;37020:4;37026:5;36991:28;:41::i;:::-;36795:245:::0;;:::o;30446:24::-;;;;:::o;30832:27::-;;;;:::o;30591:25::-;;;;:::o;35073:102::-;21558:12;:10;:12::i;:::-;21548:22;;:6;;;;;;;;;;;:22;;;21540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35162:5:::1;35141:18;;:26;;;;;;;;;;;;;;;;;;35073:102:::0;:::o;11790:269::-;11883:4;11900:129;11909:12;:10;:12::i;:::-;11923:7;11932:96;11971:15;11932:96;;;;;;;;;;;;;;;;;:11;:25;11944:12;:10;:12::i;:::-;11932:25;;;;;;;;;;;;;;;:34;11958:7;11932:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11900:8;:129::i;:::-;12047:4;12040:11;;11790:269;;;;:::o;29897:37::-;;;;;;;;;;;;;:::o;30712:30::-;;;;:::o;9113:175::-;9199:4;9216:42;9226:12;:10;:12::i;:::-;9240:9;9251:6;9216:9;:42::i;:::-;9276:4;9269:11;;9113:175;;;;:::o;37247:208::-;21558:12;:10;:12::i;:::-;21548:22;;:6;;;;;;;;;;;:22;;;21540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37384:15:::1;;;;;;;;;;;37341:59;;37364:18;37341:59;;;;;;;;;;;;37429:18;37411:15;;:36;;;;;;;;;;;;;;;;;;37247:208:::0;:::o;31301:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;29819:33::-;;;;;;;;;;;;;:::o;36460:182::-;21558:12;:10;:12::i;:::-;21548:22;;:6;;;;;;;;;;;:22;;;21540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36576:8:::1;36545:19;:28;36565:7;36545:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;36616:7;36600:34;;;36625:8;36600:34;;;;;;:::i;:::-;;;;;;;;36460:182:::0;;:::o;35885:215::-;21558:12;:10;:12::i;:::-;21548:22;;:6;;;;;;;;;;;:22;;;21540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36007:4:::1;36001;35997:1;35981:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35980:31;;;;:::i;:::-;35970:6;:41;;35962:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;36085:6;36075;:17;;;;:::i;:::-;36063:9;:29;;;;35885:215:::0;:::o;30289:39::-;;;;;;;;;;;;;:::o;29663:35::-;;;;:::o;35247:386::-;35328:4;21558:12;:10;:12::i;:::-;21548:22;;:6;;;;;;;;;;;:22;;;21540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35385:6:::1;35381:1;35365:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;35352:9;:39;;35344:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;35501:4;35497:1;35481:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35468:9;:37;;35460:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;35594:9;35573:18;:30;;;;35621:4;35614:11;;35247:386:::0;;;:::o;30338:27::-;;;;:::o;9352:151::-;9441:7;9468:11;:18;9480:5;9468:18;;;;;;;;;;;;;;;:27;9487:7;9468:27;;;;;;;;;;;;;;;;9461:34;;9352:151;;;;:::o;29705:33::-;;;;:::o;34930:134::-;34990:4;21558:12;:10;:12::i;:::-;21548:22;;:6;;;;;;;;;;;:22;;;21540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35029:5:::1;35006:20;;:28;;;;;;;;;;;;;;;;;;35052:4;35045:11;;34930:134:::0;:::o;30409:30::-;;;;:::o;22283:244::-;21558:12;:10;:12::i;:::-;21548:22;;:6;;;;;;;;;;;:22;;;21540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22392:1:::1;22372:22;;:8;:22;;;;22364:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22482:8;22453:38;;22474:6;;;;;;;;;;;22453:38;;;;;;;;;;;;22511:8;22502:6;;:17;;;;;;;;;;;;;;;;;;22283:244:::0;:::o;30553:31::-;;;;:::o;29745:24::-;;;;:::o;16367:182::-;16425:7;16445:9;16461:1;16457;:5;;;;:::i;:::-;16445:17;;16486:1;16481;:6;;16473:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16540:1;16533:8;;;16367:182;;;;:::o;168:98::-;221:7;248:10;241:17;;168:98;:::o;14986:381::-;15139:1;15122:19;;:5;:19;;;;15114:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15220:1;15201:21;;:7;:21;;;;15193:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15305:6;15275:11;:18;15287:5;15275:18;;;;;;;;;;;;;;;:27;15294:7;15275:27;;;;;;;;;;;;;;;:36;;;;15343:7;15327:32;;15336:5;15327:32;;;15352:6;15327:32;;;;;;:::i;:::-;;;;;;;;14986:381;;;:::o;37818:5519::-;37966:1;37950:18;;:4;:18;;;;37942:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38043:1;38029:16;;:2;:16;;;;38021:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;38105:10;:14;38116:2;38105:14;;;;;;;;;;;;;;;;;;;;;;;;;38104:15;:36;;;;;38124:10;:16;38135:4;38124:16;;;;;;;;;;;;;;;;;;;;;;;;;38123:17;38104:36;38096:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;38219:1;38209:6;:11;38206:92;;;38237:28;38253:4;38259:2;38263:1;38237:15;:28::i;:::-;38280:7;;38206:92;38314:14;;;;;;;;;;;38311:1811;;;38374:7;:5;:7::i;:::-;38366:15;;:4;:15;;;;:49;;;;;38408:7;:5;:7::i;:::-;38402:13;;:2;:13;;;;38366:49;:86;;;;;38450:1;38436:16;;:2;:16;;;;38366:86;:128;;;;;38487:6;38473:21;;:2;:21;;;;38366:128;:158;;;;;38516:8;;;;;;;;;;;38515:9;38366:158;38344:1767;;;38562:13;;;;;;;;;;;38558:148;;38607:19;:25;38627:4;38607:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;38636:19;:23;38656:2;38636:23;;;;;;;;;;;;;;;;;;;;;;;;;38607:52;38599:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;38558:148;38865:20;;;;;;;;;;;38861:423;;;38919:7;:5;:7::i;:::-;38913:13;;:2;:13;;;;:47;;;;;38944:15;38930:30;;:2;:30;;;;38913:47;:79;;;;;38978:13;38964:28;;:2;:28;;;;38913:79;38909:356;;;39070:12;39028:28;:39;39057:9;39028:39;;;;;;;;;;;;;;;;:54;39020:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;39229:12;39187:28;:39;39216:9;39187:39;;;;;;;;;;;;;;;:54;;;;38909:356;38861:423;39337:25;:31;39363:4;39337:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;39373:31;:35;39405:2;39373:35;;;;;;;;;;;;;;;;;;;;;;;;;39372:36;39337:71;39333:763;;;39455:20;;39445:6;:30;;39437:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;39594:9;;39577:13;39587:2;39577:9;:13::i;:::-;39568:6;:22;;;;:::i;:::-;:35;;39560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39333:763;;;39706:25;:29;39732:2;39706:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;39740:31;:37;39772:4;39740:37;;;;;;;;;;;;;;;;;;;;;;;;;39739:38;39706:71;39702:394;;;39824:20;;39814:6;:30;;39806:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;39702:394;;;39950:31;:35;39982:2;39950:35;;;;;;;;;;;;;;;;;;;;;;;;;39946:150;;40043:9;;40026:13;40036:2;40026:9;:13::i;:::-;40017:6;:22;;;;:::i;:::-;:35;;40009:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39946:150;39702:394;39333:763;38344:1767;38311:1811;40196:1;40183:10;;:14;;;;:::i;:::-;40166:12;:32;;:73;;;;;40226:13;40220:19;;:2;:19;;;;40166:73;:152;;;;;40275:42;40261:57;;:2;:57;;;;40166:152;40162:221;;;40367:4;40350:10;:14;40361:2;40350:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;40162:221;40425:10;40446:13;40438:21;;:4;:21;;;40425:34;;40475:5;40474:6;:28;;;;;40484:18;;;;;;;;;;;40474:28;40470:1026;;;40557:1;40523:24;:30;40548:4;40523:30;;;;;;;;;;;;;;;;:35;;:120;;;;;40627:15;40614:8;40580:24;:30;40605:4;40580:30;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:62;;40523:120;40519:568;;;40684:21;;40665:16;:40;;;;40743:21;;40724:16;:40;;;;40790:15;;40777:10;:28;;;;40878:10;;40859:16;;40840;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;40824:13;:64;;;;40519:568;;;40948:1;40929:16;:20;;;;40987:1;40968:16;:20;;;;41061:10;;41042:16;;41023;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;41007:13;:64;;;;40519:568;40470:1026;;;41155:1;41123:24;:28;41148:2;41123:28;;;;;;;;;;;;;;;;:33;41119:120;;;41208:15;41177:24;:28;41202:2;41177:28;;;;;;;;;;;;;;;:46;;;;41119:120;41261:18;;;;;;;;;;;41256:229;;41319:1;41300:16;:20;;;;41358:1;41339:16;:20;;;;41385:1;41372:10;:14;;;;41459:10;;41440:16;;41421;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;41405:13;:64;;;;41256:229;40470:1026;41509:28;41540:24;41558:4;41540:9;:24::i;:::-;41509:55;;41578:12;41617:18;;41593:20;:42;;41578:57;;41667:7;:35;;;;;41691:11;;;;;;;;;;;41667:35;:61;;;;;41720:8;;;;;;;;;;;41719:9;41667:61;:110;;;;;41746:25;:31;41772:4;41746:31;;;;;;;;;;;;;;;;;;;;;;;;;41745:32;41667:110;:153;;;;;41795:19;:25;41815:4;41795:25;;;;;;;;;;;;;;;;;;;;;;;;;41794:26;41667:153;:194;;;;;41838:19;:23;41858:2;41838:23;;;;;;;;;;;;;;;;;;;;;;;;;41837:24;41667:194;41649:328;;;41899:4;41888:8;;:15;;;;;;;;;;;;;;;;;;41921:10;:8;:10::i;:::-;41960:5;41949:8;;:16;;;;;;;;;;;;;;;;;;41649:328;41990:12;42006:8;;;;;;;;;;;42005:9;41990:24;;42116:19;:25;42136:4;42116:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;42145:19;:23;42165:2;42145:23;;;;;;;;;;;;;;;;;;;;;;;;;42116:52;42113:99;;;42195:5;42185:15;;42113:99;42225:12;42329:7;42326:957;;;42380:25;:29;42406:2;42380:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;42429:1;42413:13;;:17;42380:50;42376:754;;;42457:34;42487:3;42457:25;42468:13;;42457:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;42450:41;;42558:13;;42539:16;;42532:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;42510:18;;:61;;;;;;;:::i;:::-;;;;;;;;42626:13;;42613:10;;42606:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;42590:12;;:49;;;;;;;:::i;:::-;;;;;;;;42706:13;;42687:16;;42680:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;42658:18;;:61;;;;;;;:::i;:::-;;;;;;;;42376:754;;;42780:25;:31;42806:4;42780:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;42830:1;42815:12;;:16;42780:51;42777:353;;;42859:33;42888:3;42859:24;42870:12;;42859:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;42852:40;;42958:12;;42940:15;;42933:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;42911:18;;:59;;;;;;;:::i;:::-;;;;;;;;43024:12;;43012:9;;43005:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;42989:12;;:47;;;;;;;:::i;:::-;;;;;;;;43102:12;;43084:15;;43077:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;43055:18;;:59;;;;;;;:::i;:::-;;;;;;;;42777:353;42376:754;43157:1;43150:4;:8;43147:93;;;43182:42;43198:4;43212;43219;43182:15;:42::i;:::-;43147:93;43267:4;43257:14;;;;;:::i;:::-;;;42326:957;43296:33;43312:4;43318:2;43322:6;43296:15;:33::i;:::-;37931:5406;;;;;37818:5519;;;;:::o;17273:193::-;17359:7;17392:1;17387;:6;;17395:12;17379:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17419:9;17435:1;17431;:5;;;;:::i;:::-;17419:17;;17457:1;17450:8;;;17273:193;;;;;:::o;37049:189::-;37166:5;37132:25;:31;37158:4;37132:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;37224:5;37190:40;;37218:4;37190:40;;;;;;;;;;;;37049:189;;:::o;12550:575::-;12708:1;12690:20;;:6;:20;;;;12682:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12792:1;12771:23;;:9;:23;;;;12763:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12848:47;12869:6;12877:9;12888:6;12848:20;:47::i;:::-;12929:71;12951:6;12929:71;;;;;;;;;;;;;;;;;:9;:17;12939:6;12929:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12909:9;:17;12919:6;12909:17;;;;;;;;;;;;;;;:91;;;;13034:32;13059:6;13034:9;:20;13044:9;13034:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13011:9;:20;13021:9;13011:20;;;;;;;;;;;;;;;:55;;;;13099:9;13082:35;;13091:6;13082:35;;;13110:6;13082:35;;;;;;:::i;:::-;;;;;;;;12550:575;;;:::o;44481:1568::-;44520:23;44546:24;44564:4;44546:9;:24::i;:::-;44520:50;;44581:25;44651:12;;44630:18;;44609;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;44581:82;;44674:12;44722:1;44703:15;:20;:46;;;;44748:1;44727:17;:22;44703:46;44700:60;;;44752:7;;;;;44700:60;44815:2;44794:18;;:23;;;;:::i;:::-;44776:15;:41;44773:111;;;44870:2;44849:18;;:23;;;;:::i;:::-;44831:41;;44773:111;44946:23;45031:1;45011:17;44990:18;;44972:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;44946:86;;45043:26;45072:36;45092:15;45072;:19;;:36;;;;:::i;:::-;45043:65;;45122:25;45150:21;45122:49;;45185:36;45202:18;45185:16;:36::i;:::-;45236:18;45257:44;45283:17;45257:21;:25;;:44;;;;:::i;:::-;45236:65;;45315:23;45341:57;45380:17;45341:34;45356:18;;45341:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;45315:83;;45409:17;45429:51;45462:17;45429:28;45444:12;;45429:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;45409:71;;45491:23;45548:9;45530:15;45517:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;45491:66;;45595:1;45574:18;:22;;;;45628:1;45607:18;:22;;;;45655:1;45640:12;:16;;;;45691:9;;;;;;;;;;;45683:23;;45714:9;45683:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45670:58;;;;;45763:1;45745:15;:19;:42;;;;;45786:1;45768:15;:19;45745:42;45742:210;;;45803:46;45816:15;45833;45803:12;:46::i;:::-;45869:71;45884:18;45904:15;45921:18;;45869:71;;;;;;;;:::i;:::-;;;;;;;;45742:210;45986:15;;;;;;;;;;;45978:29;;46015:21;45978:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45965:76;;;;;44509:1540;;;;;;;;;;44481:1568;:::o;17726:473::-;17784:7;18034:1;18029;:6;18025:47;;;18059:1;18052:8;;;;18025:47;18085:9;18101:1;18097;:5;;;;:::i;:::-;18085:17;;18130:1;18125;18121;:5;;;;:::i;:::-;:10;18113:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18190:1;18183:8;;;17726:473;;;;;:::o;18676:132::-;18734:7;18761:39;18765:1;18768;18761:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;18754:46;;18676:132;;;;:::o;15971:125::-;;;;:::o;16833:136::-;16891:7;16918:43;16922:1;16925;16918:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;16911:50;;16833:136;;;;:::o;43346:597::-;43475:21;43513:1;43499:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43475:40;;43544:4;43526;43531:1;43526:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;43570:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43560:4;43565:1;43560:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;43606:62;43623:4;43638:15;43656:11;43606:8;:62::i;:::-;43708:15;:66;;;43789:11;43815:1;43859:4;43886;43906:15;43708:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43401:542;43346:597;:::o;43952:520::-;44100:62;44117:4;44132:15;44150:11;44100:8;:62::i;:::-;44206:15;:31;;;44245:9;44278:4;44298:11;44324:1;44367;44418:4;44438:15;44206:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;43952:520;;:::o;19305:279::-;19391:7;19423:1;19419;:5;19426:12;19411:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19450:9;19466:1;19462;:5;;;;:::i;:::-;19450:17;;19575:1;19568:8;;;19305:279;;;;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:116::-;6189:21;6204:5;6189:21;:::i;:::-;6182:5;6179:32;6169:60;;6225:1;6222;6215:12;6169:60;6119:116;:::o;6241:133::-;6284:5;6322:6;6309:20;6300:29;;6338:30;6362:5;6338:30;:::i;:::-;6241:133;;;;:::o;6380:468::-;6445:6;6453;6502:2;6490:9;6481:7;6477:23;6473:32;6470:119;;;6508:79;;:::i;:::-;6470:119;6628:1;6653:53;6698:7;6689:6;6678:9;6674:22;6653:53;:::i;:::-;6643:63;;6599:117;6755:2;6781:50;6823:7;6814:6;6803:9;6799:22;6781:50;:::i;:::-;6771:60;;6726:115;6380:468;;;;;:::o;6854:86::-;6889:7;6929:4;6922:5;6918:16;6907:27;;6854:86;;;:::o;6946:112::-;7029:22;7045:5;7029:22;:::i;:::-;7024:3;7017:35;6946:112;;:::o;7064:214::-;7153:4;7191:2;7180:9;7176:18;7168:26;;7204:67;7268:1;7257:9;7253:17;7244:6;7204:67;:::i;:::-;7064:214;;;;:::o;7284:118::-;7371:24;7389:5;7371:24;:::i;:::-;7366:3;7359:37;7284:118;;:::o;7408:222::-;7501:4;7539:2;7528:9;7524:18;7516:26;;7552:71;7620:1;7609:9;7605:17;7596:6;7552:71;:::i;:::-;7408:222;;;;:::o;7636:323::-;7692:6;7741:2;7729:9;7720:7;7716:23;7712:32;7709:119;;;7747:79;;:::i;:::-;7709:119;7867:1;7892:50;7934:7;7925:6;7914:9;7910:22;7892:50;:::i;:::-;7882:60;;7838:114;7636:323;;;;:::o;7965:474::-;8033:6;8041;8090:2;8078:9;8069:7;8065:23;8061:32;8058:119;;;8096:79;;:::i;:::-;8058:119;8216:1;8241:53;8286:7;8277:6;8266:9;8262:22;8241:53;:::i;:::-;8231:63;;8187:117;8343:2;8369:53;8414:7;8405:6;8394:9;8390:22;8369:53;:::i;:::-;8359:63;;8314:118;7965:474;;;;;:::o;8445:180::-;8493:77;8490:1;8483:88;8590:4;8587:1;8580:15;8614:4;8611:1;8604:15;8631:320;8675:6;8712:1;8706:4;8702:12;8692:22;;8759:1;8753:4;8749:12;8780:18;8770:81;;8836:4;8828:6;8824:17;8814:27;;8770:81;8898:2;8890:6;8887:14;8867:18;8864:38;8861:84;;;8917:18;;:::i;:::-;8861:84;8682:269;8631:320;;;:::o;8957:182::-;9097:34;9093:1;9085:6;9081:14;9074:58;8957:182;:::o;9145:366::-;9287:3;9308:67;9372:2;9367:3;9308:67;:::i;:::-;9301:74;;9384:93;9473:3;9384:93;:::i;:::-;9502:2;9497:3;9493:12;9486:19;;9145:366;;;:::o;9517:419::-;9683:4;9721:2;9710:9;9706:18;9698:26;;9770:9;9764:4;9760:20;9756:1;9745:9;9741:17;9734:47;9798:131;9924:4;9798:131;:::i;:::-;9790:139;;9517:419;;;:::o;9942:180::-;9990:77;9987:1;9980:88;10087:4;10084:1;10077:15;10111:4;10108:1;10101:15;10128:348;10168:7;10191:20;10209:1;10191:20;:::i;:::-;10186:25;;10225:20;10243:1;10225:20;:::i;:::-;10220:25;;10413:1;10345:66;10341:74;10338:1;10335:81;10330:1;10323:9;10316:17;10312:105;10309:131;;;10420:18;;:::i;:::-;10309:131;10468:1;10465;10461:9;10450:20;;10128:348;;;;:::o;10482:180::-;10530:77;10527:1;10520:88;10627:4;10624:1;10617:15;10651:4;10648:1;10641:15;10668:185;10708:1;10725:20;10743:1;10725:20;:::i;:::-;10720:25;;10759:20;10777:1;10759:20;:::i;:::-;10754:25;;10798:1;10788:35;;10803:18;;:::i;:::-;10788:35;10845:1;10842;10838:9;10833:14;;10668:185;;;;:::o;10859:234::-;10999:34;10995:1;10987:6;10983:14;10976:58;11068:17;11063:2;11055:6;11051:15;11044:42;10859:234;:::o;11099:366::-;11241:3;11262:67;11326:2;11321:3;11262:67;:::i;:::-;11255:74;;11338:93;11427:3;11338:93;:::i;:::-;11456:2;11451:3;11447:12;11440:19;;11099:366;;;:::o;11471:419::-;11637:4;11675:2;11664:9;11660:18;11652:26;;11724:9;11718:4;11714:20;11710:1;11699:9;11695:17;11688:47;11752:131;11878:4;11752:131;:::i;:::-;11744:139;;11471:419;;;:::o;11896:244::-;12036:34;12032:1;12024:6;12020:14;12013:58;12105:27;12100:2;12092:6;12088:15;12081:52;11896:244;:::o;12146:366::-;12288:3;12309:67;12373:2;12368:3;12309:67;:::i;:::-;12302:74;;12385:93;12474:3;12385:93;:::i;:::-;12503:2;12498:3;12494:12;12487:19;;12146:366;;;:::o;12518:419::-;12684:4;12722:2;12711:9;12707:18;12699:26;;12771:9;12765:4;12761:20;12757:1;12746:9;12742:17;12735:47;12799:131;12925:4;12799:131;:::i;:::-;12791:139;;12518:419;;;:::o;12943:223::-;13083:34;13079:1;13071:6;13067:14;13060:58;13152:6;13147:2;13139:6;13135:15;13128:31;12943:223;:::o;13172:366::-;13314:3;13335:67;13399:2;13394:3;13335:67;:::i;:::-;13328:74;;13411:93;13500:3;13411:93;:::i;:::-;13529:2;13524:3;13520:12;13513:19;;13172:366;;;:::o;13544:419::-;13710:4;13748:2;13737:9;13733:18;13725:26;;13797:9;13791:4;13787:20;13783:1;13772:9;13768:17;13761:47;13825:131;13951:4;13825:131;:::i;:::-;13817:139;;13544:419;;;:::o;13969:240::-;14109:34;14105:1;14097:6;14093:14;14086:58;14178:23;14173:2;14165:6;14161:15;14154:48;13969:240;:::o;14215:366::-;14357:3;14378:67;14442:2;14437:3;14378:67;:::i;:::-;14371:74;;14454:93;14543:3;14454:93;:::i;:::-;14572:2;14567:3;14563:12;14556:19;;14215:366;;;:::o;14587:419::-;14753:4;14791:2;14780:9;14776:18;14768:26;;14840:9;14834:4;14830:20;14826:1;14815:9;14811:17;14804:47;14868:131;14994:4;14868:131;:::i;:::-;14860:139;;14587:419;;;:::o;15012:239::-;15152:34;15148:1;15140:6;15136:14;15129:58;15221:22;15216:2;15208:6;15204:15;15197:47;15012:239;:::o;15257:366::-;15399:3;15420:67;15484:2;15479:3;15420:67;:::i;:::-;15413:74;;15496:93;15585:3;15496:93;:::i;:::-;15614:2;15609:3;15605:12;15598:19;;15257:366;;;:::o;15629:419::-;15795:4;15833:2;15822:9;15818:18;15810:26;;15882:9;15876:4;15872:20;15868:1;15857:9;15853:17;15846:47;15910:131;16036:4;15910:131;:::i;:::-;15902:139;;15629:419;;;:::o;16054:225::-;16194:34;16190:1;16182:6;16178:14;16171:58;16263:8;16258:2;16250:6;16246:15;16239:33;16054:225;:::o;16285:366::-;16427:3;16448:67;16512:2;16507:3;16448:67;:::i;:::-;16441:74;;16524:93;16613:3;16524:93;:::i;:::-;16642:2;16637:3;16633:12;16626:19;;16285:366;;;:::o;16657:419::-;16823:4;16861:2;16850:9;16846:18;16838:26;;16910:9;16904:4;16900:20;16896:1;16885:9;16881:17;16874:47;16938:131;17064:4;16938:131;:::i;:::-;16930:139;;16657:419;;;:::o;17082:305::-;17122:3;17141:20;17159:1;17141:20;:::i;:::-;17136:25;;17175:20;17193:1;17175:20;:::i;:::-;17170:25;;17329:1;17261:66;17257:74;17254:1;17251:81;17248:107;;;17335:18;;:::i;:::-;17248:107;17379:1;17376;17372:9;17365:16;;17082:305;;;;:::o;17393:177::-;17533:29;17529:1;17521:6;17517:14;17510:53;17393:177;:::o;17576:366::-;17718:3;17739:67;17803:2;17798:3;17739:67;:::i;:::-;17732:74;;17815:93;17904:3;17815:93;:::i;:::-;17933:2;17928:3;17924:12;17917:19;;17576:366;;;:::o;17948:419::-;18114:4;18152:2;18141:9;18137:18;18129:26;;18201:9;18195:4;18191:20;18187:1;18176:9;18172:17;18165:47;18229:131;18355:4;18229:131;:::i;:::-;18221:139;;17948:419;;;:::o;18373:223::-;18513:34;18509:1;18501:6;18497:14;18490:58;18582:6;18577:2;18569:6;18565:15;18558:31;18373:223;:::o;18602:366::-;18744:3;18765:67;18829:2;18824:3;18765:67;:::i;:::-;18758:74;;18841:93;18930:3;18841:93;:::i;:::-;18959:2;18954:3;18950:12;18943:19;;18602:366;;;:::o;18974:419::-;19140:4;19178:2;19167:9;19163:18;19155:26;;19227:9;19221:4;19217:20;19213:1;19202:9;19198:17;19191:47;19255:131;19381:4;19255:131;:::i;:::-;19247:139;;18974:419;;;:::o;19399:221::-;19539:34;19535:1;19527:6;19523:14;19516:58;19608:4;19603:2;19595:6;19591:15;19584:29;19399:221;:::o;19626:366::-;19768:3;19789:67;19853:2;19848:3;19789:67;:::i;:::-;19782:74;;19865:93;19954:3;19865:93;:::i;:::-;19983:2;19978:3;19974:12;19967:19;;19626:366;;;:::o;19998:419::-;20164:4;20202:2;20191:9;20187:18;20179:26;;20251:9;20245:4;20241:20;20237:1;20226:9;20222:17;20215:47;20279:131;20405:4;20279:131;:::i;:::-;20271:139;;19998:419;;;:::o;20423:224::-;20563:34;20559:1;20551:6;20547:14;20540:58;20632:7;20627:2;20619:6;20615:15;20608:32;20423:224;:::o;20653:366::-;20795:3;20816:67;20880:2;20875:3;20816:67;:::i;:::-;20809:74;;20892:93;20981:3;20892:93;:::i;:::-;21010:2;21005:3;21001:12;20994:19;;20653:366;;;:::o;21025:419::-;21191:4;21229:2;21218:9;21214:18;21206:26;;21278:9;21272:4;21268:20;21264:1;21253:9;21249:17;21242:47;21306:131;21432:4;21306:131;:::i;:::-;21298:139;;21025:419;;;:::o;21450:222::-;21590:34;21586:1;21578:6;21574:14;21567:58;21659:5;21654:2;21646:6;21642:15;21635:30;21450:222;:::o;21678:366::-;21820:3;21841:67;21905:2;21900:3;21841:67;:::i;:::-;21834:74;;21917:93;22006:3;21917:93;:::i;:::-;22035:2;22030:3;22026:12;22019:19;;21678:366;;;:::o;22050:419::-;22216:4;22254:2;22243:9;22239:18;22231:26;;22303:9;22297:4;22293:20;22289:1;22278:9;22274:17;22267:47;22331:131;22457:4;22331:131;:::i;:::-;22323:139;;22050:419;;;:::o;22475:236::-;22615:34;22611:1;22603:6;22599:14;22592:58;22684:19;22679:2;22671:6;22667:15;22660:44;22475:236;:::o;22717:366::-;22859:3;22880:67;22944:2;22939:3;22880:67;:::i;:::-;22873:74;;22956:93;23045:3;22956:93;:::i;:::-;23074:2;23069:3;23065:12;23058:19;;22717:366;;;:::o;23089:419::-;23255:4;23293:2;23282:9;23278:18;23270:26;;23342:9;23336:4;23332:20;23328:1;23317:9;23313:17;23306:47;23370:131;23496:4;23370:131;:::i;:::-;23362:139;;23089:419;;;:::o;23514:172::-;23654:24;23650:1;23642:6;23638:14;23631:48;23514:172;:::o;23692:366::-;23834:3;23855:67;23919:2;23914:3;23855:67;:::i;:::-;23848:74;;23931:93;24020:3;23931:93;:::i;:::-;24049:2;24044:3;24040:12;24033:19;;23692:366;;;:::o;24064:419::-;24230:4;24268:2;24257:9;24253:18;24245:26;;24317:9;24311:4;24307:20;24303:1;24292:9;24288:17;24281:47;24345:131;24471:4;24345:131;:::i;:::-;24337:139;;24064:419;;;:::o;24489:297::-;24629:34;24625:1;24617:6;24613:14;24606:58;24698:34;24693:2;24685:6;24681:15;24674:59;24767:11;24762:2;24754:6;24750:15;24743:36;24489:297;:::o;24792:366::-;24934:3;24955:67;25019:2;25014:3;24955:67;:::i;:::-;24948:74;;25031:93;25120:3;25031:93;:::i;:::-;25149:2;25144:3;25140:12;25133:19;;24792:366;;;:::o;25164:419::-;25330:4;25368:2;25357:9;25353:18;25345:26;;25417:9;25411:4;25407:20;25403:1;25392:9;25388:17;25381:47;25445:131;25571:4;25445:131;:::i;:::-;25437:139;;25164:419;;;:::o;25589:240::-;25729:34;25725:1;25717:6;25713:14;25706:58;25798:23;25793:2;25785:6;25781:15;25774:48;25589:240;:::o;25835:366::-;25977:3;25998:67;26062:2;26057:3;25998:67;:::i;:::-;25991:74;;26074:93;26163:3;26074:93;:::i;:::-;26192:2;26187:3;26183:12;26176:19;;25835:366;;;:::o;26207:419::-;26373:4;26411:2;26400:9;26396:18;26388:26;;26460:9;26454:4;26450:20;26446:1;26435:9;26431:17;26424:47;26488:131;26614:4;26488:131;:::i;:::-;26480:139;;26207:419;;;:::o;26632:169::-;26772:21;26768:1;26760:6;26756:14;26749:45;26632:169;:::o;26807:366::-;26949:3;26970:67;27034:2;27029:3;26970:67;:::i;:::-;26963:74;;27046:93;27135:3;27046:93;:::i;:::-;27164:2;27159:3;27155:12;27148:19;;26807:366;;;:::o;27179:419::-;27345:4;27383:2;27372:9;27368:18;27360:26;;27432:9;27426:4;27422:20;27418:1;27407:9;27403:17;27396:47;27460:131;27586:4;27460:131;:::i;:::-;27452:139;;27179:419;;;:::o;27604:241::-;27744:34;27740:1;27732:6;27728:14;27721:58;27813:24;27808:2;27800:6;27796:15;27789:49;27604:241;:::o;27851:366::-;27993:3;28014:67;28078:2;28073:3;28014:67;:::i;:::-;28007:74;;28090:93;28179:3;28090:93;:::i;:::-;28208:2;28203:3;28199:12;28192:19;;27851:366;;;:::o;28223:419::-;28389:4;28427:2;28416:9;28412:18;28404:26;;28476:9;28470:4;28466:20;28462:1;28451:9;28447:17;28440:47;28504:131;28630:4;28504:131;:::i;:::-;28496:139;;28223:419;;;:::o;28648:191::-;28688:4;28708:20;28726:1;28708:20;:::i;:::-;28703:25;;28742:20;28760:1;28742:20;:::i;:::-;28737:25;;28781:1;28778;28775:8;28772:34;;;28786:18;;:::i;:::-;28772:34;28831:1;28828;28824:9;28816:17;;28648:191;;;;:::o;28845:147::-;28946:11;28983:3;28968:18;;28845:147;;;;:::o;28998:114::-;;:::o;29118:398::-;29277:3;29298:83;29379:1;29374:3;29298:83;:::i;:::-;29291:90;;29390:93;29479:3;29390:93;:::i;:::-;29508:1;29503:3;29499:11;29492:18;;29118:398;;;:::o;29522:379::-;29706:3;29728:147;29871:3;29728:147;:::i;:::-;29721:154;;29892:3;29885:10;;29522:379;;;:::o;29907:442::-;30056:4;30094:2;30083:9;30079:18;30071:26;;30107:71;30175:1;30164:9;30160:17;30151:6;30107:71;:::i;:::-;30188:72;30256:2;30245:9;30241:18;30232:6;30188:72;:::i;:::-;30270;30338:2;30327:9;30323:18;30314:6;30270:72;:::i;:::-;29907:442;;;;;;:::o;30355:220::-;30495:34;30491:1;30483:6;30479:14;30472:58;30564:3;30559:2;30551:6;30547:15;30540:28;30355:220;:::o;30581:366::-;30723:3;30744:67;30808:2;30803:3;30744:67;:::i;:::-;30737:74;;30820:93;30909:3;30820:93;:::i;:::-;30938:2;30933:3;30929:12;30922:19;;30581:366;;;:::o;30953:419::-;31119:4;31157:2;31146:9;31142:18;31134:26;;31206:9;31200:4;31196:20;31192:1;31181:9;31177:17;31170:47;31234:131;31360:4;31234:131;:::i;:::-;31226:139;;30953:419;;;:::o;31378:180::-;31426:77;31423:1;31416:88;31523:4;31520:1;31513:15;31547:4;31544:1;31537:15;31564:180;31612:77;31609:1;31602:88;31709:4;31706:1;31699:15;31733:4;31730:1;31723:15;31750:143;31807:5;31838:6;31832:13;31823:22;;31854:33;31881:5;31854:33;:::i;:::-;31750:143;;;;:::o;31899:351::-;31969:6;32018:2;32006:9;31997:7;31993:23;31989:32;31986:119;;;32024:79;;:::i;:::-;31986:119;32144:1;32169:64;32225:7;32216:6;32205:9;32201:22;32169:64;:::i;:::-;32159:74;;32115:128;31899:351;;;;:::o;32256:85::-;32301:7;32330:5;32319:16;;32256:85;;;:::o;32347:158::-;32405:9;32438:61;32456:42;32465:32;32491:5;32465:32;:::i;:::-;32456:42;:::i;:::-;32438:61;:::i;:::-;32425:74;;32347:158;;;:::o;32511:147::-;32606:45;32645:5;32606:45;:::i;:::-;32601:3;32594:58;32511:147;;:::o;32664:114::-;32731:6;32765:5;32759:12;32749:22;;32664:114;;;:::o;32784:184::-;32883:11;32917:6;32912:3;32905:19;32957:4;32952:3;32948:14;32933:29;;32784:184;;;;:::o;32974:132::-;33041:4;33064:3;33056:11;;33094:4;33089:3;33085:14;33077:22;;32974:132;;;:::o;33112:108::-;33189:24;33207:5;33189:24;:::i;:::-;33184:3;33177:37;33112:108;;:::o;33226:179::-;33295:10;33316:46;33358:3;33350:6;33316:46;:::i;:::-;33394:4;33389:3;33385:14;33371:28;;33226:179;;;;:::o;33411:113::-;33481:4;33513;33508:3;33504:14;33496:22;;33411:113;;;:::o;33560:732::-;33679:3;33708:54;33756:5;33708:54;:::i;:::-;33778:86;33857:6;33852:3;33778:86;:::i;:::-;33771:93;;33888:56;33938:5;33888:56;:::i;:::-;33967:7;33998:1;33983:284;34008:6;34005:1;34002:13;33983:284;;;34084:6;34078:13;34111:63;34170:3;34155:13;34111:63;:::i;:::-;34104:70;;34197:60;34250:6;34197:60;:::i;:::-;34187:70;;34043:224;34030:1;34027;34023:9;34018:14;;33983:284;;;33987:14;34283:3;34276:10;;33684:608;;;33560:732;;;;:::o;34298:831::-;34561:4;34599:3;34588:9;34584:19;34576:27;;34613:71;34681:1;34670:9;34666:17;34657:6;34613:71;:::i;:::-;34694:80;34770:2;34759:9;34755:18;34746:6;34694:80;:::i;:::-;34821:9;34815:4;34811:20;34806:2;34795:9;34791:18;34784:48;34849:108;34952:4;34943:6;34849:108;:::i;:::-;34841:116;;34967:72;35035:2;35024:9;35020:18;35011:6;34967:72;:::i;:::-;35049:73;35117:3;35106:9;35102:19;35093:6;35049:73;:::i;:::-;34298:831;;;;;;;;:::o;35135:807::-;35384:4;35422:3;35411:9;35407:19;35399:27;;35436:71;35504:1;35493:9;35489:17;35480:6;35436:71;:::i;:::-;35517:72;35585:2;35574:9;35570:18;35561:6;35517:72;:::i;:::-;35599:80;35675:2;35664:9;35660:18;35651:6;35599:80;:::i;:::-;35689;35765:2;35754:9;35750:18;35741:6;35689:80;:::i;:::-;35779:73;35847:3;35836:9;35832:19;35823:6;35779:73;:::i;:::-;35862;35930:3;35919:9;35915:19;35906:6;35862:73;:::i;:::-;35135:807;;;;;;;;;:::o;35948:143::-;36005:5;36036:6;36030:13;36021:22;;36052:33;36079:5;36052:33;:::i;:::-;35948:143;;;;:::o;36097:663::-;36185:6;36193;36201;36250:2;36238:9;36229:7;36225:23;36221:32;36218:119;;;36256:79;;:::i;:::-;36218:119;36376:1;36401:64;36457:7;36448:6;36437:9;36433:22;36401:64;:::i;:::-;36391:74;;36347:128;36514:2;36540:64;36596:7;36587:6;36576:9;36572:22;36540:64;:::i;:::-;36530:74;;36485:129;36653:2;36679:64;36735:7;36726:6;36715:9;36711:22;36679:64;:::i;:::-;36669:74;;36624:129;36097:663;;;;;:::o
Swarm Source
ipfs://981d5fdac09207e997ebd96d2493fa39567fb8abb660f8e4a3054b6c2fdc5b50
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.