More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 285 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 18442185 | 393 days ago | IN | 0 ETH | 0.0006744 | ||||
Approve | 16661981 | 643 days ago | IN | 0 ETH | 0.00140508 | ||||
Approve | 16020865 | 733 days ago | IN | 0 ETH | 0.00029307 | ||||
Approve | 15878453 | 752 days ago | IN | 0 ETH | 0.00057191 | ||||
Transfer | 15818434 | 761 days ago | IN | 0 ETH | 0.00406138 | ||||
Approve | 15814899 | 761 days ago | IN | 0 ETH | 0.00062894 | ||||
Approve | 15798960 | 764 days ago | IN | 0 ETH | 0.00111867 | ||||
Approve | 15789467 | 765 days ago | IN | 0 ETH | 0.00314066 | ||||
Approve | 15787760 | 765 days ago | IN | 0 ETH | 0.00085244 | ||||
Approve | 15787355 | 765 days ago | IN | 0 ETH | 0.00101137 | ||||
Approve | 15787109 | 765 days ago | IN | 0 ETH | 0.00099722 | ||||
Approve | 15786833 | 765 days ago | IN | 0 ETH | 0.00089797 | ||||
Approve | 15786817 | 765 days ago | IN | 0 ETH | 0.00090606 | ||||
Approve | 15786699 | 765 days ago | IN | 0 ETH | 0.00083701 | ||||
Approve | 15786687 | 765 days ago | IN | 0 ETH | 0.00093034 | ||||
Approve | 15785895 | 765 days ago | IN | 0 ETH | 0.00095653 | ||||
Approve | 15785887 | 765 days ago | IN | 0 ETH | 0.00152161 | ||||
Approve | 15785260 | 766 days ago | IN | 0 ETH | 0.00157902 | ||||
Approve | 15785172 | 766 days ago | IN | 0 ETH | 0.00142001 | ||||
Approve | 15785150 | 766 days ago | IN | 0 ETH | 0.00154936 | ||||
Approve | 15785052 | 766 days ago | IN | 0 ETH | 0.00155587 | ||||
Approve | 15784942 | 766 days ago | IN | 0 ETH | 0.00163284 | ||||
Approve | 15784864 | 766 days ago | IN | 0 ETH | 0.00179929 | ||||
Approve | 15784769 | 766 days ago | IN | 0 ETH | 0.00162237 | ||||
Approve | 15784707 | 766 days ago | IN | 0 ETH | 0.00179352 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
15878592 | 752 days ago | 0.00144591 ETH | ||||
15878592 | 752 days ago | 0.00216887 ETH | ||||
15878592 | 752 days ago | 0.00361479 ETH | ||||
15838055 | 758 days ago | 0.00355715 ETH | ||||
15838055 | 758 days ago | 0.00533573 ETH | ||||
15838055 | 758 days ago | 0.00889289 ETH | ||||
15814249 | 761 days ago | 0.0027087 ETH | ||||
15814249 | 761 days ago | 0.00406305 ETH | ||||
15814249 | 761 days ago | 0.00677175 ETH | ||||
15794007 | 764 days ago | 0.00310642 ETH | ||||
15794007 | 764 days ago | 0.00465964 ETH | ||||
15794007 | 764 days ago | 0.00776607 ETH | ||||
15792946 | 764 days ago | 0.00240652 ETH | ||||
15792946 | 764 days ago | 0.00360978 ETH | ||||
15792946 | 764 days ago | 0.0060163 ETH | ||||
15789469 | 765 days ago | 0.00343912 ETH | ||||
15789469 | 765 days ago | 0.00515869 ETH | ||||
15789469 | 765 days ago | 0.00859782 ETH | ||||
15787364 | 765 days ago | 0.00448786 ETH | ||||
15787364 | 765 days ago | 0.00673179 ETH | ||||
15787364 | 765 days ago | 0.01121965 ETH | ||||
15787040 | 765 days ago | 0.00370883 ETH | ||||
15787040 | 765 days ago | 0.00556325 ETH | ||||
15787040 | 765 days ago | 0.00927209 ETH | ||||
15786701 | 765 days ago | 0.00280863 ETH |
Loading...
Loading
Contract Name:
THEBURNPROTOCOL
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-19 */ /** *Submitted for verification at Etherscan.io on 2022-04-19 */ /** * THE BURN PROTOCOL (ERC20) * This Token is always on fire! * * Telegram: https://t.me/TheBurnProtocol * Twitter: https://twitter.com/theburnprotocol * Website: https://TheBurnProtocol.com * Medium: https://medium.com/@theburnprotocol/the-burn-protocol-b2321e288d13 * */ // 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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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 THEBURNPROTOCOL is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; address public marketingWallet; address public devWallet; address public liquidityWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; /******************/ // exlcude from fees and max transaction amount 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 liquidityWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event OwnerForcedSwapBack(uint256 timestamp); constructor() ERC20("THE BURN PROTOCOL", "TBP") { 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 = 0; uint256 _buyDevFee = 2; uint256 _sellMarketingFee = 3; uint256 _sellLiquidityFee = 0; uint256 _sellDevFee = 2; uint256 totalSupply = 1 * 1e9 * 1e18; maxTransactionAmount = totalSupply * 20 / 1000; // 2% maxTransactionAmountTxn maxWallet = totalSupply * 2 / 100; // 2% maxWallet swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; marketingWallet = address(0x903D968eE9F366AAa5a01D727a94A4Cb3BDbe01a); // set as marketing wallet devWallet = address(0x7c66F17D3bc3430fB555bbbbFce87a3f3cF412d0); // 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; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; transferDelayEnabled = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.5%"); maxTransactionAmount = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; require(buyTotalFees <= 99, "Just for the snipers at launch"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; require(sellTotalFees <= 25, "Must keep fees at 25% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } function updateLiquidityWallet(address newWallet) external onlyOwner { emit liquidityWalletUpdated(newWallet, liquidityWallet); liquidityWallet = newWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else { require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } 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 liquidityWallet, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} // 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; (bool success,) = address(marketingWallet).call{value: ethForMarketing}(""); (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } } // force Swap back if slippage above 49% for launch. function forceSwapBack() external onlyOwner { uint256 contractBalance = balanceOf(address(this)); require(contractBalance >= totalSupply() / 100, "Can only swap back if more than 1% of tokens stuck on contract"); swapBack(); emit OwnerForcedSwapBack(block.timestamp); } function withdrawDustETH(address _recipient) external onlyOwner { uint256 contractETHBalance = address(this).balance; (bool success, ) = _recipient.call{ value: contractETHBalance }(""); require( success, "Address: unable to send value, recipient may have reverted" ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":"liquidityWalletUpdated","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":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","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":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateLiquidityWallet","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":"updateMaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"withdrawDustETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff0219169083151502179055506000600c60026101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280601181526020017f544845204255524e2050524f544f434f4c0000000000000000000000000000008152506040518060400160405280600381526020017f544250000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200010292919062000bc1565b5080600490805190602001906200011b92919062000bc1565b5050506000620001306200068d60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001fb8160016200069560201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027657600080fd5b505afa1580156200028b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b1919062000cdb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031457600080fd5b505afa15801562000329573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034f919062000cdb565b6040518363ffffffff1660e01b81526004016200036e92919062000d1e565b602060405180830381600087803b1580156200038957600080fd5b505af11580156200039e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c4919062000cdb565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200040c60a05160016200069560201b60201c565b6200042160a05160016200079260201b60201c565b600060039050600080600290506000600390506000806002905060006b033b2e3c9fd0803ce800000090506103e86014826200045e919062000d84565b6200046a919062000e14565b600981905550606460028262000481919062000d84565b6200048d919062000e14565b600b81905550612710600582620004a5919062000d84565b620004b1919062000e14565b600a81905550866010819055508560118190555084601281905550601254601154601054620004e1919062000e4c565b620004ed919062000e4c565b600f819055508360148190555082601581905550816016819055506016546015546014546200051d919062000e4c565b62000529919062000e4c565b60138190555073903d968ee9f366aaa5a01d727a94a4cb3bdbe01a600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737c66f17d3bc3430fb555bbbbfce87a3f3cf412d0600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005fb620005ed6200083360201b60201c565b60016200085d60201b60201c565b6200060e3060016200085d60201b60201c565b6200062361dead60016200085d60201b60201c565b62000645620006376200083360201b60201c565b60016200069560201b60201c565b620006583060016200069560201b60201c565b6200066d61dead60016200069560201b60201c565b6200067f3382620009aa60201b60201c565b5050505050505050620010dd565b600033905090565b620006a56200068d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000737576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200072e9062000f0a565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200086d6200068d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008f69062000f0a565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200099e919062000f49565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a149062000fb6565b60405180910390fd5b62000a316000838362000b5960201b60201c565b62000a4d8160025462000b5e60201b620028ff1790919060201c565b60028190555062000aab816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b5e60201b620028ff1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b4d919062000fe9565b60405180910390a35050565b505050565b600080828462000b6f919062000e4c565b90508381101562000bb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bae9062001056565b60405180910390fd5b8091505092915050565b82805462000bcf90620010a7565b90600052602060002090601f01602090048101928262000bf3576000855562000c3f565b82601f1062000c0e57805160ff191683800117855562000c3f565b8280016001018555821562000c3f579182015b8281111562000c3e57825182559160200191906001019062000c21565b5b50905062000c4e919062000c52565b5090565b5b8082111562000c6d57600081600090555060010162000c53565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ca38262000c76565b9050919050565b62000cb58162000c96565b811462000cc157600080fd5b50565b60008151905062000cd58162000caa565b92915050565b60006020828403121562000cf45762000cf362000c71565b5b600062000d048482850162000cc4565b91505092915050565b62000d188162000c96565b82525050565b600060408201905062000d35600083018562000d0d565b62000d44602083018462000d0d565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d918262000d4b565b915062000d9e8362000d4b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000dda5762000dd962000d55565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e218262000d4b565b915062000e2e8362000d4b565b92508262000e415762000e4062000de5565b5b828204905092915050565b600062000e598262000d4b565b915062000e668362000d4b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e9e5762000e9d62000d55565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ef260208362000ea9565b915062000eff8262000eba565b602082019050919050565b6000602082019050818103600083015262000f258162000ee3565b9050919050565b60008115159050919050565b62000f438162000f2c565b82525050565b600060208201905062000f60600083018462000f38565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f9e601f8362000ea9565b915062000fab8262000f66565b602082019050919050565b6000602082019050818103600083015262000fd18162000f8f565b9050919050565b62000fe38162000d4b565b82525050565b600060208201905062001000600083018462000fd8565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006200103e601b8362000ea9565b91506200104b8262001006565b602082019050919050565b6000602082019050818103600083015262001071816200102f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010c057607f821691505b60208210811415620010d757620010d662001078565b5b50919050565b60805160a0516158376200113b6000396000818161127701528181611c090152612ee8015260008181610f5101528181612e9001528181613f7d0152818161406d0152818161409401528181614130015261415701526158376000f3fe60806040526004361061036f5760003560e01c806392136913116101c6578063c876d0b9116100f7578063e37ba8f911610095578063f11a24d31161006f578063f11a24d314610cab578063f2fde38b14610cd6578063f637434214610cff578063f8b45b0514610d2a57610376565b8063e37ba8f914610c2e578063e393c29414610c57578063e884f26014610c8057610376565b8063d4698016116100d1578063d469801614610b70578063d85ba06314610b9b578063dd62ed3e14610bc6578063e2f4560514610c0357610376565b8063c876d0b914610add578063c8c8ebe414610b08578063d257b34f14610b3357610376565b8063a457c2d711610164578063b62496f51161013e578063b62496f514610a23578063bbc0c74214610a60578063c024666814610a8b578063c17b5b8c14610ab457610376565b8063a457c2d714610980578063a9059cbb146109bd578063aacebbe3146109fa57610376565b80639a7a23d6116101a05780639a7a23d6146108d65780639c3b4fdc146108ff5780639fccce321461092a578063a0d82dc51461095557610376565b80639213691314610857578063924de9b71461088257806395d89b41146108ab57610376565b80634fbee193116102a05780637571336a1161023e5780638095d564116102185780638095d564146107c15780638a8c523c146107ea5780638da5cb5b146108015780638ea5220f1461082c57610376565b80637571336a1461074257806375f0a8741461076b5780637bce5a041461079657610376565b80636ddd17131161027a5780636ddd17131461069857806370a08231146106c3578063715018a614610700578063751039fc1461071757610376565b80634fbee1931461061957806351f205e4146106565780636a486a8e1461066d57610376565b80631a8145bb1161030d578063313ce567116102e7578063313ce5671461055b578063395093511461058657806349bd5a5e146105c35780634a62bb65146105ee57610376565b80631a8145bb146104c85780631f3fed8f146104f357806323b872dd1461051e57610376565b806310d5de531161034957806310d5de531461040c5780631694505e1461044957806318160ddd146104745780631816467f1461049f57610376565b806306fdde031461037b578063095ea7b3146103a6578063106b5da1146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d55565b60405161039d9190614336565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906143f1565b610de7565b6040516103da919061444c565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190614467565b610e05565b005b34801561041857600080fd5b50610433600480360381019061042e9190614494565b610f2f565b604051610440919061444c565b60405180910390f35b34801561045557600080fd5b5061045e610f4f565b60405161046b9190614520565b60405180910390f35b34801561048057600080fd5b50610489610f73565b604051610496919061454a565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190614494565b610f7d565b005b3480156104d457600080fd5b506104dd6110d4565b6040516104ea919061454a565b60405180910390f35b3480156104ff57600080fd5b506105086110da565b604051610515919061454a565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190614565565b6110e0565b604051610552919061444c565b60405180910390f35b34801561056757600080fd5b506105706111b9565b60405161057d91906145d4565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a891906143f1565b6111c2565b6040516105ba919061444c565b60405180910390f35b3480156105cf57600080fd5b506105d8611275565b6040516105e591906145fe565b60405180910390f35b3480156105fa57600080fd5b50610603611299565b604051610610919061444c565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b9190614494565b6112ac565b60405161064d919061444c565b60405180910390f35b34801561066257600080fd5b5061066b611302565b005b34801561067957600080fd5b5061068261143e565b60405161068f919061454a565b60405180910390f35b3480156106a457600080fd5b506106ad611444565b6040516106ba919061444c565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e59190614494565b611457565b6040516106f7919061454a565b60405180910390f35b34801561070c57600080fd5b5061071561149f565b005b34801561072357600080fd5b5061072c6115f7565b604051610739919061444c565b60405180910390f35b34801561074e57600080fd5b5061076960048036038101906107649190614645565b6116cd565b005b34801561077757600080fd5b506107806117bf565b60405161078d91906145fe565b60405180910390f35b3480156107a257600080fd5b506107ab6117e5565b6040516107b8919061454a565b60405180910390f35b3480156107cd57600080fd5b506107e860048036038101906107e39190614685565b6117eb565b005b3480156107f657600080fd5b506107ff611905565b005b34801561080d57600080fd5b506108166119d4565b60405161082391906145fe565b60405180910390f35b34801561083857600080fd5b506108416119fe565b60405161084e91906145fe565b60405180910390f35b34801561086357600080fd5b5061086c611a24565b604051610879919061454a565b60405180910390f35b34801561088e57600080fd5b506108a960048036038101906108a491906146d8565b611a2a565b005b3480156108b757600080fd5b506108c0611ade565b6040516108cd9190614336565b60405180910390f35b3480156108e257600080fd5b506108fd60048036038101906108f89190614645565b611b70565b005b34801561090b57600080fd5b50610914611ca4565b604051610921919061454a565b60405180910390f35b34801561093657600080fd5b5061093f611caa565b60405161094c919061454a565b60405180910390f35b34801561096157600080fd5b5061096a611cb0565b604051610977919061454a565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a291906143f1565b611cb6565b6040516109b4919061444c565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df91906143f1565b611d83565b6040516109f1919061444c565b60405180910390f35b348015610a0657600080fd5b50610a216004803603810190610a1c9190614494565b611da1565b005b348015610a2f57600080fd5b50610a4a6004803603810190610a459190614494565b611ef8565b604051610a57919061444c565b60405180910390f35b348015610a6c57600080fd5b50610a75611f18565b604051610a82919061444c565b60405180910390f35b348015610a9757600080fd5b50610ab26004803603810190610aad9190614645565b611f2b565b005b348015610ac057600080fd5b50610adb6004803603810190610ad69190614685565b61206b565b005b348015610ae957600080fd5b50610af2612185565b604051610aff919061444c565b60405180910390f35b348015610b1457600080fd5b50610b1d612198565b604051610b2a919061454a565b60405180910390f35b348015610b3f57600080fd5b50610b5a6004803603810190610b559190614467565b61219e565b604051610b67919061444c565b60405180910390f35b348015610b7c57600080fd5b50610b8561230e565b604051610b9291906145fe565b60405180910390f35b348015610ba757600080fd5b50610bb0612334565b604051610bbd919061454a565b60405180910390f35b348015610bd257600080fd5b50610bed6004803603810190610be89190614705565b61233a565b604051610bfa919061454a565b60405180910390f35b348015610c0f57600080fd5b50610c186123c1565b604051610c25919061454a565b60405180910390f35b348015610c3a57600080fd5b50610c556004803603810190610c509190614494565b6123c7565b005b348015610c6357600080fd5b50610c7e6004803603810190610c799190614494565b61251e565b005b348015610c8c57600080fd5b50610c9561266b565b604051610ca2919061444c565b60405180910390f35b348015610cb757600080fd5b50610cc0612726565b604051610ccd919061454a565b60405180910390f35b348015610ce257600080fd5b50610cfd6004803603810190610cf89190614494565b61272c565b005b348015610d0b57600080fd5b50610d146128f3565b604051610d21919061454a565b60405180910390f35b348015610d3657600080fd5b50610d3f6128f9565b604051610d4c919061454a565b60405180910390f35b606060038054610d6490614774565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9090614774565b8015610ddd5780601f10610db257610100808354040283529160200191610ddd565b820191906000526020600020905b815481529060010190602001808311610dc057829003601f168201915b5050505050905090565b6000610dfb610df461295d565b8484612965565b6001905092915050565b610e0d61295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e93906147f2565b60405180910390fd5b670de0b6b3a76400006103e86005610eb2610f73565b610ebc9190614841565b610ec691906148ca565b610ed091906148ca565b811015610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f099061496d565b60405180910390fd5b670de0b6b3a764000081610f269190614841565b60098190555050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610f8561295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b906147f2565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60175481565b60006110ed848484612b30565b6111ae846110f961295d565b6111a9856040518060600160405280602881526020016157b560289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061115f61295d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137789092919063ffffffff16565b612965565b600190509392505050565b60006012905090565b600061126b6111cf61295d565b8461126685600160006111e061295d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ff90919063ffffffff16565b612965565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c60009054906101000a900460ff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61130a61295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611399576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611390906147f2565b60405180910390fd5b60006113a430611457565b905060646113b0610f73565b6113ba91906148ca565b8110156113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f3906149ff565b60405180910390fd5b6114046137dc565b7f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb3242604051611433919061454a565b60405180910390a150565b60135481565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114a761295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d906147f2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061160161295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611690576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611687906147f2565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506000600e60006101000a81548160ff0219169083151502179055506001905090565b6116d561295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175b906147f2565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6117f361295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611879906147f2565b60405180910390fd5b8260108190555081601181905550806012819055506012546011546010546118aa9190614a1f565b6118b49190614a1f565b600f819055506063600f541115611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790614ac1565b60405180910390fd5b505050565b61190d61295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461199c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611993906147f2565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b611a3261295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab8906147f2565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b606060048054611aed90614774565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1990614774565b8015611b665780601f10611b3b57610100808354040283529160200191611b66565b820191906000526020600020905b815481529060010190602001808311611b4957829003601f168201915b5050505050905090565b611b7861295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfe906147f2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8d90614b53565b60405180910390fd5b611ca08282613a99565b5050565b60125481565b60195481565b60165481565b6000611d79611cc361295d565b84611d74856040518060600160405280602581526020016157dd6025913960016000611ced61295d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137789092919063ffffffff16565b612965565b6001905092915050565b6000611d97611d9061295d565b8484612b30565b6001905092915050565b611da961295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2f906147f2565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b611f3361295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb9906147f2565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161205f919061444c565b60405180910390a25050565b61207361295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f9906147f2565b60405180910390fd5b82601481905550816015819055508060168190555060165460155460145461212a9190614a1f565b6121349190614a1f565b60138190555060196013541115612180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217790614bbf565b60405180910390fd5b505050565b600e60009054906101000a900460ff1681565b60095481565b60006121a861295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222e906147f2565b60405180910390fd5b620186a06001612245610f73565b61224f9190614841565b61225991906148ca565b82101561229b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229290614c51565b60405180910390fd5b6103e860056122a8610f73565b6122b29190614841565b6122bc91906148ca565b8211156122fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f590614ce3565b60405180910390fd5b81600a8190555060019050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b6123cf61295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461245e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612455906147f2565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3e0ea4f8339b6050ff814971a9814aa39176c149fcf185975c219f33db2342db60405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61252661295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac906147f2565b60405180910390fd5b600047905060008273ffffffffffffffffffffffffffffffffffffffff16826040516125e090614d34565b60006040518083038185875af1925050503d806000811461261d576040519150601f19603f3d011682016040523d82523d6000602084013e612622565b606091505b5050905080612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265d90614dbb565b60405180910390fd5b505050565b600061267561295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fb906147f2565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60115481565b61273461295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba906147f2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90614e4d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b600b5481565b600080828461290e9190614a1f565b905083811015612953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294a90614eb9565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cc90614f4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3c90614fdd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b23919061454a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b979061506f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0790615101565b60405180910390fd5b6000811415612c2a57612c2583836000613b3a565b613773565b600c60009054906101000a900460ff161561329b57612c476119d4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612cb55750612c856119d4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cee5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d28575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d415750600560149054906101000a900460ff16155b1561329a57600c60019054906101000a900460ff16612e3b57601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dfb5750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e319061516d565b60405180910390fd5b5b600e60009054906101000a900460ff161561300357612e586119d4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612edf57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f3757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156130025743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb490615225565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130a65750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561314d576009548111156130f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e7906152b7565b60405180910390fd5b600b546130fc83611457565b826131079190614a1f565b1115613148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313f90615323565b60405180910390fd5b613299565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131f05750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561323f5760095481111561323a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613231906153b5565b60405180910390fd5b613298565b600b5461324b83611457565b826132569190614a1f565b1115613297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328e90615323565b60405180910390fd5b5b5b5b5b60006132a630611457565b90506000600a5482101590508080156132cb5750600c60029054906101000a900460ff165b80156132e45750600560149054906101000a900460ff16155b801561333a5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133905750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133e65750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561342a576001600560146101000a81548160ff02191690831515021790555061340e6137dc565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134e05750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134ea57600090505b6000811561376357601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561354d57506000601354115b1561361a5761357a606461356c60135488613dcf90919063ffffffff16565b613e4a90919063ffffffff16565b90506013546015548261358d9190614841565b61359791906148ca565b601860008282546135a89190614a1f565b92505081905550601354601654826135c09190614841565b6135ca91906148ca565b601960008282546135db9190614a1f565b92505081905550601354601454826135f39190614841565b6135fd91906148ca565b6017600082825461360e9190614a1f565b9250508190555061373f565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561367557506000600f54115b1561373e576136a26064613694600f5488613dcf90919063ffffffff16565b613e4a90919063ffffffff16565b9050600f54601154826136b59190614841565b6136bf91906148ca565b601860008282546136d09190614a1f565b92505081905550600f54601254826136e89190614841565b6136f291906148ca565b601960008282546137039190614a1f565b92505081905550600f546010548261371b9190614841565b61372591906148ca565b601760008282546137369190614a1f565b925050819055505b5b600081111561375457613753873083613b3a565b5b808561376091906153d5565b94505b61376e878787613b3a565b505050505b505050565b60008383111582906137c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137b79190614336565b60405180910390fd5b50600083856137cf91906153d5565b9050809150509392505050565b60006137e730611457565b905060006019546017546018546137fe9190614a1f565b6138089190614a1f565b905060008214806138195750600081145b15613825575050613a97565b6000600282601854856138389190614841565b61384291906148ca565b61384c91906148ca565b905060006138638285613e9490919063ffffffff16565b9050600047905061387382613ede565b60006138888247613e9490919063ffffffff16565b905060006138b3866138a560175485613dcf90919063ffffffff16565b613e4a90919063ffffffff16565b905060006138de876138d060195486613dcf90919063ffffffff16565b613e4a90919063ffffffff16565b905060008183856138ef91906153d5565b6138f991906153d5565b90506000601881905550600060178190555060006019819055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405161395b90614d34565b60006040518083038185875af1925050503d8060008114613998576040519150601f19603f3d011682016040523d82523d6000602084013e61399d565b606091505b50509050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516139e790614d34565b60006040518083038185875af1925050503d8060008114613a24576040519150601f19603f3d011682016040523d82523d6000602084013e613a29565b606091505b505080915050600088118015613a3f5750600082115b15613a8c57613a4e888361412a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618783601854604051613a8393929190615409565b60405180910390a15b505050505050505050505b565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba19061506f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c1190615101565b60405180910390fd5b613c25838383614235565b613c908160405180606001604052806026815260200161578f602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137789092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d23816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ff90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613dc2919061454a565b60405180910390a3505050565b600080831415613de25760009050613e44565b60008284613df09190614841565b9050828482613dff91906148ca565b14613e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e36906154b2565b60405180910390fd5b809150505b92915050565b6000613e8c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061423a565b905092915050565b6000613ed683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613778565b905092915050565b6000600267ffffffffffffffff811115613efb57613efa6154d2565b5b604051908082528060200260200182016040528015613f295781602001602082028036833780820191505090505b5090503081600081518110613f4157613f40615501565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613fe157600080fd5b505afa158015613ff5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140199190615545565b8160018151811061402d5761402c615501565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614092307f000000000000000000000000000000000000000000000000000000000000000084612965565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016140f495949392919061566b565b600060405180830381600087803b15801561410e57600080fd5b505af1158015614122573d6000803e3d6000fd5b505050505050565b614155307f000000000000000000000000000000000000000000000000000000000000000084612965565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016141dc969594939291906156c5565b6060604051808303818588803b1580156141f557600080fd5b505af1158015614209573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061422e919061573b565b5050505050565b505050565b60008083118290614281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142789190614336565b60405180910390fd5b506000838561429091906148ca565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142d75780820151818401526020810190506142bc565b838111156142e6576000848401525b50505050565b6000601f19601f8301169050919050565b60006143088261429d565b61431281856142a8565b93506143228185602086016142b9565b61432b816142ec565b840191505092915050565b6000602082019050818103600083015261435081846142fd565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143888261435d565b9050919050565b6143988161437d565b81146143a357600080fd5b50565b6000813590506143b58161438f565b92915050565b6000819050919050565b6143ce816143bb565b81146143d957600080fd5b50565b6000813590506143eb816143c5565b92915050565b6000806040838503121561440857614407614358565b5b6000614416858286016143a6565b9250506020614427858286016143dc565b9150509250929050565b60008115159050919050565b61444681614431565b82525050565b6000602082019050614461600083018461443d565b92915050565b60006020828403121561447d5761447c614358565b5b600061448b848285016143dc565b91505092915050565b6000602082840312156144aa576144a9614358565b5b60006144b8848285016143a6565b91505092915050565b6000819050919050565b60006144e66144e16144dc8461435d565b6144c1565b61435d565b9050919050565b60006144f8826144cb565b9050919050565b600061450a826144ed565b9050919050565b61451a816144ff565b82525050565b60006020820190506145356000830184614511565b92915050565b614544816143bb565b82525050565b600060208201905061455f600083018461453b565b92915050565b60008060006060848603121561457e5761457d614358565b5b600061458c868287016143a6565b935050602061459d868287016143a6565b92505060406145ae868287016143dc565b9150509250925092565b600060ff82169050919050565b6145ce816145b8565b82525050565b60006020820190506145e960008301846145c5565b92915050565b6145f88161437d565b82525050565b600060208201905061461360008301846145ef565b92915050565b61462281614431565b811461462d57600080fd5b50565b60008135905061463f81614619565b92915050565b6000806040838503121561465c5761465b614358565b5b600061466a858286016143a6565b925050602061467b85828601614630565b9150509250929050565b60008060006060848603121561469e5761469d614358565b5b60006146ac868287016143dc565b93505060206146bd868287016143dc565b92505060406146ce868287016143dc565b9150509250925092565b6000602082840312156146ee576146ed614358565b5b60006146fc84828501614630565b91505092915050565b6000806040838503121561471c5761471b614358565b5b600061472a858286016143a6565b925050602061473b858286016143a6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061478c57607f821691505b602082108114156147a05761479f614745565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147dc6020836142a8565b91506147e7826147a6565b602082019050919050565b6000602082019050818103600083015261480b816147cf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061484c826143bb565b9150614857836143bb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148905761488f614812565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006148d5826143bb565b91506148e0836143bb565b9250826148f0576148ef61489b565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000614957602f836142a8565b9150614962826148fb565b604082019050919050565b600060208201905081810360008301526149868161494a565b9050919050565b7f43616e206f6e6c792073776170206261636b206966206d6f7265207468616e2060008201527f3125206f6620746f6b656e7320737475636b206f6e20636f6e74726163740000602082015250565b60006149e9603e836142a8565b91506149f48261498d565b604082019050919050565b60006020820190508181036000830152614a18816149dc565b9050919050565b6000614a2a826143bb565b9150614a35836143bb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a6a57614a69614812565b5b828201905092915050565b7f4a75737420666f722074686520736e6970657273206174206c61756e63680000600082015250565b6000614aab601e836142a8565b9150614ab682614a75565b602082019050919050565b60006020820190508181036000830152614ada81614a9e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614b3d6039836142a8565b9150614b4882614ae1565b604082019050919050565b60006020820190508181036000830152614b6c81614b30565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614ba9601d836142a8565b9150614bb482614b73565b602082019050919050565b60006020820190508181036000830152614bd881614b9c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614c3b6035836142a8565b9150614c4682614bdf565b604082019050919050565b60006020820190508181036000830152614c6a81614c2e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614ccd6034836142a8565b9150614cd882614c71565b604082019050919050565b60006020820190508181036000830152614cfc81614cc0565b9050919050565b600081905092915050565b50565b6000614d1e600083614d03565b9150614d2982614d0e565b600082019050919050565b6000614d3f82614d11565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614da5603a836142a8565b9150614db082614d49565b604082019050919050565b60006020820190508181036000830152614dd481614d98565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e376026836142a8565b9150614e4282614ddb565b604082019050919050565b60006020820190508181036000830152614e6681614e2a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614ea3601b836142a8565b9150614eae82614e6d565b602082019050919050565b60006020820190508181036000830152614ed281614e96565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f356024836142a8565b9150614f4082614ed9565b604082019050919050565b60006020820190508181036000830152614f6481614f28565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fc76022836142a8565b9150614fd282614f6b565b604082019050919050565b60006020820190508181036000830152614ff681614fba565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006150596025836142a8565b915061506482614ffd565b604082019050919050565b600060208201905081810360008301526150888161504c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150eb6023836142a8565b91506150f68261508f565b604082019050919050565b6000602082019050818103600083015261511a816150de565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006151576016836142a8565b915061516282615121565b602082019050919050565b600060208201905081810360008301526151868161514a565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061520f6049836142a8565b915061521a8261518d565b606082019050919050565b6000602082019050818103600083015261523e81615202565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006152a16035836142a8565b91506152ac82615245565b604082019050919050565b600060208201905081810360008301526152d081615294565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061530d6013836142a8565b9150615318826152d7565b602082019050919050565b6000602082019050818103600083015261533c81615300565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061539f6036836142a8565b91506153aa82615343565b604082019050919050565b600060208201905081810360008301526153ce81615392565b9050919050565b60006153e0826143bb565b91506153eb836143bb565b9250828210156153fe576153fd614812565b5b828203905092915050565b600060608201905061541e600083018661453b565b61542b602083018561453b565b615438604083018461453b565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061549c6021836142a8565b91506154a782615440565b604082019050919050565b600060208201905081810360008301526154cb8161548f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061553f8161438f565b92915050565b60006020828403121561555b5761555a614358565b5b600061556984828501615530565b91505092915050565b6000819050919050565b600061559761559261558d84615572565b6144c1565b6143bb565b9050919050565b6155a78161557c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155e28161437d565b82525050565b60006155f483836155d9565b60208301905092915050565b6000602082019050919050565b6000615618826155ad565b61562281856155b8565b935061562d836155c9565b8060005b8381101561565e57815161564588826155e8565b975061565083615600565b925050600181019050615631565b5085935050505092915050565b600060a082019050615680600083018861453b565b61568d602083018761559e565b818103604083015261569f818661560d565b90506156ae60608301856145ef565b6156bb608083018461453b565b9695505050505050565b600060c0820190506156da60008301896145ef565b6156e7602083018861453b565b6156f4604083018761559e565b615701606083018661559e565b61570e60808301856145ef565b61571b60a083018461453b565b979650505050505050565b600081519050615735816143c5565b92915050565b60008060006060848603121561575457615753614358565b5b600061576286828701615726565b935050602061577386828701615726565b925050604061578486828701615726565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122031c0ff7cb553fbe1ddbaa5a3ad90d5925fd92cd8688378761d0cc8a193de563d64736f6c63430008090033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c806392136913116101c6578063c876d0b9116100f7578063e37ba8f911610095578063f11a24d31161006f578063f11a24d314610cab578063f2fde38b14610cd6578063f637434214610cff578063f8b45b0514610d2a57610376565b8063e37ba8f914610c2e578063e393c29414610c57578063e884f26014610c8057610376565b8063d4698016116100d1578063d469801614610b70578063d85ba06314610b9b578063dd62ed3e14610bc6578063e2f4560514610c0357610376565b8063c876d0b914610add578063c8c8ebe414610b08578063d257b34f14610b3357610376565b8063a457c2d711610164578063b62496f51161013e578063b62496f514610a23578063bbc0c74214610a60578063c024666814610a8b578063c17b5b8c14610ab457610376565b8063a457c2d714610980578063a9059cbb146109bd578063aacebbe3146109fa57610376565b80639a7a23d6116101a05780639a7a23d6146108d65780639c3b4fdc146108ff5780639fccce321461092a578063a0d82dc51461095557610376565b80639213691314610857578063924de9b71461088257806395d89b41146108ab57610376565b80634fbee193116102a05780637571336a1161023e5780638095d564116102185780638095d564146107c15780638a8c523c146107ea5780638da5cb5b146108015780638ea5220f1461082c57610376565b80637571336a1461074257806375f0a8741461076b5780637bce5a041461079657610376565b80636ddd17131161027a5780636ddd17131461069857806370a08231146106c3578063715018a614610700578063751039fc1461071757610376565b80634fbee1931461061957806351f205e4146106565780636a486a8e1461066d57610376565b80631a8145bb1161030d578063313ce567116102e7578063313ce5671461055b578063395093511461058657806349bd5a5e146105c35780634a62bb65146105ee57610376565b80631a8145bb146104c85780631f3fed8f146104f357806323b872dd1461051e57610376565b806310d5de531161034957806310d5de531461040c5780631694505e1461044957806318160ddd146104745780631816467f1461049f57610376565b806306fdde031461037b578063095ea7b3146103a6578063106b5da1146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d55565b60405161039d9190614336565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906143f1565b610de7565b6040516103da919061444c565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190614467565b610e05565b005b34801561041857600080fd5b50610433600480360381019061042e9190614494565b610f2f565b604051610440919061444c565b60405180910390f35b34801561045557600080fd5b5061045e610f4f565b60405161046b9190614520565b60405180910390f35b34801561048057600080fd5b50610489610f73565b604051610496919061454a565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190614494565b610f7d565b005b3480156104d457600080fd5b506104dd6110d4565b6040516104ea919061454a565b60405180910390f35b3480156104ff57600080fd5b506105086110da565b604051610515919061454a565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190614565565b6110e0565b604051610552919061444c565b60405180910390f35b34801561056757600080fd5b506105706111b9565b60405161057d91906145d4565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a891906143f1565b6111c2565b6040516105ba919061444c565b60405180910390f35b3480156105cf57600080fd5b506105d8611275565b6040516105e591906145fe565b60405180910390f35b3480156105fa57600080fd5b50610603611299565b604051610610919061444c565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b9190614494565b6112ac565b60405161064d919061444c565b60405180910390f35b34801561066257600080fd5b5061066b611302565b005b34801561067957600080fd5b5061068261143e565b60405161068f919061454a565b60405180910390f35b3480156106a457600080fd5b506106ad611444565b6040516106ba919061444c565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e59190614494565b611457565b6040516106f7919061454a565b60405180910390f35b34801561070c57600080fd5b5061071561149f565b005b34801561072357600080fd5b5061072c6115f7565b604051610739919061444c565b60405180910390f35b34801561074e57600080fd5b5061076960048036038101906107649190614645565b6116cd565b005b34801561077757600080fd5b506107806117bf565b60405161078d91906145fe565b60405180910390f35b3480156107a257600080fd5b506107ab6117e5565b6040516107b8919061454a565b60405180910390f35b3480156107cd57600080fd5b506107e860048036038101906107e39190614685565b6117eb565b005b3480156107f657600080fd5b506107ff611905565b005b34801561080d57600080fd5b506108166119d4565b60405161082391906145fe565b60405180910390f35b34801561083857600080fd5b506108416119fe565b60405161084e91906145fe565b60405180910390f35b34801561086357600080fd5b5061086c611a24565b604051610879919061454a565b60405180910390f35b34801561088e57600080fd5b506108a960048036038101906108a491906146d8565b611a2a565b005b3480156108b757600080fd5b506108c0611ade565b6040516108cd9190614336565b60405180910390f35b3480156108e257600080fd5b506108fd60048036038101906108f89190614645565b611b70565b005b34801561090b57600080fd5b50610914611ca4565b604051610921919061454a565b60405180910390f35b34801561093657600080fd5b5061093f611caa565b60405161094c919061454a565b60405180910390f35b34801561096157600080fd5b5061096a611cb0565b604051610977919061454a565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a291906143f1565b611cb6565b6040516109b4919061444c565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df91906143f1565b611d83565b6040516109f1919061444c565b60405180910390f35b348015610a0657600080fd5b50610a216004803603810190610a1c9190614494565b611da1565b005b348015610a2f57600080fd5b50610a4a6004803603810190610a459190614494565b611ef8565b604051610a57919061444c565b60405180910390f35b348015610a6c57600080fd5b50610a75611f18565b604051610a82919061444c565b60405180910390f35b348015610a9757600080fd5b50610ab26004803603810190610aad9190614645565b611f2b565b005b348015610ac057600080fd5b50610adb6004803603810190610ad69190614685565b61206b565b005b348015610ae957600080fd5b50610af2612185565b604051610aff919061444c565b60405180910390f35b348015610b1457600080fd5b50610b1d612198565b604051610b2a919061454a565b60405180910390f35b348015610b3f57600080fd5b50610b5a6004803603810190610b559190614467565b61219e565b604051610b67919061444c565b60405180910390f35b348015610b7c57600080fd5b50610b8561230e565b604051610b9291906145fe565b60405180910390f35b348015610ba757600080fd5b50610bb0612334565b604051610bbd919061454a565b60405180910390f35b348015610bd257600080fd5b50610bed6004803603810190610be89190614705565b61233a565b604051610bfa919061454a565b60405180910390f35b348015610c0f57600080fd5b50610c186123c1565b604051610c25919061454a565b60405180910390f35b348015610c3a57600080fd5b50610c556004803603810190610c509190614494565b6123c7565b005b348015610c6357600080fd5b50610c7e6004803603810190610c799190614494565b61251e565b005b348015610c8c57600080fd5b50610c9561266b565b604051610ca2919061444c565b60405180910390f35b348015610cb757600080fd5b50610cc0612726565b604051610ccd919061454a565b60405180910390f35b348015610ce257600080fd5b50610cfd6004803603810190610cf89190614494565b61272c565b005b348015610d0b57600080fd5b50610d146128f3565b604051610d21919061454a565b60405180910390f35b348015610d3657600080fd5b50610d3f6128f9565b604051610d4c919061454a565b60405180910390f35b606060038054610d6490614774565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9090614774565b8015610ddd5780601f10610db257610100808354040283529160200191610ddd565b820191906000526020600020905b815481529060010190602001808311610dc057829003601f168201915b5050505050905090565b6000610dfb610df461295d565b8484612965565b6001905092915050565b610e0d61295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e93906147f2565b60405180910390fd5b670de0b6b3a76400006103e86005610eb2610f73565b610ebc9190614841565b610ec691906148ca565b610ed091906148ca565b811015610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f099061496d565b60405180910390fd5b670de0b6b3a764000081610f269190614841565b60098190555050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610f8561295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b906147f2565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60175481565b60006110ed848484612b30565b6111ae846110f961295d565b6111a9856040518060600160405280602881526020016157b560289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061115f61295d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137789092919063ffffffff16565b612965565b600190509392505050565b60006012905090565b600061126b6111cf61295d565b8461126685600160006111e061295d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ff90919063ffffffff16565b612965565b6001905092915050565b7f000000000000000000000000e1ebc20dbce2f98312bde1ff33bb8f9d5443cb7181565b600c60009054906101000a900460ff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61130a61295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611399576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611390906147f2565b60405180910390fd5b60006113a430611457565b905060646113b0610f73565b6113ba91906148ca565b8110156113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f3906149ff565b60405180910390fd5b6114046137dc565b7f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb3242604051611433919061454a565b60405180910390a150565b60135481565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114a761295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d906147f2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061160161295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611690576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611687906147f2565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506000600e60006101000a81548160ff0219169083151502179055506001905090565b6116d561295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175b906147f2565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6117f361295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611879906147f2565b60405180910390fd5b8260108190555081601181905550806012819055506012546011546010546118aa9190614a1f565b6118b49190614a1f565b600f819055506063600f541115611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790614ac1565b60405180910390fd5b505050565b61190d61295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461199c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611993906147f2565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b611a3261295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab8906147f2565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b606060048054611aed90614774565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1990614774565b8015611b665780601f10611b3b57610100808354040283529160200191611b66565b820191906000526020600020905b815481529060010190602001808311611b4957829003601f168201915b5050505050905090565b611b7861295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfe906147f2565b60405180910390fd5b7f000000000000000000000000e1ebc20dbce2f98312bde1ff33bb8f9d5443cb7173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8d90614b53565b60405180910390fd5b611ca08282613a99565b5050565b60125481565b60195481565b60165481565b6000611d79611cc361295d565b84611d74856040518060600160405280602581526020016157dd6025913960016000611ced61295d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137789092919063ffffffff16565b612965565b6001905092915050565b6000611d97611d9061295d565b8484612b30565b6001905092915050565b611da961295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2f906147f2565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b611f3361295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb9906147f2565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161205f919061444c565b60405180910390a25050565b61207361295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f9906147f2565b60405180910390fd5b82601481905550816015819055508060168190555060165460155460145461212a9190614a1f565b6121349190614a1f565b60138190555060196013541115612180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217790614bbf565b60405180910390fd5b505050565b600e60009054906101000a900460ff1681565b60095481565b60006121a861295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222e906147f2565b60405180910390fd5b620186a06001612245610f73565b61224f9190614841565b61225991906148ca565b82101561229b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229290614c51565b60405180910390fd5b6103e860056122a8610f73565b6122b29190614841565b6122bc91906148ca565b8211156122fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f590614ce3565b60405180910390fd5b81600a8190555060019050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b6123cf61295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461245e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612455906147f2565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3e0ea4f8339b6050ff814971a9814aa39176c149fcf185975c219f33db2342db60405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61252661295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac906147f2565b60405180910390fd5b600047905060008273ffffffffffffffffffffffffffffffffffffffff16826040516125e090614d34565b60006040518083038185875af1925050503d806000811461261d576040519150601f19603f3d011682016040523d82523d6000602084013e612622565b606091505b5050905080612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265d90614dbb565b60405180910390fd5b505050565b600061267561295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fb906147f2565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60115481565b61273461295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba906147f2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90614e4d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b600b5481565b600080828461290e9190614a1f565b905083811015612953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294a90614eb9565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cc90614f4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3c90614fdd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b23919061454a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b979061506f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0790615101565b60405180910390fd5b6000811415612c2a57612c2583836000613b3a565b613773565b600c60009054906101000a900460ff161561329b57612c476119d4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612cb55750612c856119d4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cee5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d28575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d415750600560149054906101000a900460ff16155b1561329a57600c60019054906101000a900460ff16612e3b57601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dfb5750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e319061516d565b60405180910390fd5b5b600e60009054906101000a900460ff161561300357612e586119d4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612edf57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f3757507f000000000000000000000000e1ebc20dbce2f98312bde1ff33bb8f9d5443cb7173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156130025743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb490615225565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130a65750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561314d576009548111156130f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e7906152b7565b60405180910390fd5b600b546130fc83611457565b826131079190614a1f565b1115613148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313f90615323565b60405180910390fd5b613299565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131f05750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561323f5760095481111561323a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613231906153b5565b60405180910390fd5b613298565b600b5461324b83611457565b826132569190614a1f565b1115613297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328e90615323565b60405180910390fd5b5b5b5b5b60006132a630611457565b90506000600a5482101590508080156132cb5750600c60029054906101000a900460ff165b80156132e45750600560149054906101000a900460ff16155b801561333a5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133905750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133e65750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561342a576001600560146101000a81548160ff02191690831515021790555061340e6137dc565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134e05750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134ea57600090505b6000811561376357601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561354d57506000601354115b1561361a5761357a606461356c60135488613dcf90919063ffffffff16565b613e4a90919063ffffffff16565b90506013546015548261358d9190614841565b61359791906148ca565b601860008282546135a89190614a1f565b92505081905550601354601654826135c09190614841565b6135ca91906148ca565b601960008282546135db9190614a1f565b92505081905550601354601454826135f39190614841565b6135fd91906148ca565b6017600082825461360e9190614a1f565b9250508190555061373f565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561367557506000600f54115b1561373e576136a26064613694600f5488613dcf90919063ffffffff16565b613e4a90919063ffffffff16565b9050600f54601154826136b59190614841565b6136bf91906148ca565b601860008282546136d09190614a1f565b92505081905550600f54601254826136e89190614841565b6136f291906148ca565b601960008282546137039190614a1f565b92505081905550600f546010548261371b9190614841565b61372591906148ca565b601760008282546137369190614a1f565b925050819055505b5b600081111561375457613753873083613b3a565b5b808561376091906153d5565b94505b61376e878787613b3a565b505050505b505050565b60008383111582906137c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137b79190614336565b60405180910390fd5b50600083856137cf91906153d5565b9050809150509392505050565b60006137e730611457565b905060006019546017546018546137fe9190614a1f565b6138089190614a1f565b905060008214806138195750600081145b15613825575050613a97565b6000600282601854856138389190614841565b61384291906148ca565b61384c91906148ca565b905060006138638285613e9490919063ffffffff16565b9050600047905061387382613ede565b60006138888247613e9490919063ffffffff16565b905060006138b3866138a560175485613dcf90919063ffffffff16565b613e4a90919063ffffffff16565b905060006138de876138d060195486613dcf90919063ffffffff16565b613e4a90919063ffffffff16565b905060008183856138ef91906153d5565b6138f991906153d5565b90506000601881905550600060178190555060006019819055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405161395b90614d34565b60006040518083038185875af1925050503d8060008114613998576040519150601f19603f3d011682016040523d82523d6000602084013e61399d565b606091505b50509050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516139e790614d34565b60006040518083038185875af1925050503d8060008114613a24576040519150601f19603f3d011682016040523d82523d6000602084013e613a29565b606091505b505080915050600088118015613a3f5750600082115b15613a8c57613a4e888361412a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618783601854604051613a8393929190615409565b60405180910390a15b505050505050505050505b565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba19061506f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c1190615101565b60405180910390fd5b613c25838383614235565b613c908160405180606001604052806026815260200161578f602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137789092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d23816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ff90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613dc2919061454a565b60405180910390a3505050565b600080831415613de25760009050613e44565b60008284613df09190614841565b9050828482613dff91906148ca565b14613e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e36906154b2565b60405180910390fd5b809150505b92915050565b6000613e8c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061423a565b905092915050565b6000613ed683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613778565b905092915050565b6000600267ffffffffffffffff811115613efb57613efa6154d2565b5b604051908082528060200260200182016040528015613f295781602001602082028036833780820191505090505b5090503081600081518110613f4157613f40615501565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613fe157600080fd5b505afa158015613ff5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140199190615545565b8160018151811061402d5761402c615501565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614092307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612965565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016140f495949392919061566b565b600060405180830381600087803b15801561410e57600080fd5b505af1158015614122573d6000803e3d6000fd5b505050505050565b614155307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612965565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016141dc969594939291906156c5565b6060604051808303818588803b1580156141f557600080fd5b505af1158015614209573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061422e919061573b565b5050505050565b505050565b60008083118290614281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142789190614336565b60405180910390fd5b506000838561429091906148ca565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142d75780820151818401526020810190506142bc565b838111156142e6576000848401525b50505050565b6000601f19601f8301169050919050565b60006143088261429d565b61431281856142a8565b93506143228185602086016142b9565b61432b816142ec565b840191505092915050565b6000602082019050818103600083015261435081846142fd565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143888261435d565b9050919050565b6143988161437d565b81146143a357600080fd5b50565b6000813590506143b58161438f565b92915050565b6000819050919050565b6143ce816143bb565b81146143d957600080fd5b50565b6000813590506143eb816143c5565b92915050565b6000806040838503121561440857614407614358565b5b6000614416858286016143a6565b9250506020614427858286016143dc565b9150509250929050565b60008115159050919050565b61444681614431565b82525050565b6000602082019050614461600083018461443d565b92915050565b60006020828403121561447d5761447c614358565b5b600061448b848285016143dc565b91505092915050565b6000602082840312156144aa576144a9614358565b5b60006144b8848285016143a6565b91505092915050565b6000819050919050565b60006144e66144e16144dc8461435d565b6144c1565b61435d565b9050919050565b60006144f8826144cb565b9050919050565b600061450a826144ed565b9050919050565b61451a816144ff565b82525050565b60006020820190506145356000830184614511565b92915050565b614544816143bb565b82525050565b600060208201905061455f600083018461453b565b92915050565b60008060006060848603121561457e5761457d614358565b5b600061458c868287016143a6565b935050602061459d868287016143a6565b92505060406145ae868287016143dc565b9150509250925092565b600060ff82169050919050565b6145ce816145b8565b82525050565b60006020820190506145e960008301846145c5565b92915050565b6145f88161437d565b82525050565b600060208201905061461360008301846145ef565b92915050565b61462281614431565b811461462d57600080fd5b50565b60008135905061463f81614619565b92915050565b6000806040838503121561465c5761465b614358565b5b600061466a858286016143a6565b925050602061467b85828601614630565b9150509250929050565b60008060006060848603121561469e5761469d614358565b5b60006146ac868287016143dc565b93505060206146bd868287016143dc565b92505060406146ce868287016143dc565b9150509250925092565b6000602082840312156146ee576146ed614358565b5b60006146fc84828501614630565b91505092915050565b6000806040838503121561471c5761471b614358565b5b600061472a858286016143a6565b925050602061473b858286016143a6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061478c57607f821691505b602082108114156147a05761479f614745565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147dc6020836142a8565b91506147e7826147a6565b602082019050919050565b6000602082019050818103600083015261480b816147cf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061484c826143bb565b9150614857836143bb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148905761488f614812565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006148d5826143bb565b91506148e0836143bb565b9250826148f0576148ef61489b565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000614957602f836142a8565b9150614962826148fb565b604082019050919050565b600060208201905081810360008301526149868161494a565b9050919050565b7f43616e206f6e6c792073776170206261636b206966206d6f7265207468616e2060008201527f3125206f6620746f6b656e7320737475636b206f6e20636f6e74726163740000602082015250565b60006149e9603e836142a8565b91506149f48261498d565b604082019050919050565b60006020820190508181036000830152614a18816149dc565b9050919050565b6000614a2a826143bb565b9150614a35836143bb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a6a57614a69614812565b5b828201905092915050565b7f4a75737420666f722074686520736e6970657273206174206c61756e63680000600082015250565b6000614aab601e836142a8565b9150614ab682614a75565b602082019050919050565b60006020820190508181036000830152614ada81614a9e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614b3d6039836142a8565b9150614b4882614ae1565b604082019050919050565b60006020820190508181036000830152614b6c81614b30565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614ba9601d836142a8565b9150614bb482614b73565b602082019050919050565b60006020820190508181036000830152614bd881614b9c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614c3b6035836142a8565b9150614c4682614bdf565b604082019050919050565b60006020820190508181036000830152614c6a81614c2e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614ccd6034836142a8565b9150614cd882614c71565b604082019050919050565b60006020820190508181036000830152614cfc81614cc0565b9050919050565b600081905092915050565b50565b6000614d1e600083614d03565b9150614d2982614d0e565b600082019050919050565b6000614d3f82614d11565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614da5603a836142a8565b9150614db082614d49565b604082019050919050565b60006020820190508181036000830152614dd481614d98565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e376026836142a8565b9150614e4282614ddb565b604082019050919050565b60006020820190508181036000830152614e6681614e2a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614ea3601b836142a8565b9150614eae82614e6d565b602082019050919050565b60006020820190508181036000830152614ed281614e96565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f356024836142a8565b9150614f4082614ed9565b604082019050919050565b60006020820190508181036000830152614f6481614f28565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fc76022836142a8565b9150614fd282614f6b565b604082019050919050565b60006020820190508181036000830152614ff681614fba565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006150596025836142a8565b915061506482614ffd565b604082019050919050565b600060208201905081810360008301526150888161504c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150eb6023836142a8565b91506150f68261508f565b604082019050919050565b6000602082019050818103600083015261511a816150de565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006151576016836142a8565b915061516282615121565b602082019050919050565b600060208201905081810360008301526151868161514a565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061520f6049836142a8565b915061521a8261518d565b606082019050919050565b6000602082019050818103600083015261523e81615202565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006152a16035836142a8565b91506152ac82615245565b604082019050919050565b600060208201905081810360008301526152d081615294565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061530d6013836142a8565b9150615318826152d7565b602082019050919050565b6000602082019050818103600083015261533c81615300565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061539f6036836142a8565b91506153aa82615343565b604082019050919050565b600060208201905081810360008301526153ce81615392565b9050919050565b60006153e0826143bb565b91506153eb836143bb565b9250828210156153fe576153fd614812565b5b828203905092915050565b600060608201905061541e600083018661453b565b61542b602083018561453b565b615438604083018461453b565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061549c6021836142a8565b91506154a782615440565b604082019050919050565b600060208201905081810360008301526154cb8161548f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061553f8161438f565b92915050565b60006020828403121561555b5761555a614358565b5b600061556984828501615530565b91505092915050565b6000819050919050565b600061559761559261558d84615572565b6144c1565b6143bb565b9050919050565b6155a78161557c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155e28161437d565b82525050565b60006155f483836155d9565b60208301905092915050565b6000602082019050919050565b6000615618826155ad565b61562281856155b8565b935061562d836155c9565b8060005b8381101561565e57815161564588826155e8565b975061565083615600565b925050600181019050615631565b5085935050505092915050565b600060a082019050615680600083018861453b565b61568d602083018761559e565b818103604083015261569f818661560d565b90506156ae60608301856145ef565b6156bb608083018461453b565b9695505050505050565b600060c0820190506156da60008301896145ef565b6156e7602083018861453b565b6156f4604083018761559e565b615701606083018661559e565b61570e60808301856145ef565b61571b60a083018461453b565b979650505050505050565b600081519050615735816143c5565b92915050565b60008060006060848603121561575457615753614358565b5b600061576286828701615726565b935050602061577386828701615726565b925050604061578486828701615726565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122031c0ff7cb553fbe1ddbaa5a3ad90d5925fd92cd8688378761d0cc8a193de563d64736f6c63430008090033
Deployed Bytecode Sourcemap
27844:15928:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7962:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10129:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33584:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29196:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27929:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9082:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35810:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28975:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28935;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10780:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8924:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11544:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27987:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28290:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36170:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43114:310;;;;;;;;;;;;;:::i;:::-;;28786:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28370:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9253:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22427:148;;;;;;;;;;;;;:::i;:::-;;32758:159;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33827:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28064:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28675;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34184:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32590:112;;;;;;;;;;;;;:::i;:::-;;21785:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28101:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28821:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34071:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8181:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35142:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28749:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29015:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28897:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12265:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9593:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35590:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29418:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28330:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34952:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34566:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28593:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28175:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33191:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28132:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28641:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9831:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28217:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35975:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43432:337;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32982:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28712:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22730:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28859:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28257:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7962:100;8016:13;8049:5;8042:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7962:100;:::o;10129:169::-;10212:4;10229:39;10238:12;:10;:12::i;:::-;10252:7;10261:6;10229:8;:39::i;:::-;10286:4;10279:11;;10129:169;;;;:::o;33584:231::-;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33700:4:::1;33694;33690:1;33674:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;33673:31;;;;:::i;:::-;33663:6;:41;;33655:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;33800:6;33790;:17;;;;:::i;:::-;33767:20;:40;;;;33584:231:::0;:::o;29196:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;27929:51::-;;;:::o;9082:108::-;9143:7;9170:12;;9163:19;;9082:108;:::o;35810:157::-;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35917:9:::1;;;;;;;;;;;35889:38;;35906:9;35889:38;;;;;;;;;;;;35950:9;35938;;:21;;;;;;;;;;;;;;;;;;35810:157:::0;:::o;28975:33::-;;;;:::o;28935:::-;;;;:::o;10780:355::-;10920:4;10937:36;10947:6;10955:9;10966:6;10937:9;:36::i;:::-;10984:121;10993:6;11001:12;:10;:12::i;:::-;11015:89;11053:6;11015:89;;;;;;;;;;;;;;;;;:11;:19;11027:6;11015:19;;;;;;;;;;;;;;;:33;11035:12;:10;:12::i;:::-;11015:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10984:8;:121::i;:::-;11123:4;11116:11;;10780:355;;;;;:::o;8924:93::-;8982:5;9007:2;9000:9;;8924:93;:::o;11544:218::-;11632:4;11649:83;11658:12;:10;:12::i;:::-;11672:7;11681:50;11720:10;11681:11;:25;11693:12;:10;:12::i;:::-;11681:25;;;;;;;;;;;;;;;:34;11707:7;11681:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11649:8;:83::i;:::-;11750:4;11743:11;;11544:218;;;;:::o;27987:38::-;;;:::o;28290:33::-;;;;;;;;;;;;;:::o;36170:125::-;36235:4;36259:19;:28;36279:7;36259:28;;;;;;;;;;;;;;;;;;;;;;;;;36252:35;;36170:125;;;:::o;43114:310::-;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43169:23:::1;43195:24;43213:4;43195:9;:24::i;:::-;43169:50;;43273:3;43257:13;:11;:13::i;:::-;:19;;;;:::i;:::-;43238:15;:38;;43230:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;43354:10;:8;:10::i;:::-;43380:36;43400:15;43380:36;;;;;;:::i;:::-;;;;;;;;43158:266;43114:310::o:0;28786:28::-;;;;:::o;28370:31::-;;;;;;;;;;;;;:::o;9253:127::-;9327:7;9354:9;:18;9364:7;9354:18;;;;;;;;;;;;;;;;9347:25;;9253:127;;;:::o;22427:148::-;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22534:1:::1;22497:40;;22518:6;;;;;;;;;;;22497:40;;;;;;;;;;;;22565:1;22548:6;;:19;;;;;;;;;;;;;;;;;;22427:148::o:0;32758:159::-;32810:4;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32843:5:::1;32826:14;;:22;;;;;;;;;;;;;;;;;;32882:5;32859:20;;:28;;;;;;;;;;;;;;;;;;32905:4;32898:11;;32758:159:::0;:::o;33827:144::-;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33959:4:::1;33917:31;:39;33949:6;33917:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;33827:144:::0;;:::o;28064:30::-;;;;;;;;;;;;;:::o;28675:::-;;;;:::o;34184:370::-;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34318:13:::1;34300:15;:31;;;;34360:13;34342:15;:31;;;;34396:7;34384:9;:19;;;;34465:9;;34447:15;;34429;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;34414:12;:60;;;;34509:2;34493:12;;:18;;34485:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;34184:370:::0;;;:::o;32590:112::-;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32661:4:::1;32645:13;;:20;;;;;;;;;;;;;;;;;;32690:4;32676:11;;:18;;;;;;;;;;;;;;;;;;32590:112::o:0;21785:79::-;21823:7;21850:6;;;;;;;;;;;21843:13;;21785:79;:::o;28101:24::-;;;;;;;;;;;;;:::o;28821:31::-;;;;:::o;34071:101::-;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34157:7:::1;34143:11;;:21;;;;;;;;;;;;;;;;;;34071:101:::0;:::o;8181:104::-;8237:13;8270:7;8263:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8181:104;:::o;35142:244::-;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35249:13:::1;35241:21;;:4;:21;;;;35233:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;35337:41;35366:4;35372:5;35337:28;:41::i;:::-;35142:244:::0;;:::o;28749:24::-;;;;:::o;29015:27::-;;;;:::o;28897:25::-;;;;:::o;12265:269::-;12358:4;12375:129;12384:12;:10;:12::i;:::-;12398:7;12407:96;12446:15;12407:96;;;;;;;;;;;;;;;;;:11;:25;12419:12;:10;:12::i;:::-;12407:25;;;;;;;;;;;;;;;:34;12433:7;12407:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12375:8;:129::i;:::-;12522:4;12515:11;;12265:269;;;;:::o;9593:175::-;9679:4;9696:42;9706:12;:10;:12::i;:::-;9720:9;9731:6;9696:9;:42::i;:::-;9756:4;9749:11;;9593:175;;;;:::o;35590:208::-;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35727:15:::1;;;;;;;;;;;35684:59;;35707:18;35684:59;;;;;;;;;;;;35772:18;35754:15;;:36;;;;;;;;;;;;;;;;;;35590:208:::0;:::o;29418:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;28330:33::-;;;;;;;;;;;;;:::o;34952:182::-;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35068:8:::1;35037:19;:28;35057:7;35037:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;35108:7;35092:34;;;35117:8;35092:34;;;;;;:::i;:::-;;;;;;;;34952:182:::0;;:::o;34566:378::-;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34702:13:::1;34683:16;:32;;;;34745:13;34726:16;:32;;;;34782:7;34769:10;:20;;;;34854:10;;34835:16;;34816;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;34800:13;:64;;;;34900:2;34883:13;;:19;;34875:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;34566:378:::0;;;:::o;28593:39::-;;;;;;;;;;;;;:::o;28175:35::-;;;;:::o;33191:381::-;33272:4;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33328:6:::1;33324:1;33308:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;33295:9;:39;;33287:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;33443:4;33439:1;33423:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;33410:9;:37;;33402:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;33535:9;33514:18;:30;;;;33561:4;33554:11;;33191:381:::0;;;:::o;28132:30::-;;;;;;;;;;;;;:::o;28641:27::-;;;;:::o;9831:151::-;9920:7;9947:11;:18;9959:5;9947:18;;;;;;;;;;;;;;;:27;9966:7;9947:27;;;;;;;;;;;;;;;;9940:34;;9831:151;;;;:::o;28217:33::-;;;;:::o;35975:181::-;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36094:15:::1;;;;;;;;;;;36060:50;;36083:9;36060:50;;;;;;;;;;;;36139:9;36121:15;;:27;;;;;;;;;;;;;;;;;;35975:181:::0;:::o;43432:337::-;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43507:26:::1;43536:21;43507:50;;43569:12;43587:10;:15;;43611:18;43587:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43568:67;;;43668:7;43646:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;43496:273;;43432:337:::0;:::o;32982:134::-;33042:4;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33081:5:::1;33058:20;;:28;;;;;;;;;;;;;;;;;;33104:4;33097:11;;32982:134:::0;:::o;28712:30::-;;;;:::o;22730:244::-;22007:12;:10;:12::i;:::-;21997:22;;:6;;;;;;;;;;;:22;;;21989:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22839:1:::1;22819:22;;:8;:22;;;;22811:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22929:8;22900:38;;22921:6;;;;;;;;;;;22900:38;;;;;;;;;;;;22958:8;22949:6;;:17;;;;;;;;;;;;;;;;;;22730:244:::0;:::o;28859:31::-;;;;:::o;28257:24::-;;;;:::o;16829:181::-;16887:7;16907:9;16923:1;16919;:5;;;;:::i;:::-;16907:17;;16948:1;16943;:6;;16935:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;17001:1;16994:8;;;16829:181;;;;:::o;598:98::-;651:7;678:10;671:17;;598:98;:::o;15451:380::-;15604:1;15587:19;;:5;:19;;;;15579:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15685:1;15666:21;;:7;:21;;;;15658:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15769:6;15739:11;:18;15751:5;15739:18;;;;;;;;;;;;;;;:27;15758:7;15739:27;;;;;;;;;;;;;;;:36;;;;15807:7;15791:32;;15800:5;15791:32;;;15816:6;15791:32;;;;;;:::i;:::-;;;;;;;;15451:380;;;:::o;36307:4085::-;36455:1;36439:18;;:4;:18;;;;36431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36532:1;36518:16;;:2;:16;;;;36510:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;36609:1;36599:6;:11;36596:92;;;36627:28;36643:4;36649:2;36653:1;36627:15;:28::i;:::-;36670:7;;36596:92;36711:14;;;;;;;;;;;36708:1801;;;36771:7;:5;:7::i;:::-;36763:15;;:4;:15;;;;:49;;;;;36805:7;:5;:7::i;:::-;36799:13;;:2;:13;;;;36763:49;:86;;;;;36847:1;36833:16;;:2;:16;;;;36763:86;:128;;;;;36884:6;36870:21;;:2;:21;;;;36763:128;:158;;;;;36913:8;;;;;;;;;;;36912:9;36763:158;36741:1757;;;36959:13;;;;;;;;;;;36955:148;;37004:19;:25;37024:4;37004:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;37033:19;:23;37053:2;37033:23;;;;;;;;;;;;;;;;;;;;;;;;;37004:52;36996:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;36955:148;37261:20;;;;;;;;;;;37257:423;;;37315:7;:5;:7::i;:::-;37309:13;;:2;:13;;;;:47;;;;;37340:15;37326:30;;:2;:30;;;;37309:47;:79;;;;;37374:13;37360:28;;:2;:28;;;;37309:79;37305:356;;;37466:12;37424:28;:39;37453:9;37424:39;;;;;;;;;;;;;;;;:54;37416:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;37625:12;37583:28;:39;37612:9;37583:39;;;;;;;;;;;;;;;:54;;;;37305:356;37257:423;37749:25;:31;37775:4;37749:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;37785:31;:35;37817:2;37785:35;;;;;;;;;;;;;;;;;;;;;;;;;37784:36;37749:71;37745:738;;;37867:20;;37857:6;:30;;37849:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;38006:9;;37989:13;37999:2;37989:9;:13::i;:::-;37980:6;:22;;;;:::i;:::-;:35;;37972:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37745:738;;;38133:25;:29;38159:2;38133:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;38167:31;:37;38199:4;38167:37;;;;;;;;;;;;;;;;;;;;;;;;;38166:38;38133:71;38129:354;;;38251:20;;38241:6;:30;;38233:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;38129:354;;;38430:9;;38413:13;38423:2;38413:9;:13::i;:::-;38404:6;:22;;;;:::i;:::-;:35;;38396:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38129:354;37745:738;36741:1757;36708:1801;38526:28;38557:24;38575:4;38557:9;:24::i;:::-;38526:55;;38602:12;38641:18;;38617:20;:42;;38602:57;;38690:7;:35;;;;;38714:11;;;;;;;;;;;38690:35;:61;;;;;38743:8;;;;;;;;;;;38742:9;38690:61;:110;;;;;38769:25;:31;38795:4;38769:31;;;;;;;;;;;;;;;;;;;;;;;;;38768:32;38690:110;:153;;;;;38818:19;:25;38838:4;38818:25;;;;;;;;;;;;;;;;;;;;;;;;;38817:26;38690:153;:194;;;;;38861:19;:23;38881:2;38861:23;;;;;;;;;;;;;;;;;;;;;;;;;38860:24;38690:194;38672:338;;;38922:4;38911:8;;:15;;;;;;;;;;;;;;;;;;38955:10;:8;:10::i;:::-;38993:5;38982:8;;:16;;;;;;;;;;;;;;;;;;38672:338;39030:12;39046:8;;;;;;;;;;;39045:9;39030:24;;39155:19;:25;39175:4;39155:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;39184:19;:23;39204:2;39184:23;;;;;;;;;;;;;;;;;;;;;;;;;39155:52;39152:99;;;39234:5;39224:15;;39152:99;39271:12;39375:7;39372:967;;;39426:25;:29;39452:2;39426:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;39475:1;39459:13;;:17;39426:50;39422:748;;;39503:34;39533:3;39503:25;39514:13;;39503:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;39496:41;;39604:13;;39585:16;;39578:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;39556:18;;:61;;;;;;;:::i;:::-;;;;;;;;39672:13;;39659:10;;39652:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;39636:12;;:49;;;;;;;:::i;:::-;;;;;;;;39752:13;;39733:16;;39726:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;39704:18;;:61;;;;;;;:::i;:::-;;;;;;;;39422:748;;;39826:25;:31;39852:4;39826:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;39876:1;39861:12;;:16;39826:51;39823:347;;;39902:33;39931:3;39902:24;39913:12;;39902:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;39895:40;;39998:12;;39980:15;;39973:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;39951:18;;:59;;;;;;;:::i;:::-;;;;;;;;40064:12;;40052:9;;40045:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;40029:12;;:47;;;;;;;:::i;:::-;;;;;;;;40142:12;;40124:15;;40117:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;40095:18;;:59;;;;;;;:::i;:::-;;;;;;;;39823:347;39422:748;40208:1;40201:4;:8;40198:93;;;40233:42;40249:4;40263;40270;40233:15;:42::i;:::-;40198:93;40323:4;40313:14;;;;;:::i;:::-;;;39372:967;40351:33;40367:4;40373:2;40377:6;40351:15;:33::i;:::-;36420:3972;;;;36307:4085;;;;:::o;17732:192::-;17818:7;17851:1;17846;:6;;17854:12;17838:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17878:9;17894:1;17890;:5;;;;:::i;:::-;17878:17;;17915:1;17908:8;;;17732:192;;;;;:::o;41542:1502::-;41581:23;41607:24;41625:4;41607:9;:24::i;:::-;41581:50;;41642:25;41712:12;;41691:18;;41670;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;41642:82;;41767:1;41748:15;:20;:46;;;;41793:1;41772:17;:22;41748:46;41745:60;;;41797:7;;;;41745:60;41874:23;41959:1;41939:17;41918:18;;41900:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;41874:86;;41971:26;42000:36;42020:15;42000;:19;;:36;;;;:::i;:::-;41971:65;;42057:25;42085:21;42057:49;;42119:36;42136:18;42119:16;:36::i;:::-;42177:18;42198:44;42224:17;42198:21;:25;;:44;;;;:::i;:::-;42177:65;;42263:23;42289:57;42328:17;42289:34;42304:18;;42289:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;42263:83;;42357:17;42377:51;42410:17;42377:28;42392:12;;42377:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;42357:71;;42457:23;42514:9;42496:15;42483:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;42457:66;;42573:1;42552:18;:22;;;;42606:1;42585:18;:22;;;;42633:1;42618:12;:16;;;;42656:12;42681:15;;;;;;;;;;;42673:29;;42710:15;42673:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42655:75;;;42762:9;;;;;;;;;;;42754:23;;42785:9;42754:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42741:58;;;;;42841:1;42823:15;:19;:42;;;;;42864:1;42846:15;:19;42823:42;42820:210;;;42881:46;42894:15;42911;42881:12;:46::i;:::-;42947:71;42962:18;42982:15;42999:18;;42947:71;;;;;;;;:::i;:::-;;;;;;;;42820:210;41570:1474;;;;;;;;;;41542:1502;:::o;35394:188::-;35511:5;35477:25;:31;35503:4;35477:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;35568:5;35534:40;;35562:4;35534:40;;;;;;;;;;;;35394:188;;:::o;13024:573::-;13182:1;13164:20;;:6;:20;;;;13156:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13266:1;13245:23;;:9;:23;;;;13237:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13321:47;13342:6;13350:9;13361:6;13321:20;:47::i;:::-;13401:71;13423:6;13401:71;;;;;;;;;;;;;;;;;:9;:17;13411:6;13401:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;13381:9;:17;13391:6;13381:17;;;;;;;;;;;;;;;:91;;;;13506:32;13531:6;13506:9;:20;13516:9;13506:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13483:9;:20;13493:9;13483:20;;;;;;;;;;;;;;;:55;;;;13571:9;13554:35;;13563:6;13554:35;;;13582:6;13554:35;;;;;;:::i;:::-;;;;;;;;13024:573;;;:::o;18183:471::-;18241:7;18491:1;18486;:6;18482:47;;;18516:1;18509:8;;;;18482:47;18541:9;18557:1;18553;:5;;;;:::i;:::-;18541:17;;18586:1;18581;18577;:5;;;;:::i;:::-;:10;18569:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18645:1;18638:8;;;18183:471;;;;;:::o;19130:132::-;19188:7;19215:39;19219:1;19222;19215:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;19208:46;;19130:132;;;;:::o;17293:136::-;17351:7;17378:43;17382:1;17385;17378:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;17371:50;;17293:136;;;;:::o;40400:601::-;40528:21;40566:1;40552:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40528:40;;40597:4;40579;40584:1;40579:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;40623:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40613:4;40618:1;40613:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;40658:62;40675:4;40690:15;40708:11;40658:8;:62::i;:::-;40759:15;:66;;;40840:11;40866:1;40910:4;40937;40957:15;40759:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40455:546;40400:601;:::o;41013:521::-;41161:62;41178:4;41193:15;41211:11;41161:8;:62::i;:::-;41266:15;:31;;;41305:9;41338:4;41358:11;41384:1;41427;41470:15;;;;;;;;;;;41500;41266:260;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;41013:521;;:::o;16434:125::-;;;;:::o;19758:278::-;19844:7;19876:1;19872;:5;19879:12;19864:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19903:9;19919:1;19915;:5;;;;:::i;:::-;19903:17;;20027:1;20020:8;;;19758:278;;;;;:::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:::-;3888:6;3937:2;3925:9;3916:7;3912:23;3908:32;3905:119;;;3943:79;;:::i;:::-;3905:119;4063:1;4088:53;4133:7;4124:6;4113:9;4109:22;4088:53;:::i;:::-;4078:63;;4034:117;3829:329;;;;:::o;4164:60::-;4192:3;4213:5;4206:12;;4164:60;;;:::o;4230:142::-;4280:9;4313:53;4331:34;4340:24;4358:5;4340:24;:::i;:::-;4331:34;:::i;:::-;4313:53;:::i;:::-;4300:66;;4230:142;;;:::o;4378:126::-;4428:9;4461:37;4492:5;4461:37;:::i;:::-;4448:50;;4378:126;;;:::o;4510:153::-;4587:9;4620:37;4651:5;4620:37;:::i;:::-;4607:50;;4510:153;;;:::o;4669:185::-;4783:64;4841:5;4783:64;:::i;:::-;4778:3;4771:77;4669:185;;:::o;4860:276::-;4980:4;5018:2;5007:9;5003:18;4995:26;;5031:98;5126:1;5115:9;5111:17;5102:6;5031:98;:::i;:::-;4860:276;;;;:::o;5142:118::-;5229:24;5247:5;5229:24;:::i;:::-;5224:3;5217:37;5142:118;;:::o;5266:222::-;5359:4;5397:2;5386:9;5382:18;5374:26;;5410:71;5478:1;5467:9;5463:17;5454:6;5410:71;:::i;:::-;5266:222;;;;:::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:86::-;6154:7;6194:4;6187:5;6183:16;6172:27;;6119:86;;;:::o;6211:112::-;6294:22;6310:5;6294:22;:::i;:::-;6289:3;6282:35;6211:112;;:::o;6329:214::-;6418:4;6456:2;6445:9;6441:18;6433:26;;6469:67;6533:1;6522:9;6518:17;6509:6;6469:67;:::i;:::-;6329:214;;;;:::o;6549:118::-;6636:24;6654:5;6636:24;:::i;:::-;6631:3;6624:37;6549:118;;:::o;6673:222::-;6766:4;6804:2;6793:9;6789:18;6781:26;;6817:71;6885:1;6874:9;6870:17;6861:6;6817:71;:::i;:::-;6673:222;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:468::-;7227:6;7235;7284:2;7272:9;7263:7;7259:23;7255:32;7252:119;;;7290:79;;:::i;:::-;7252:119;7410:1;7435:53;7480:7;7471:6;7460:9;7456:22;7435:53;:::i;:::-;7425:63;;7381:117;7537:2;7563:50;7605:7;7596:6;7585:9;7581:22;7563:50;:::i;:::-;7553:60;;7508:115;7162:468;;;;;:::o;7636:619::-;7713:6;7721;7729;7778:2;7766:9;7757:7;7753:23;7749:32;7746:119;;;7784:79;;:::i;:::-;7746:119;7904:1;7929:53;7974:7;7965:6;7954:9;7950:22;7929:53;:::i;:::-;7919:63;;7875:117;8031:2;8057:53;8102:7;8093:6;8082:9;8078:22;8057:53;:::i;:::-;8047:63;;8002:118;8159:2;8185:53;8230:7;8221:6;8210:9;8206:22;8185:53;:::i;:::-;8175:63;;8130:118;7636:619;;;;;:::o;8261:323::-;8317:6;8366:2;8354:9;8345:7;8341:23;8337:32;8334:119;;;8372:79;;:::i;:::-;8334:119;8492:1;8517:50;8559:7;8550:6;8539:9;8535:22;8517:50;:::i;:::-;8507:60;;8463:114;8261:323;;;;:::o;8590:474::-;8658:6;8666;8715:2;8703:9;8694:7;8690:23;8686:32;8683:119;;;8721:79;;:::i;:::-;8683:119;8841:1;8866:53;8911:7;8902:6;8891:9;8887:22;8866:53;:::i;:::-;8856:63;;8812:117;8968:2;8994:53;9039:7;9030:6;9019:9;9015:22;8994:53;:::i;:::-;8984:63;;8939:118;8590:474;;;;;:::o;9070:180::-;9118:77;9115:1;9108:88;9215:4;9212:1;9205:15;9239:4;9236:1;9229:15;9256:320;9300:6;9337:1;9331:4;9327:12;9317:22;;9384:1;9378:4;9374:12;9405:18;9395:81;;9461:4;9453:6;9449:17;9439:27;;9395:81;9523:2;9515:6;9512:14;9492:18;9489:38;9486:84;;;9542:18;;:::i;:::-;9486:84;9307:269;9256:320;;;:::o;9582:182::-;9722:34;9718:1;9710:6;9706:14;9699:58;9582:182;:::o;9770:366::-;9912:3;9933:67;9997:2;9992:3;9933:67;:::i;:::-;9926:74;;10009:93;10098:3;10009:93;:::i;:::-;10127:2;10122:3;10118:12;10111:19;;9770:366;;;:::o;10142:419::-;10308:4;10346:2;10335:9;10331:18;10323:26;;10395:9;10389:4;10385:20;10381:1;10370:9;10366:17;10359:47;10423:131;10549:4;10423:131;:::i;:::-;10415:139;;10142:419;;;:::o;10567:180::-;10615:77;10612:1;10605:88;10712:4;10709:1;10702:15;10736:4;10733:1;10726:15;10753:348;10793:7;10816:20;10834:1;10816:20;:::i;:::-;10811:25;;10850:20;10868:1;10850:20;:::i;:::-;10845:25;;11038:1;10970:66;10966:74;10963:1;10960:81;10955:1;10948:9;10941:17;10937:105;10934:131;;;11045:18;;:::i;:::-;10934:131;11093:1;11090;11086:9;11075:20;;10753:348;;;;:::o;11107:180::-;11155:77;11152:1;11145:88;11252:4;11249:1;11242:15;11276:4;11273:1;11266:15;11293:185;11333:1;11350:20;11368:1;11350:20;:::i;:::-;11345:25;;11384:20;11402:1;11384:20;:::i;:::-;11379:25;;11423:1;11413:35;;11428:18;;:::i;:::-;11413:35;11470:1;11467;11463:9;11458:14;;11293:185;;;;:::o;11484:234::-;11624:34;11620:1;11612:6;11608:14;11601:58;11693:17;11688:2;11680:6;11676:15;11669:42;11484:234;:::o;11724:366::-;11866:3;11887:67;11951:2;11946:3;11887:67;:::i;:::-;11880:74;;11963:93;12052:3;11963:93;:::i;:::-;12081:2;12076:3;12072:12;12065:19;;11724:366;;;:::o;12096:419::-;12262:4;12300:2;12289:9;12285:18;12277:26;;12349:9;12343:4;12339:20;12335:1;12324:9;12320:17;12313:47;12377:131;12503:4;12377:131;:::i;:::-;12369:139;;12096:419;;;:::o;12521:249::-;12661:34;12657:1;12649:6;12645:14;12638:58;12730:32;12725:2;12717:6;12713:15;12706:57;12521:249;:::o;12776:366::-;12918:3;12939:67;13003:2;12998:3;12939:67;:::i;:::-;12932:74;;13015:93;13104:3;13015:93;:::i;:::-;13133:2;13128:3;13124:12;13117:19;;12776:366;;;:::o;13148:419::-;13314:4;13352:2;13341:9;13337:18;13329:26;;13401:9;13395:4;13391:20;13387:1;13376:9;13372:17;13365:47;13429:131;13555:4;13429:131;:::i;:::-;13421:139;;13148:419;;;:::o;13573:305::-;13613:3;13632:20;13650:1;13632:20;:::i;:::-;13627:25;;13666:20;13684:1;13666:20;:::i;:::-;13661:25;;13820:1;13752:66;13748:74;13745:1;13742:81;13739:107;;;13826:18;;:::i;:::-;13739:107;13870:1;13867;13863:9;13856:16;;13573:305;;;;:::o;13884:180::-;14024:32;14020:1;14012:6;14008:14;14001:56;13884:180;:::o;14070:366::-;14212:3;14233:67;14297:2;14292:3;14233:67;:::i;:::-;14226:74;;14309:93;14398:3;14309:93;:::i;:::-;14427:2;14422:3;14418:12;14411:19;;14070:366;;;:::o;14442:419::-;14608:4;14646:2;14635:9;14631:18;14623:26;;14695:9;14689:4;14685:20;14681:1;14670:9;14666:17;14659:47;14723:131;14849:4;14723:131;:::i;:::-;14715:139;;14442:419;;;:::o;14867:244::-;15007:34;15003:1;14995:6;14991:14;14984:58;15076:27;15071:2;15063:6;15059:15;15052:52;14867:244;:::o;15117:366::-;15259:3;15280:67;15344:2;15339:3;15280:67;:::i;:::-;15273:74;;15356:93;15445:3;15356:93;:::i;:::-;15474:2;15469:3;15465:12;15458:19;;15117:366;;;:::o;15489:419::-;15655:4;15693:2;15682:9;15678:18;15670:26;;15742:9;15736:4;15732:20;15728:1;15717:9;15713:17;15706:47;15770:131;15896:4;15770:131;:::i;:::-;15762:139;;15489:419;;;:::o;15914:179::-;16054:31;16050:1;16042:6;16038:14;16031:55;15914:179;:::o;16099:366::-;16241:3;16262:67;16326:2;16321:3;16262:67;:::i;:::-;16255:74;;16338:93;16427:3;16338:93;:::i;:::-;16456:2;16451:3;16447:12;16440:19;;16099:366;;;:::o;16471:419::-;16637:4;16675:2;16664:9;16660:18;16652:26;;16724:9;16718:4;16714:20;16710:1;16699:9;16695:17;16688:47;16752:131;16878:4;16752:131;:::i;:::-;16744:139;;16471:419;;;:::o;16896:240::-;17036:34;17032:1;17024:6;17020:14;17013:58;17105:23;17100:2;17092:6;17088:15;17081:48;16896:240;:::o;17142:366::-;17284:3;17305:67;17369:2;17364:3;17305:67;:::i;:::-;17298:74;;17381:93;17470:3;17381:93;:::i;:::-;17499:2;17494:3;17490:12;17483:19;;17142:366;;;:::o;17514:419::-;17680:4;17718:2;17707:9;17703:18;17695:26;;17767:9;17761:4;17757:20;17753:1;17742:9;17738:17;17731:47;17795:131;17921:4;17795:131;:::i;:::-;17787:139;;17514:419;;;:::o;17939:239::-;18079:34;18075:1;18067:6;18063:14;18056:58;18148:22;18143:2;18135:6;18131:15;18124:47;17939:239;:::o;18184:366::-;18326:3;18347:67;18411:2;18406:3;18347:67;:::i;:::-;18340:74;;18423:93;18512:3;18423:93;:::i;:::-;18541:2;18536:3;18532:12;18525:19;;18184:366;;;:::o;18556:419::-;18722:4;18760:2;18749:9;18745:18;18737:26;;18809:9;18803:4;18799:20;18795:1;18784:9;18780:17;18773:47;18837:131;18963:4;18837:131;:::i;:::-;18829:139;;18556:419;;;:::o;18981:147::-;19082:11;19119:3;19104:18;;18981:147;;;;:::o;19134:114::-;;:::o;19254:398::-;19413:3;19434:83;19515:1;19510:3;19434:83;:::i;:::-;19427:90;;19526:93;19615:3;19526:93;:::i;:::-;19644:1;19639:3;19635:11;19628:18;;19254:398;;;:::o;19658:379::-;19842:3;19864:147;20007:3;19864:147;:::i;:::-;19857:154;;20028:3;20021:10;;19658:379;;;:::o;20043:245::-;20183:34;20179:1;20171:6;20167:14;20160:58;20252:28;20247:2;20239:6;20235:15;20228:53;20043:245;:::o;20294:366::-;20436:3;20457:67;20521:2;20516:3;20457:67;:::i;:::-;20450:74;;20533:93;20622:3;20533:93;:::i;:::-;20651:2;20646:3;20642:12;20635:19;;20294:366;;;:::o;20666:419::-;20832:4;20870:2;20859:9;20855:18;20847:26;;20919:9;20913:4;20909:20;20905:1;20894:9;20890:17;20883:47;20947:131;21073:4;20947:131;:::i;:::-;20939:139;;20666:419;;;:::o;21091:225::-;21231:34;21227:1;21219:6;21215:14;21208:58;21300:8;21295:2;21287:6;21283:15;21276:33;21091:225;:::o;21322:366::-;21464:3;21485:67;21549:2;21544:3;21485:67;:::i;:::-;21478:74;;21561:93;21650:3;21561:93;:::i;:::-;21679:2;21674:3;21670:12;21663:19;;21322:366;;;:::o;21694:419::-;21860:4;21898:2;21887:9;21883:18;21875:26;;21947:9;21941:4;21937:20;21933:1;21922:9;21918:17;21911:47;21975:131;22101:4;21975:131;:::i;:::-;21967:139;;21694:419;;;:::o;22119:177::-;22259:29;22255:1;22247:6;22243:14;22236:53;22119:177;:::o;22302:366::-;22444:3;22465:67;22529:2;22524:3;22465:67;:::i;:::-;22458:74;;22541:93;22630:3;22541:93;:::i;:::-;22659:2;22654:3;22650:12;22643:19;;22302:366;;;:::o;22674:419::-;22840:4;22878:2;22867:9;22863:18;22855:26;;22927:9;22921:4;22917:20;22913:1;22902:9;22898:17;22891:47;22955:131;23081:4;22955:131;:::i;:::-;22947:139;;22674:419;;;:::o;23099:223::-;23239:34;23235:1;23227:6;23223:14;23216:58;23308:6;23303:2;23295:6;23291:15;23284:31;23099:223;:::o;23328:366::-;23470:3;23491:67;23555:2;23550:3;23491:67;:::i;:::-;23484:74;;23567:93;23656:3;23567:93;:::i;:::-;23685:2;23680:3;23676:12;23669:19;;23328:366;;;:::o;23700:419::-;23866:4;23904:2;23893:9;23889:18;23881:26;;23953:9;23947:4;23943:20;23939:1;23928:9;23924:17;23917:47;23981:131;24107:4;23981:131;:::i;:::-;23973:139;;23700:419;;;:::o;24125:221::-;24265:34;24261:1;24253:6;24249:14;24242:58;24334:4;24329:2;24321:6;24317:15;24310:29;24125:221;:::o;24352:366::-;24494:3;24515:67;24579:2;24574:3;24515:67;:::i;:::-;24508:74;;24591:93;24680:3;24591:93;:::i;:::-;24709:2;24704:3;24700:12;24693:19;;24352:366;;;:::o;24724:419::-;24890:4;24928:2;24917:9;24913:18;24905:26;;24977:9;24971:4;24967:20;24963:1;24952:9;24948:17;24941:47;25005:131;25131:4;25005:131;:::i;:::-;24997:139;;24724:419;;;:::o;25149:224::-;25289:34;25285:1;25277:6;25273:14;25266:58;25358:7;25353:2;25345:6;25341:15;25334:32;25149:224;:::o;25379:366::-;25521:3;25542:67;25606:2;25601:3;25542:67;:::i;:::-;25535:74;;25618:93;25707:3;25618:93;:::i;:::-;25736:2;25731:3;25727:12;25720:19;;25379:366;;;:::o;25751:419::-;25917:4;25955:2;25944:9;25940:18;25932:26;;26004:9;25998:4;25994:20;25990:1;25979:9;25975:17;25968:47;26032:131;26158:4;26032:131;:::i;:::-;26024:139;;25751:419;;;:::o;26176:222::-;26316:34;26312:1;26304:6;26300:14;26293:58;26385:5;26380:2;26372:6;26368:15;26361:30;26176:222;:::o;26404:366::-;26546:3;26567:67;26631:2;26626:3;26567:67;:::i;:::-;26560:74;;26643:93;26732:3;26643:93;:::i;:::-;26761:2;26756:3;26752:12;26745:19;;26404:366;;;:::o;26776:419::-;26942:4;26980:2;26969:9;26965:18;26957:26;;27029:9;27023:4;27019:20;27015:1;27004:9;27000:17;26993:47;27057:131;27183:4;27057:131;:::i;:::-;27049:139;;26776:419;;;:::o;27201:172::-;27341:24;27337:1;27329:6;27325:14;27318:48;27201:172;:::o;27379:366::-;27521:3;27542:67;27606:2;27601:3;27542:67;:::i;:::-;27535:74;;27618:93;27707:3;27618:93;:::i;:::-;27736:2;27731:3;27727:12;27720:19;;27379:366;;;:::o;27751:419::-;27917:4;27955:2;27944:9;27940:18;27932:26;;28004:9;27998:4;27994:20;27990:1;27979:9;27975:17;27968:47;28032:131;28158:4;28032:131;:::i;:::-;28024:139;;27751:419;;;:::o;28176:297::-;28316:34;28312:1;28304:6;28300:14;28293:58;28385:34;28380:2;28372:6;28368:15;28361:59;28454:11;28449:2;28441:6;28437:15;28430:36;28176:297;:::o;28479:366::-;28621:3;28642:67;28706:2;28701:3;28642:67;:::i;:::-;28635:74;;28718:93;28807:3;28718:93;:::i;:::-;28836:2;28831:3;28827:12;28820:19;;28479:366;;;:::o;28851:419::-;29017:4;29055:2;29044:9;29040:18;29032:26;;29104:9;29098:4;29094:20;29090:1;29079:9;29075:17;29068:47;29132:131;29258:4;29132:131;:::i;:::-;29124:139;;28851:419;;;:::o;29276:240::-;29416:34;29412:1;29404:6;29400:14;29393:58;29485:23;29480:2;29472:6;29468:15;29461:48;29276:240;:::o;29522:366::-;29664:3;29685:67;29749:2;29744:3;29685:67;:::i;:::-;29678:74;;29761:93;29850:3;29761:93;:::i;:::-;29879:2;29874:3;29870:12;29863:19;;29522:366;;;:::o;29894:419::-;30060:4;30098:2;30087:9;30083:18;30075:26;;30147:9;30141:4;30137:20;30133:1;30122:9;30118:17;30111:47;30175:131;30301:4;30175:131;:::i;:::-;30167:139;;29894:419;;;:::o;30319:169::-;30459:21;30455:1;30447:6;30443:14;30436:45;30319:169;:::o;30494:366::-;30636:3;30657:67;30721:2;30716:3;30657:67;:::i;:::-;30650:74;;30733:93;30822:3;30733:93;:::i;:::-;30851:2;30846:3;30842:12;30835:19;;30494:366;;;:::o;30866:419::-;31032:4;31070:2;31059:9;31055:18;31047:26;;31119:9;31113:4;31109:20;31105:1;31094:9;31090:17;31083:47;31147:131;31273:4;31147:131;:::i;:::-;31139:139;;30866:419;;;:::o;31291:241::-;31431:34;31427:1;31419:6;31415:14;31408:58;31500:24;31495:2;31487:6;31483:15;31476:49;31291:241;:::o;31538:366::-;31680:3;31701:67;31765:2;31760:3;31701:67;:::i;:::-;31694:74;;31777:93;31866:3;31777:93;:::i;:::-;31895:2;31890:3;31886:12;31879:19;;31538:366;;;:::o;31910:419::-;32076:4;32114:2;32103:9;32099:18;32091:26;;32163:9;32157:4;32153:20;32149:1;32138:9;32134:17;32127:47;32191:131;32317:4;32191:131;:::i;:::-;32183:139;;31910:419;;;:::o;32335:191::-;32375:4;32395:20;32413:1;32395:20;:::i;:::-;32390:25;;32429:20;32447:1;32429:20;:::i;:::-;32424:25;;32468:1;32465;32462:8;32459:34;;;32473:18;;:::i;:::-;32459:34;32518:1;32515;32511:9;32503:17;;32335:191;;;;:::o;32532:442::-;32681:4;32719:2;32708:9;32704:18;32696:26;;32732:71;32800:1;32789:9;32785:17;32776:6;32732:71;:::i;:::-;32813:72;32881:2;32870:9;32866:18;32857:6;32813:72;:::i;:::-;32895;32963:2;32952:9;32948:18;32939:6;32895:72;:::i;:::-;32532:442;;;;;;:::o;32980:220::-;33120:34;33116:1;33108:6;33104:14;33097:58;33189:3;33184:2;33176:6;33172:15;33165:28;32980:220;:::o;33206:366::-;33348:3;33369:67;33433:2;33428:3;33369:67;:::i;:::-;33362:74;;33445:93;33534:3;33445:93;:::i;:::-;33563:2;33558:3;33554:12;33547:19;;33206:366;;;:::o;33578:419::-;33744:4;33782:2;33771:9;33767:18;33759:26;;33831:9;33825:4;33821:20;33817:1;33806:9;33802:17;33795:47;33859:131;33985:4;33859:131;:::i;:::-;33851:139;;33578:419;;;:::o;34003:180::-;34051:77;34048:1;34041:88;34148:4;34145:1;34138:15;34172:4;34169:1;34162:15;34189:180;34237:77;34234:1;34227:88;34334:4;34331:1;34324:15;34358:4;34355:1;34348:15;34375:143;34432:5;34463:6;34457:13;34448:22;;34479:33;34506:5;34479:33;:::i;:::-;34375:143;;;;:::o;34524:351::-;34594:6;34643:2;34631:9;34622:7;34618:23;34614:32;34611:119;;;34649:79;;:::i;:::-;34611:119;34769:1;34794:64;34850:7;34841:6;34830:9;34826:22;34794:64;:::i;:::-;34784:74;;34740:128;34524:351;;;;:::o;34881:85::-;34926:7;34955:5;34944:16;;34881:85;;;:::o;34972:158::-;35030:9;35063:61;35081:42;35090:32;35116:5;35090:32;:::i;:::-;35081:42;:::i;:::-;35063:61;:::i;:::-;35050:74;;34972:158;;;:::o;35136:147::-;35231:45;35270:5;35231:45;:::i;:::-;35226:3;35219:58;35136:147;;:::o;35289:114::-;35356:6;35390:5;35384:12;35374:22;;35289:114;;;:::o;35409:184::-;35508:11;35542:6;35537:3;35530:19;35582:4;35577:3;35573:14;35558:29;;35409:184;;;;:::o;35599:132::-;35666:4;35689:3;35681:11;;35719:4;35714:3;35710:14;35702:22;;35599:132;;;:::o;35737:108::-;35814:24;35832:5;35814:24;:::i;:::-;35809:3;35802:37;35737:108;;:::o;35851:179::-;35920:10;35941:46;35983:3;35975:6;35941:46;:::i;:::-;36019:4;36014:3;36010:14;35996:28;;35851:179;;;;:::o;36036:113::-;36106:4;36138;36133:3;36129:14;36121:22;;36036:113;;;:::o;36185:732::-;36304:3;36333:54;36381:5;36333:54;:::i;:::-;36403:86;36482:6;36477:3;36403:86;:::i;:::-;36396:93;;36513:56;36563:5;36513:56;:::i;:::-;36592:7;36623:1;36608:284;36633:6;36630:1;36627:13;36608:284;;;36709:6;36703:13;36736:63;36795:3;36780:13;36736:63;:::i;:::-;36729:70;;36822:60;36875:6;36822:60;:::i;:::-;36812:70;;36668:224;36655:1;36652;36648:9;36643:14;;36608:284;;;36612:14;36908:3;36901:10;;36309:608;;;36185:732;;;;:::o;36923:831::-;37186:4;37224:3;37213:9;37209:19;37201:27;;37238:71;37306:1;37295:9;37291:17;37282:6;37238:71;:::i;:::-;37319:80;37395:2;37384:9;37380:18;37371:6;37319:80;:::i;:::-;37446:9;37440:4;37436:20;37431:2;37420:9;37416:18;37409:48;37474:108;37577:4;37568:6;37474:108;:::i;:::-;37466:116;;37592:72;37660:2;37649:9;37645:18;37636:6;37592:72;:::i;:::-;37674:73;37742:3;37731:9;37727:19;37718:6;37674:73;:::i;:::-;36923:831;;;;;;;;:::o;37760:807::-;38009:4;38047:3;38036:9;38032:19;38024:27;;38061:71;38129:1;38118:9;38114:17;38105:6;38061:71;:::i;:::-;38142:72;38210:2;38199:9;38195:18;38186:6;38142:72;:::i;:::-;38224:80;38300:2;38289:9;38285:18;38276:6;38224:80;:::i;:::-;38314;38390:2;38379:9;38375:18;38366:6;38314:80;:::i;:::-;38404:73;38472:3;38461:9;38457:19;38448:6;38404:73;:::i;:::-;38487;38555:3;38544:9;38540:19;38531:6;38487:73;:::i;:::-;37760:807;;;;;;;;;:::o;38573:143::-;38630:5;38661:6;38655:13;38646:22;;38677:33;38704:5;38677:33;:::i;:::-;38573:143;;;;:::o;38722:663::-;38810:6;38818;38826;38875:2;38863:9;38854:7;38850:23;38846:32;38843:119;;;38881:79;;:::i;:::-;38843:119;39001:1;39026:64;39082:7;39073:6;39062:9;39058:22;39026:64;:::i;:::-;39016:74;;38972:128;39139:2;39165:64;39221:7;39212:6;39201:9;39197:22;39165:64;:::i;:::-;39155:74;;39110:129;39278:2;39304:64;39360:7;39351:6;39340:9;39336:22;39304:64;:::i;:::-;39294:74;;39249:129;38722:663;;;;;:::o
Swarm Source
ipfs://31c0ff7cb553fbe1ddbaa5a3ad90d5925fd92cd8688378761d0cc8a193de563d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,409.64 | 0.000000000000000076 | <$0.000001 |
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.